ecore-evas: block buffer canvas events during deletion

internal evas is destroyed before engine delete function is called,
so do not refeed events received during this time

@fix
This commit is contained in:
Mike Blumenkrantz 2017-06-16 15:03:09 -04:00
parent b6b0b1b5b2
commit db06108f0d
1 changed files with 13 additions and 0 deletions

View File

@ -255,6 +255,7 @@ _ecore_evas_buffer_cb_mouse_in(void *data, Evas *e, Evas_Object *obj EINA_UNUSED
ee = data;
ev = event_info;
if (!ee->evas) return;
_ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
evas_event_feed_mouse_in(ee->evas, ev->timestamp, NULL);
}
@ -267,6 +268,7 @@ _ecore_evas_buffer_cb_mouse_out(void *data, Evas *e, Evas_Object *obj EINA_UNUSE
ee = data;
ev = event_info;
if (!ee->evas) return;
_ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
evas_event_feed_mouse_out(ee->evas, ev->timestamp, NULL);
}
@ -279,6 +281,7 @@ _ecore_evas_buffer_cb_mouse_down(void *data, Evas *e, Evas_Object *obj EINA_UNUS
ee = data;
ev = event_info;
if (!ee->evas) return;
_ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
evas_event_feed_mouse_down(ee->evas, ev->button, ev->flags, ev->timestamp, NULL);
}
@ -291,6 +294,7 @@ _ecore_evas_buffer_cb_mouse_up(void *data, Evas *e, Evas_Object *obj EINA_UNUSED
ee = data;
ev = event_info;
if (!ee->evas) return;
_ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
evas_event_feed_mouse_up(ee->evas, ev->button, ev->flags, ev->timestamp, NULL);
}
@ -306,6 +310,7 @@ _ecore_evas_buffer_cb_mouse_move(void *data, Evas *e, Evas_Object *obj EINA_UNUS
ev = event_info;
x = ev->cur.canvas.x;
y = ev->cur.canvas.y;
if (!ee->evas) return;
_ecore_evas_buffer_coord_translate(ee, &x, &y);
_ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
_ecore_evas_mouse_move_process(ee, x, y, ev->timestamp);
@ -319,6 +324,7 @@ _ecore_evas_buffer_cb_mouse_wheel(void *data, Evas *e, Evas_Object *obj EINA_UNU
ee = data;
ev = event_info;
if (!ee->evas) return;
_ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
evas_event_feed_mouse_wheel(ee->evas, ev->direction, ev->z, ev->timestamp, NULL);
}
@ -337,6 +343,7 @@ _ecore_evas_buffer_cb_multi_down(void *data, Evas *e, Evas_Object *obj EINA_UNUS
y = ev->canvas.y;
xx = x;
yy = y;
if (!ee->evas) return;
_ecore_evas_buffer_coord_translate(ee, &x, &y);
xf = (ev->canvas.xsub - (double)xx) + (double)x;
yf = (ev->canvas.ysub - (double)yy) + (double)y;
@ -358,6 +365,7 @@ _ecore_evas_buffer_cb_multi_up(void *data, Evas *e, Evas_Object *obj EINA_UNUSED
y = ev->canvas.y;
xx = x;
yy = y;
if (!ee->evas) return;
_ecore_evas_buffer_coord_translate(ee, &x, &y);
xf = (ev->canvas.xsub - (double)xx) + (double)x;
yf = (ev->canvas.ysub - (double)yy) + (double)y;
@ -379,6 +387,7 @@ _ecore_evas_buffer_cb_multi_move(void *data, Evas *e, Evas_Object *obj EINA_UNUS
y = ev->cur.canvas.y;
xx = x;
yy = y;
if (!ee->evas) return;
_ecore_evas_buffer_coord_translate(ee, &x, &y);
xf = (ev->cur.canvas.xsub - (double)xx) + (double)x;
yf = (ev->cur.canvas.ysub - (double)yy) + (double)y;
@ -403,6 +412,7 @@ _ecore_evas_buffer_cb_key_down(void *data, Evas *e, Evas_Object *obj EINA_UNUSED
ee = data;
ev = event_info;
if (!ee->evas) return;
_ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
evas_event_feed_key_down(ee->evas, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, NULL);
}
@ -415,6 +425,7 @@ _ecore_evas_buffer_cb_key_up(void *data, Evas *e, Evas_Object *obj EINA_UNUSED,
ee = data;
ev = event_info;
if (!ee->evas) return;
_ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
evas_event_feed_key_up(ee->evas, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, NULL);
}
@ -425,6 +436,7 @@ _ecore_evas_buffer_cb_focus_in(void *data, Evas *e EINA_UNUSED, Evas_Object *obj
Ecore_Evas *ee;
ee = data;
if (!ee->evas) return;
_ecore_evas_focus_device_set(ee, NULL, EINA_TRUE);
}
@ -434,6 +446,7 @@ _ecore_evas_buffer_cb_focus_out(void *data, Evas *e EINA_UNUSED, Evas_Object *ob
Ecore_Evas *ee;
ee = data;
if (!ee->evas) return;
_ecore_evas_focus_device_set(ee, NULL, EINA_FALSE);
}