summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Michael <cp.michael@samsung.com>2017-01-18 09:03:20 -0500
committerChris Michael <cp.michael@samsung.com>2017-01-18 09:03:20 -0500
commit307072fc43de92c6ead13c12df58659d5f4ea963 (patch)
tree782e4ff9f4e3cdb3a895159ab4be174127521849
parent3f2ea651123c16693240999657e337122a4f7c73 (diff)
remove old ecore_drm1 code from wl_drm module
Signed-off-by: Chris Michael <cp.michael@samsung.com>
-rw-r--r--configure.ac2
-rw-r--r--src/modules/wl_drm/e_mod_main.c448
2 files changed, 3 insertions, 447 deletions
diff --git a/configure.ac b/configure.ac
index 43bb05677..88c01899b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -794,7 +794,7 @@ define([CHECK_MODULE_WL_DRM],
794 AC_DEFINE_UNQUOTED([HAVE_DRM2],[1],[enable ecore-drm2 support]) 794 AC_DEFINE_UNQUOTED([HAVE_DRM2],[1],[enable ecore-drm2 support])
795 ], [WL_DRM=false]) 795 ], [WL_DRM=false])
796 else 796 else
797 AC_E_CHECK_PKG(WL_DRM, [ ecore-drm >= $efl_version ], [WL_DRM=true], [WL_DRM=false]) 797 WL_DRM=false
798 fi 798 fi
799 else 799 else
800 WL_DRM=false 800 WL_DRM=false
diff --git a/src/modules/wl_drm/e_mod_main.c b/src/modules/wl_drm/e_mod_main.c
index b9cea2d90..6d9cb6263 100644
--- a/src/modules/wl_drm/e_mod_main.c
+++ b/src/modules/wl_drm/e_mod_main.c
@@ -1,13 +1,9 @@
1#include "e.h" 1#include "e.h"
2#include <drm_mode.h> 2#include <drm_mode.h>
3 3
4#ifdef HAVE_DRM2 4#include <Ecore_Drm2.h>
5# include <Ecore_Drm2.h> 5#include <Elput.h>
6# include <Elput.h>
7static Ecore_Event_Handler *seat_handler; 6static Ecore_Event_Handler *seat_handler;
8#else
9# include <Ecore_Drm.h>
10#endif
11 7
12E_API E_Module_Api e_modapi = { E_MODULE_API_VERSION, "Wl_Drm" }; 8E_API E_Module_Api e_modapi = { E_MODULE_API_VERSION, "Wl_Drm" };
13 9
@@ -48,11 +44,7 @@ static E_Randr2_Connector rtype[] =
48static Eina_Bool 44static Eina_Bool
49_e_mod_drm_cb_activate(void *data EINA_UNUSED, int type EINA_UNUSED, void *event) 45_e_mod_drm_cb_activate(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
50{ 46{
51# ifdef HAVE_DRM2
52 Ecore_Drm2_Event_Activate *ev; 47 Ecore_Drm2_Event_Activate *ev;
53# else
54 Ecore_Drm_Event_Activate *ev;
55# endif
56 48
57 if (!(ev = event)) goto end; 49 if (!(ev = event)) goto end;
58 50
@@ -99,11 +91,7 @@ _e_mod_drm_cb_output(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
99 E_Randr2_Screen *screen; 91 E_Randr2_Screen *screen;
100 Eina_Bool connected = EINA_FALSE; 92 Eina_Bool connected = EINA_FALSE;
101 int subpixel = 0; 93 int subpixel = 0;
102#ifdef HAVE_DRM2
103 Ecore_Drm2_Event_Output_Changed *e; 94 Ecore_Drm2_Event_Output_Changed *e;
104#else
105 Ecore_Drm_Event_Output *e;
106#endif
107 95
108 if (!(e = event)) goto end; 96 if (!(e = event)) goto end;
109 97
@@ -114,13 +102,8 @@ _e_mod_drm_cb_output(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
114 if ((!strcmp(screen->info.name, e->name)) && 102 if ((!strcmp(screen->info.name, e->name)) &&
115 (!strcmp(screen->info.screen, e->model))) 103 (!strcmp(screen->info.screen, e->model)))
116 { 104 {
117#ifdef HAVE_DRM2
118 connected = e->enabled; 105 connected = e->enabled;
119 subpixel = e->subpixel; 106 subpixel = e->subpixel;
120#else
121 connected = e->plug;
122 subpixel = e->subpixel_order;
123#endif
124 107
125 if (connected) 108 if (connected)
126 { 109 {
@@ -147,48 +130,6 @@ end:
147 return ECORE_CALLBACK_PASS_ON; 130 return ECORE_CALLBACK_PASS_ON;
148} 131}
149 132
150#ifndef HAVE_DRM2
151static Ecore_Drm_Output_Mode *
152_e_mod_drm_mode_screen_find(E_Randr2_Screen *s, Ecore_Drm_Output *output)
153{
154 Ecore_Drm_Output_Mode *mode, *m = NULL;
155 const Eina_List *l;
156 int diff, distance = 0x7fffffff;
157
158 EINA_LIST_FOREACH(ecore_drm_output_modes_get(output), l, mode)
159 {
160 diff = (100 * abs(s->config.mode.w - mode->width)) +
161 (100 * abs(s->config.mode.h - mode->height)) +
162 fabs((100 * s->config.mode.refresh) - (100 * mode->refresh));
163 if (diff < distance)
164 {
165 m = mode;
166 distance = diff;
167 }
168 }
169
170 return m;
171}
172
173static Eina_Bool
174_e_mod_drm_output_exists(Ecore_Drm_Output *output, unsigned int crtc)
175{
176 /* find out if this output can go into the 'possibles' */
177 return ecore_drm_output_possible_crtc_get(output, crtc);
178}
179
180static char *
181_e_mod_drm_output_screen_get(Ecore_Drm_Output *output)
182{
183 const char *model;
184
185 model = ecore_drm_output_model_get(output);
186 if (!model) return NULL;
187
188 return strdup(model);
189}
190#endif
191
192static E_Randr2_Screen * 133static E_Randr2_Screen *
193_info_unconf_primary_find(E_Randr2 *r) 134_info_unconf_primary_find(E_Randr2 *r)
194{ 135{
@@ -355,7 +296,6 @@ _e_mod_drm_relative_fixup(E_Randr2 *r)
355 } 296 }
356} 297}
357 298
358#ifdef HAVE_DRM2
359static E_Randr2 * 299static E_Randr2 *
360_drm2_randr_create(void) 300_drm2_randr_create(void)
361{ 301{
@@ -807,355 +747,6 @@ _drm2_read_pixels(E_Comp_Wl_Output *output, void *pixels)
807 } 747 }
808 748
809} 749}
810#else
811static E_Randr2 *
812_drm_randr_create(void)
813{
814 Ecore_Drm_Device *dev;
815 Ecore_Drm_Output *output;
816 const Eina_List *l, *ll;
817 E_Randr2 *r = NULL;
818 unsigned int type;
819
820 printf("DRM RRR: ................. info get!\n");
821
822 r = E_NEW(E_Randr2, 1);
823 if (!r) return NULL;
824
825 EINA_LIST_FOREACH(ecore_drm_devices_get(), l, dev)
826 {
827 EINA_LIST_FOREACH(dev->outputs, ll, output)
828 {
829 E_Randr2_Screen *s;
830 E_Config_Randr2_Screen *cs;
831 const Eina_List *m;
832 Ecore_Drm_Output_Mode *omode;
833 // size_t n, e = 0;
834 unsigned int j;
835 int priority;
836 Eina_Bool ok = EINA_FALSE;
837 Eina_Bool possible = EINA_FALSE;
838
839 s = E_NEW(E_Randr2_Screen, 1);
840 if (!s) continue;
841
842 s->info.name = ecore_drm_output_name_get(output);
843 printf("DRM RRR: .... out %s\n", s->info.name);
844
845 s->info.connected = ecore_drm_output_connected_get(output);
846 printf("DRM RRR: ...... connected %i\n", s->info.connected);
847
848 s->info.screen = _e_mod_drm_output_screen_get(output);
849
850 s->info.edid = ecore_drm_output_edid_get(output);
851 if (s->info.edid)
852 s->id = malloc(strlen(s->info.name) + 1 + strlen(s->info.edid) + 1);
853 else
854 s->id = malloc(strlen(s->info.name) + 1 + 1);
855 if (!s->id)
856 {
857 free(s->info.screen);
858 free(s->info.edid);
859 free(s);
860 continue;
861 }
862 strcpy(s->id, s->info.name);
863 strcat(s->id, "/");
864 if (s->info.edid) strcat(s->id, s->info.edid);
865
866 printf("DRM RRR: Created Screen: %s\n", s->id);
867
868 type = MIN(ecore_drm_output_connector_type_get(output),
869 EINA_C_ARRAY_LENGTH(conn_types) - 1);
870 s->info.connector = rtype[type];
871 s->info.is_lid = ((type == DRM_MODE_CONNECTOR_LVDS) ||
872 (type == DRM_MODE_CONNECTOR_eDP));
873 s->info.lid_closed = (s->info.is_lid && e_acpi_lid_is_closed());
874 printf("DRM RRR: ...... lid_closed = %i (%i && %i)\n",
875 s->info.lid_closed, s->info.is_lid, e_acpi_lid_is_closed());
876
877 s->info.backlight = ecore_drm_output_backlight_get(output);
878
879 ecore_drm_output_physical_size_get(output, &s->info.size.w,
880 &s->info.size.h);
881
882 EINA_LIST_FOREACH(ecore_drm_output_modes_get(output), m, omode)
883 {
884 E_Randr2_Mode *rmode;
885
886 rmode = malloc(sizeof(E_Randr2_Mode));
887 if (!rmode) continue;
888
889 rmode->w = omode->width;
890 rmode->h = omode->height;
891 rmode->refresh = omode->refresh;
892 rmode->preferred = (omode->flags & DRM_MODE_TYPE_PREFERRED);
893
894 s->info.modes = eina_list_append(s->info.modes, rmode);
895 }
896
897 cs = NULL;
898 priority = 0;
899 if (e_randr2_cfg)
900 cs = e_randr2_config_screen_find(s, e_randr2_cfg);
901 if (cs)
902 priority = cs->priority;
903 else if (ecore_drm_output_primary_get(dev) == output)
904 priority = 100;
905 s->config.priority = priority;
906
907 for (j = 0; j < dev->crtc_count; j++)
908 {
909 if (dev->crtcs[j] == ecore_drm_output_crtc_id_get(output))
910 {
911 ok = EINA_TRUE;
912 break;
913 }
914 }
915
916 if (!ok)
917 {
918 /* get possible crtcs, compare to output_crtc_id_get */
919 for (j = 0; j < dev->crtc_count; j++)
920 {
921 if (_e_mod_drm_output_exists(output, dev->crtcs[j]))
922 {
923 ok = EINA_TRUE;
924 possible = EINA_TRUE;
925 break;
926 }
927 }
928 }
929
930 if (ok)
931 {
932 if (!possible)
933 {
934 unsigned int refresh;
935
936 ecore_drm_output_position_get(output, &s->config.geom.x,
937 &s->config.geom.y);
938 ecore_drm_output_crtc_size_get(output, &s->config.geom.w,
939 &s->config.geom.h);
940
941 ecore_drm_output_current_resolution_get(output,
942 &s->config.mode.w,
943 &s->config.mode.h,
944 &refresh);
945 s->config.mode.refresh = refresh;
946 s->config.enabled =
947 ((s->config.mode.w != 0) && (s->config.mode.h != 0));
948
949 printf("DRM RRR: '%s' %i %i %ix%i\n", s->info.name,
950 s->config.geom.x, s->config.geom.y,
951 s->config.geom.w, s->config.geom.h);
952 }
953
954#if (EFL_VERSION_MAJOR > 1) || (EFL_VERSION_MINOR >= 18)
955 unsigned int rotations;
956
957 rotations =
958 ecore_drm_output_supported_rotations_get(output,
959 ECORE_DRM_PLANE_TYPE_PRIMARY);
960
961 if (rotations & ECORE_DRM_PLANE_ROTATION_NORMAL)
962 s->info.can_rot_0 = EINA_TRUE;
963 if (rotations & ECORE_DRM_PLANE_ROTATION_90)
964 s->info.can_rot_90 = EINA_TRUE;
965 if (rotations & ECORE_DRM_PLANE_ROTATION_180)
966 s->info.can_rot_180 = EINA_TRUE;
967 if (rotations & ECORE_DRM_PLANE_ROTATION_270)
968 s->info.can_rot_270 = EINA_TRUE;
969#endif
970
971 if (cs)
972 {
973 if (cs->profile)
974 s->config.profile = strdup(cs->profile);
975 else
976 s->config.profile = NULL;
977 s->config.scale_multiplier = cs->scale_multiplier;
978 }
979 }
980
981 r->screens = eina_list_append(r->screens, s);
982 }
983 }
984
985 _e_mod_drm_relative_fixup(r);
986
987 return r;
988}
989
990static void
991_drm_randr_apply(void)
992{
993 Ecore_Drm_Device *dev;
994 Ecore_Drm_Output *out;
995 E_Randr2_Screen *s;
996 const Eina_List *l, *ll;
997 int nw, nh, pw, ph, ww, hh;
998 int minw, minh, maxw, maxh;
999 int top_priority = 0;
1000
1001 /* TODO: what the actual fuck */
1002
1003 nw = e_randr2->w;
1004 nh = e_randr2->h;
1005 EINA_LIST_FOREACH(ecore_drm_devices_get(), l, dev)
1006 {
1007 ecore_drm_screen_size_range_get(dev, &minw, &minh, &maxw, &maxh);
1008 printf("DRM RRR: size range: %ix%i -> %ix%i\n", minw, minh, maxw, maxh);
1009
1010 ecore_drm_outputs_geometry_get(dev, NULL, NULL, &pw, &ph);
1011 if (nw > maxw) nw = maxw;
1012 if (nh > maxh) nh = maxh;
1013 if (nw < minw) nw = minw;
1014 if (nh < minh) nh = minh;
1015 ww = nw;
1016 hh = nh;
1017 if (nw < pw) ww = pw;
1018 if (nh < ph) hh = ph;
1019
1020 printf("DRM RRR: set vsize: %ix%i\n", ww, hh);
1021
1022 EINA_LIST_FOREACH(e_randr2->screens, ll, s)
1023 {
1024 Ecore_Drm_Output_Mode *mode = NULL;
1025
1026 printf("DRM RRR: find output for '%s'\n", s->info.name);
1027
1028 out = ecore_drm_device_output_name_find(dev, s->info.name);
1029 if (!out) continue;
1030
1031 if (s->config.configured)
1032 {
1033 printf("\tDRM RRR: configured by E\n");
1034
1035 if (s->config.enabled)
1036 {
1037 printf("\tDRM RRR: Enabled\n");
1038 mode = _e_mod_drm_mode_screen_find(s, out);
1039 }
1040 else
1041 {
1042 printf("\tDRM RRR: Disabled\n");
1043 }
1044
1045 if (s->config.priority > top_priority)
1046 top_priority = s->config.priority;
1047
1048 printf("\tDRM RRR: Priority: %d\n", s->config.priority);
1049
1050 printf("\tDRM RRR: Geom: %d %d %d %d\n",
1051 s->config.geom.x, s->config.geom.y,
1052 s->config.geom.w, s->config.geom.h);
1053
1054 if (mode)
1055 {
1056 printf("\tDRM RRR: Found Valid Drm Mode\n");
1057 printf("\t\tDRM RRR: %dx%d\n", mode->width, mode->height);
1058 }
1059 else
1060 printf("\tDRM RRR: No Valid Drm Mode Found\n");
1061
1062 ecore_drm_output_mode_set(out, mode,
1063 s->config.geom.x, s->config.geom.y);
1064#if (EFL_VERSION_MAJOR > 1) || (EFL_VERSION_MINOR >= 18)
1065 int orient;
1066
1067 if (s->config.rotation == 0)
1068 orient = (1 << 0);
1069 else if (s->config.rotation == 90)
1070 orient = (1 << 1);
1071 else if (s->config.rotation == 180)
1072 orient = (1 << 2);
1073 else if (s->config.rotation == 270)
1074 orient = (1 << 3);
1075
1076 ecore_drm_output_rotation_set(out,
1077 ECORE_DRM_PLANE_TYPE_PRIMARY,
1078 orient);
1079#endif
1080
1081 if (s->config.priority == top_priority)
1082 ecore_drm_output_primary_set(out);
1083
1084 if (s->config.enabled)
1085 ecore_drm_output_enable(out);
1086 else
1087 ecore_drm_output_disable(out);
1088
1089 printf("\tDRM RRR: Mode\n");
1090 printf("\t\tDRM RRR: Geom: %d %d\n",
1091 s->config.mode.w, s->config.mode.h);
1092 printf("\t\tDRM RRR: Refresh: %f\n", s->config.mode.refresh);
1093 printf("\t\tDRM RRR: Preferred: %d\n",
1094 s->config.mode.preferred);
1095
1096 printf("\tDRM RRR: Rotation: %d\n", s->config.rotation);
1097
1098 printf("\tDRM RRR: Relative Mode: %d\n",
1099 s->config.relative.mode);
1100 printf("\tDRM RRR: Relative To: %s\n",
1101 s->config.relative.to);
1102 printf("\tDRM RRR: Align: %f\n", s->config.relative.align);
1103 }
1104 }
1105 }
1106}
1107
1108static void
1109_drm_dpms(int set)
1110{
1111 Ecore_Drm_Device *dev;
1112 Ecore_Drm_Output *out;
1113 E_Randr2_Screen *s;
1114 const Eina_List *l, *ll;
1115
1116 EINA_LIST_FOREACH(ecore_drm_devices_get(), l, dev)
1117 {
1118 EINA_LIST_FOREACH(e_randr2->screens, ll, s)
1119 {
1120 out = ecore_drm_device_output_name_find(dev, s->info.name);
1121 if (!out) continue;
1122
1123 if ((!s->config.configured) || s->config.enabled)
1124 ecore_drm_output_dpms_set(out, set);
1125 }
1126 }
1127}
1128
1129static void
1130_drm_read_pixels(E_Comp_Wl_Output *output, void *pixels)
1131{
1132 Ecore_Drm_Device *dev;
1133 Ecore_Drm_Fb *fb;
1134 const Eina_List *drm_devs, *l;
1135 int i = 0, bstride;
1136 unsigned char *s, *d = pixels;
1137
1138 drm_devs = ecore_drm_devices_get();
1139 EINA_LIST_FOREACH(drm_devs, l, dev)
1140 {
1141 fb = dev->next;
1142 if (!fb) fb = dev->current;
1143 if (fb) break;
1144 }
1145
1146 if (!fb) return;
1147
1148 bstride = output->w * sizeof(int);
1149
1150 for (i = output->y; i < output->y + output->h; i++)
1151 {
1152 s = fb->mmap;
1153 s += (fb->stride * i) + (output->x * sizeof(int));
1154 memcpy(d, s, (output->w * sizeof(int)));
1155 d += bstride;
1156 }
1157}
1158#endif
1159 750
1160static Eina_Bool 751static Eina_Bool
1161_drm_randr_available(void) 752_drm_randr_available(void)
@@ -1163,13 +754,6 @@ _drm_randr_available(void)
1163 return EINA_TRUE; 754 return EINA_TRUE;
1164} 755}
1165 756
1166#ifndef HAVE_DRM2
1167static void
1168_drm_randr_stub(void)
1169{}
1170#endif
1171
1172#ifdef HAVE_DRM2
1173static Eina_Bool 757static Eina_Bool
1174_drm2_cb_seat_caps(void *data EINA_UNUSED, int type EINA_UNUSED, void *event) 758_drm2_cb_seat_caps(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
1175{ 759{
@@ -1213,12 +797,10 @@ _drm2_shutdown(void)
1213{ 797{
1214 ecore_event_handler_del(seat_handler); 798 ecore_event_handler_del(seat_handler);
1215} 799}
1216#endif
1217 800
1218static E_Comp_Screen_Iface drmiface = 801static E_Comp_Screen_Iface drmiface =
1219{ 802{
1220 .available = _drm_randr_available, 803 .available = _drm_randr_available,
1221#ifdef HAVE_DRM2
1222 .init = _drm2_init, 804 .init = _drm2_init,
1223 .shutdown = _drm2_shutdown, 805 .shutdown = _drm2_shutdown,
1224 .create = _drm2_randr_create, 806 .create = _drm2_randr_create,
@@ -1226,13 +808,6 @@ static E_Comp_Screen_Iface drmiface =
1226 .dpms = _drm2_dpms, 808 .dpms = _drm2_dpms,
1227 .key_down = _drm2_key_down, 809 .key_down = _drm2_key_down,
1228 .key_up = _drm2_key_up, 810 .key_up = _drm2_key_up,
1229#else
1230 .init = _drm_randr_stub,
1231 .shutdown = _drm_randr_stub,
1232 .create = _drm_randr_create,
1233 .apply = _drm_randr_apply,
1234 .dpms = _drm_dpms,
1235#endif
1236}; 811};
1237 812
1238E_API void * 813E_API void *
@@ -1283,11 +858,7 @@ e_modapi_init(E_Module *m)
1283 if (!e_comp_wl_init()) return NULL; 858 if (!e_comp_wl_init()) return NULL;
1284 if (!e_comp_canvas_init(w, h)) return NULL; 859 if (!e_comp_canvas_init(w, h)) return NULL;
1285 860
1286#ifdef HAVE_DRM2
1287 e_comp_wl->extensions->screenshooter.read_pixels = _drm2_read_pixels; 861 e_comp_wl->extensions->screenshooter.read_pixels = _drm2_read_pixels;
1288#else
1289 e_comp_wl->extensions->screenshooter.read_pixels = _drm_read_pixels;
1290#endif
1291 862
1292 ecore_evas_pointer_xy_get(e_comp->ee, &e_comp_wl->ptr.x, 863 ecore_evas_pointer_xy_get(e_comp->ee, &e_comp_wl->ptr.x,
1293 &e_comp_wl->ptr.y); 864 &e_comp_wl->ptr.y);
@@ -1297,12 +868,9 @@ e_modapi_init(E_Module *m)
1297 e_comp_wl_input_keyboard_enabled_set(EINA_TRUE); 868 e_comp_wl_input_keyboard_enabled_set(EINA_TRUE);
1298 e_comp_wl_input_touch_enabled_set(EINA_TRUE); 869 e_comp_wl_input_touch_enabled_set(EINA_TRUE);
1299 870
1300 /* comp->pointer = */
1301 /* e_pointer_window_new(ecore_evas_window_get(comp->ee), 1); */
1302 e_comp->pointer = e_pointer_canvas_new(e_comp->ee, EINA_TRUE); 871 e_comp->pointer = e_pointer_canvas_new(e_comp->ee, EINA_TRUE);
1303 e_comp->pointer->color = EINA_TRUE; 872 e_comp->pointer->color = EINA_TRUE;
1304 873
1305#ifdef HAVE_DRM2
1306 activate_handler = 874 activate_handler =
1307 ecore_event_handler_add(ECORE_DRM2_EVENT_ACTIVATE, 875 ecore_event_handler_add(ECORE_DRM2_EVENT_ACTIVATE,
1308 _e_mod_drm_cb_activate, NULL); 876 _e_mod_drm_cb_activate, NULL);
@@ -1310,15 +878,6 @@ e_modapi_init(E_Module *m)
1310 output_handler = 878 output_handler =
1311 ecore_event_handler_add(ECORE_DRM2_EVENT_OUTPUT_CHANGED, 879 ecore_event_handler_add(ECORE_DRM2_EVENT_OUTPUT_CHANGED,
1312 _e_mod_drm_cb_output, NULL); 880 _e_mod_drm_cb_output, NULL);
1313#else
1314 activate_handler =
1315 ecore_event_handler_add(ECORE_DRM_EVENT_ACTIVATE,
1316 _e_mod_drm_cb_activate, NULL);
1317
1318 output_handler =
1319 ecore_event_handler_add(ECORE_DRM_EVENT_OUTPUT,
1320 _e_mod_drm_cb_output, NULL);
1321#endif
1322 881
1323 return m; 882 return m;
1324} 883}
@@ -1326,9 +885,6 @@ e_modapi_init(E_Module *m)
1326E_API int 885E_API int
1327e_modapi_shutdown(E_Module *m EINA_UNUSED) 886e_modapi_shutdown(E_Module *m EINA_UNUSED)
1328{ 887{
1329 /* shutdown ecore_drm */
1330 /* ecore_drm_shutdown(); */
1331
1332 if (output_handler) ecore_event_handler_del(output_handler); 888 if (output_handler) ecore_event_handler_del(output_handler);
1333 output_handler = NULL; 889 output_handler = NULL;
1334 890