forked from enlightenment/enlightenment
preserve cursor state in drm output during vt switch
#wew ref T5483
This commit is contained in:
parent
58226266fd
commit
79ed10927e
|
@ -58,6 +58,15 @@ _e_mod_drm_cb_activate(void *data EINA_UNUSED, int type EINA_UNUSED, void *event
|
|||
ecore_evas_show(e_comp->ee);
|
||||
evas_damage_rectangle_add(e_comp->evas, 0, 0, e_comp->w, e_comp->h);
|
||||
ecore_event_add(E_EVENT_COMPOSITOR_ENABLE, NULL, NULL, NULL);
|
||||
ecore_evas_pointer_warp(e_comp->ee, e_comp_wl->ptr.x, e_comp_wl->ptr.y);
|
||||
if (e_comp->pointer->client.ec)
|
||||
{
|
||||
ecore_evas_object_cursor_set(e_comp->ee, e_comp->pointer->client.ec->frame,
|
||||
E_LAYER_MAX - 1, e_comp->pointer->client.x, e_comp->pointer->client.y);
|
||||
}
|
||||
else
|
||||
ecore_evas_object_cursor_set(e_comp->pointer->ee, e_comp->pointer->o_ptr,
|
||||
E_LAYER_MAX - 1, e_comp->pointer->hot.x, e_comp->pointer->hot.y);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -818,6 +827,23 @@ _pointer_motion(void *d EINA_UNUSED, int t EINA_UNUSED, Elput_Event_Pointer_Moti
|
|||
return ECORE_CALLBACK_RENEW;
|
||||
}
|
||||
|
||||
static void
|
||||
_drm_device_del(void *data EINA_UNUSED, const Efl_Event *event)
|
||||
{
|
||||
Eo *seat = event->info;
|
||||
|
||||
if (efl_input_device_type_get(event->info) == EFL_INPUT_DEVICE_CLASS_SEAT) return;
|
||||
seat = efl_input_device_seat_get(event->info);
|
||||
|
||||
if (seat != evas_default_device_get(e_comp->evas, EFL_INPUT_DEVICE_CLASS_SEAT)) return;
|
||||
if (!efl_input_device_has_pointer_caps(event->info)) return;
|
||||
if (efl_input_device_has_pointer_caps(seat) == 1)
|
||||
ecore_evas_cursor_device_unset(e_comp->ee, event->info);
|
||||
}
|
||||
|
||||
EFL_CALLBACKS_ARRAY_DEFINE(_drm_device_del_cb,
|
||||
{ EFL_CANVAS_EVENT_DEVICE_REMOVED, _drm_device_del });
|
||||
|
||||
E_API void *
|
||||
e_modapi_init(E_Module *m)
|
||||
{
|
||||
|
@ -891,6 +917,9 @@ 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_CALLBACK_PRIORITY_BEFORE, NULL);
|
||||
|
||||
return m;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue