summaryrefslogtreecommitdiff
path: root/src/lib/ecore_evas
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2017-06-16 15:03:09 -0400
committerMike Blumenkrantz <zmike@osg.samsung.com>2017-06-16 12:23:07 -0400
commitdb06108f0d20533e679f4aa9f547dd9ef492e7f7 (patch)
treeb0fb41157cefecd7b3ff865bf446a1bd0b7ff426 /src/lib/ecore_evas
parentb6b0b1b5b2581bbb66d726ed1f1463eca1d4a740 (diff)
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
Diffstat (limited to 'src/lib/ecore_evas')
-rw-r--r--src/lib/ecore_evas/ecore_evas_buffer.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/lib/ecore_evas/ecore_evas_buffer.c b/src/lib/ecore_evas/ecore_evas_buffer.c
index 6d7f64b223..dcb9fa13f1 100644
--- a/src/lib/ecore_evas/ecore_evas_buffer.c
+++ b/src/lib/ecore_evas/ecore_evas_buffer.c
@@ -255,6 +255,7 @@ _ecore_evas_buffer_cb_mouse_in(void *data, Evas *e, Evas_Object *obj EINA_UNUSED
255 255
256 ee = data; 256 ee = data;
257 ev = event_info; 257 ev = event_info;
258 if (!ee->evas) return;
258 _ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas); 259 _ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
259 evas_event_feed_mouse_in(ee->evas, ev->timestamp, NULL); 260 evas_event_feed_mouse_in(ee->evas, ev->timestamp, NULL);
260} 261}
@@ -267,6 +268,7 @@ _ecore_evas_buffer_cb_mouse_out(void *data, Evas *e, Evas_Object *obj EINA_UNUSE
267 268
268 ee = data; 269 ee = data;
269 ev = event_info; 270 ev = event_info;
271 if (!ee->evas) return;
270 _ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas); 272 _ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
271 evas_event_feed_mouse_out(ee->evas, ev->timestamp, NULL); 273 evas_event_feed_mouse_out(ee->evas, ev->timestamp, NULL);
272} 274}
@@ -279,6 +281,7 @@ _ecore_evas_buffer_cb_mouse_down(void *data, Evas *e, Evas_Object *obj EINA_UNUS
279 281
280 ee = data; 282 ee = data;
281 ev = event_info; 283 ev = event_info;
284 if (!ee->evas) return;
282 _ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas); 285 _ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
283 evas_event_feed_mouse_down(ee->evas, ev->button, ev->flags, ev->timestamp, NULL); 286 evas_event_feed_mouse_down(ee->evas, ev->button, ev->flags, ev->timestamp, NULL);
284} 287}
@@ -291,6 +294,7 @@ _ecore_evas_buffer_cb_mouse_up(void *data, Evas *e, Evas_Object *obj EINA_UNUSED
291 294
292 ee = data; 295 ee = data;
293 ev = event_info; 296 ev = event_info;
297 if (!ee->evas) return;
294 _ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas); 298 _ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
295 evas_event_feed_mouse_up(ee->evas, ev->button, ev->flags, ev->timestamp, NULL); 299 evas_event_feed_mouse_up(ee->evas, ev->button, ev->flags, ev->timestamp, NULL);
296} 300}
@@ -306,6 +310,7 @@ _ecore_evas_buffer_cb_mouse_move(void *data, Evas *e, Evas_Object *obj EINA_UNUS
306 ev = event_info; 310 ev = event_info;
307 x = ev->cur.canvas.x; 311 x = ev->cur.canvas.x;
308 y = ev->cur.canvas.y; 312 y = ev->cur.canvas.y;
313 if (!ee->evas) return;
309 _ecore_evas_buffer_coord_translate(ee, &x, &y); 314 _ecore_evas_buffer_coord_translate(ee, &x, &y);
310 _ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas); 315 _ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
311 _ecore_evas_mouse_move_process(ee, x, y, ev->timestamp); 316 _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
319 324
320 ee = data; 325 ee = data;
321 ev = event_info; 326 ev = event_info;
327 if (!ee->evas) return;
322 _ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas); 328 _ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
323 evas_event_feed_mouse_wheel(ee->evas, ev->direction, ev->z, ev->timestamp, NULL); 329 evas_event_feed_mouse_wheel(ee->evas, ev->direction, ev->z, ev->timestamp, NULL);
324} 330}
@@ -337,6 +343,7 @@ _ecore_evas_buffer_cb_multi_down(void *data, Evas *e, Evas_Object *obj EINA_UNUS
337 y = ev->canvas.y; 343 y = ev->canvas.y;
338 xx = x; 344 xx = x;
339 yy = y; 345 yy = y;
346 if (!ee->evas) return;
340 _ecore_evas_buffer_coord_translate(ee, &x, &y); 347 _ecore_evas_buffer_coord_translate(ee, &x, &y);
341 xf = (ev->canvas.xsub - (double)xx) + (double)x; 348 xf = (ev->canvas.xsub - (double)xx) + (double)x;
342 yf = (ev->canvas.ysub - (double)yy) + (double)y; 349 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
358 y = ev->canvas.y; 365 y = ev->canvas.y;
359 xx = x; 366 xx = x;
360 yy = y; 367 yy = y;
368 if (!ee->evas) return;
361 _ecore_evas_buffer_coord_translate(ee, &x, &y); 369 _ecore_evas_buffer_coord_translate(ee, &x, &y);
362 xf = (ev->canvas.xsub - (double)xx) + (double)x; 370 xf = (ev->canvas.xsub - (double)xx) + (double)x;
363 yf = (ev->canvas.ysub - (double)yy) + (double)y; 371 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
379 y = ev->cur.canvas.y; 387 y = ev->cur.canvas.y;
380 xx = x; 388 xx = x;
381 yy = y; 389 yy = y;
390 if (!ee->evas) return;
382 _ecore_evas_buffer_coord_translate(ee, &x, &y); 391 _ecore_evas_buffer_coord_translate(ee, &x, &y);
383 xf = (ev->cur.canvas.xsub - (double)xx) + (double)x; 392 xf = (ev->cur.canvas.xsub - (double)xx) + (double)x;
384 yf = (ev->cur.canvas.ysub - (double)yy) + (double)y; 393 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
403 412
404 ee = data; 413 ee = data;
405 ev = event_info; 414 ev = event_info;
415 if (!ee->evas) return;
406 _ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas); 416 _ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
407 evas_event_feed_key_down(ee->evas, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, NULL); 417 evas_event_feed_key_down(ee->evas, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, NULL);
408} 418}
@@ -415,6 +425,7 @@ _ecore_evas_buffer_cb_key_up(void *data, Evas *e, Evas_Object *obj EINA_UNUSED,
415 425
416 ee = data; 426 ee = data;
417 ev = event_info; 427 ev = event_info;
428 if (!ee->evas) return;
418 _ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas); 429 _ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
419 evas_event_feed_key_up(ee->evas, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, NULL); 430 evas_event_feed_key_up(ee->evas, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, NULL);
420} 431}
@@ -425,6 +436,7 @@ _ecore_evas_buffer_cb_focus_in(void *data, Evas *e EINA_UNUSED, Evas_Object *obj
425 Ecore_Evas *ee; 436 Ecore_Evas *ee;
426 437
427 ee = data; 438 ee = data;
439 if (!ee->evas) return;
428 _ecore_evas_focus_device_set(ee, NULL, EINA_TRUE); 440 _ecore_evas_focus_device_set(ee, NULL, EINA_TRUE);
429} 441}
430 442
@@ -434,6 +446,7 @@ _ecore_evas_buffer_cb_focus_out(void *data, Evas *e EINA_UNUSED, Evas_Object *ob
434 Ecore_Evas *ee; 446 Ecore_Evas *ee;
435 447
436 ee = data; 448 ee = data;
449 if (!ee->evas) return;
437 _ecore_evas_focus_device_set(ee, NULL, EINA_FALSE); 450 _ecore_evas_focus_device_set(ee, NULL, EINA_FALSE);
438} 451}
439 452