diff --git a/src/modules/wl_drm/e_mod_main.c b/src/modules/wl_drm/e_mod_main.c index 68d6593f9..d51293c1d 100644 --- a/src/modules/wl_drm/e_mod_main.c +++ b/src/modules/wl_drm/e_mod_main.c @@ -779,14 +779,13 @@ _drm_device_del(void *data EINA_UNUSED, const Efl_Event *event) ecore_evas_cursor_device_unset(e_comp->ee, event->info); } -EFL_CALLBACKS_ARRAY_DEFINE(_drm_device_del_cb, - { EFL_CANVAS_SCENE_EVENT_DEVICE_REMOVED, _drm_device_del }); - E_API void * e_modapi_init(E_Module *m) { int w = 0, h = 0; + static Efl_Callback_Array_Item arr[2] = { { 0, _drm_device_del } }; + printf("LOAD WL_DRM MODULE\n"); /* try to init ecore_drm */ @@ -832,6 +831,14 @@ e_modapi_init(E_Module *m) ecore_evas_screen_geometry_get(e_comp->ee, NULL, NULL, &w, &h); if (!e_comp_canvas_init(w, h)) return NULL; +#ifdef EFL_VERSION_1_21 + arr[0].desc = EFL_CANVAS_SCENE_EVENT_DEVICE_REMOVED; +#else + if (E_EFL_VERSION_MINIMUM(1, 20, 99)) + arr[0].desc = dlsym(NULL, "_EFL_CANVAS_SCENE_EVENT_DEVICE_REMOVED"); + if (!arr[0].desc) + arr[0].desc = dlsym(NULL, "_EFL_CANVAS_EVENT_DEVICE_REMOVED"); +#endif ecore_evas_pointer_xy_get(e_comp->ee, &e_comp_wl->ptr.x, &e_comp_wl->ptr.y); evas_event_feed_mouse_in(e_comp->evas, 0, NULL); @@ -855,7 +862,7 @@ e_modapi_init(E_Module *m) ecore_event_handler_add(ELPUT_EVENT_POINTER_MOTION, (Ecore_Event_Handler_Cb)_pointer_motion, NULL); - efl_event_callback_array_priority_add(e_comp->evas, _drm_device_del_cb(), + efl_event_callback_array_priority_add(e_comp->evas, arr, EFL_CALLBACK_PRIORITY_BEFORE, NULL); return m;