ecore_evas: prevent duplicated ecore_evas registration

Summary:
After a44697c37a, we can register same ecore_evas
to ecore_evases using ecore_evas_input_event_register.
(ecore_evas_input_event_register -> ecore_evas_done -> _ecore_evas_register)
This can make infinite loop in EINA_INLIST_FOREACH(ecore_evases, ee) because
next inlist of ecore_evases is ecore_evases after double call of
_ecore_evas_register.

This patch prevent it.

Test Plan:
Ecore_Evas *ee = ecore_evas_new(NULL, 0, 0, 800, 600, NULL);
ecore_evas_input_event_register(ee);
(part of document of ecore_fb_input_device_window_set)

Check that there is no infinite loop

Reviewers: zmike, devilhorns

Reviewed By: zmike

Subscribers: cedric, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6390
This commit is contained in:
YeongJong Lee 2018-06-25 15:14:01 -04:00 committed by Mike Blumenkrantz
parent 0e40fad446
commit a522bf5d76
1 changed files with 2 additions and 0 deletions

View File

@ -3256,6 +3256,8 @@ _ecore_evas_register_animators(Ecore_Evas *ee)
EAPI void
_ecore_evas_register(Ecore_Evas *ee)
{
if (ee->registered) return;
ee->registered = 1;
ecore_evases = (Ecore_Evas *)eina_inlist_prepend
(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));