diff options
author | Chris Michael <cp.michael@samsung.com> | 2015-11-17 15:55:41 -0500 |
---|---|---|
committer | Chris Michael <cp.michael@samsung.com> | 2015-11-17 15:55:41 -0500 |
commit | 85b04c188a7375ae77d3806d4c13468d480d2449 (patch) | |
tree | 15c287eb30f60146c2fa96d551a0fbb5b772e90e /src/modules/ecore_evas/engines/drm/ecore_evas_drm.c | |
parent | 0210051a40beb2d53789ced8b6c97671ea99ef2b (diff) |
ecore-evas-drm: Send fake mouse_move event after registering
This fixes an issue where ecore_drm was sending an initial mouse_move
event too early in the startup process. Instead, we will send the
event from Ecore_Evas after it has been registered with Ecore_Input.
This is done here to address and Fix T2854.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Diffstat (limited to 'src/modules/ecore_evas/engines/drm/ecore_evas_drm.c')
-rw-r--r-- | src/modules/ecore_evas/engines/drm/ecore_evas_drm.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c b/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c index a806cc0b36..9652144256 100644 --- a/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c +++ b/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c | |||
@@ -322,6 +322,25 @@ ecore_evas_drm_new_internal(const char *device, unsigned int parent EINA_UNUSED, | |||
322 | (Ecore_Event_Multi_Down_Cb)_ecore_evas_mouse_multi_down_process, | 322 | (Ecore_Event_Multi_Down_Cb)_ecore_evas_mouse_multi_down_process, |
323 | (Ecore_Event_Multi_Up_Cb)_ecore_evas_mouse_multi_up_process); | 323 | (Ecore_Event_Multi_Up_Cb)_ecore_evas_mouse_multi_up_process); |
324 | 324 | ||
325 | /* NB: Send a fake mouse move event so that E-Wl gets an updated | ||
326 | * pointer position, else we end up with buggers (ref: T2854) */ | ||
327 | { | ||
328 | Ecore_Event_Mouse_Move *ev; | ||
329 | |||
330 | ev = calloc(1, sizeof(Ecore_Event_Mouse_Move)); | ||
331 | ev->window = ee->prop.window; | ||
332 | ev->event_window = ee->prop.window; | ||
333 | ev->root_window = ee->prop.window; | ||
334 | ev->same_screen = 1; | ||
335 | |||
336 | ecore_drm_device_pointer_xy_get(dev, &ev->x, &ev->y); | ||
337 | |||
338 | ev->root.x = ev->x; | ||
339 | ev->root.y = ev->y; | ||
340 | |||
341 | ecore_event_evas_mouse_move(NULL, ECORE_EVENT_MOUSE_MOVE, ev); | ||
342 | } | ||
343 | |||
325 | return ee; | 344 | return ee; |
326 | 345 | ||
327 | eng_err: | 346 | eng_err: |