summaryrefslogtreecommitdiff
path: root/src/lib/ecore_evas/ecore_evas.c
diff options
context:
space:
mode:
authorCedric Bail <cedric@osg.samsung.com>2017-11-09 18:07:31 -0800
committerCedric Bail <cedric@osg.samsung.com>2017-11-09 18:07:31 -0800
commit3b7607d7f622ceaab7aa30790ce79b6792f230e1 (patch)
treea3e3fd67a218f394a96aadb50f6ede5eef1f43f8 /src/lib/ecore_evas/ecore_evas.c
parentfee2b1beb4e46b1a3b0509bf407efae243a3536e (diff)
ecore_evas: improve ecore_evas fallback animator logic for legacy case.
In Enlightenment with internal window being WL window connected to the X11 backend, you end up with the later requiring the former to tick, even if the former do not have a proper animator source. To work around the problem when there is one backend that is not providing support for animator source, we do need to avoid switching on another window source as they could be linked somehow and we can not know.
Diffstat (limited to 'src/lib/ecore_evas/ecore_evas.c')
-rw-r--r--src/lib/ecore_evas/ecore_evas.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c
index 77ab679..11c043e 100644
--- a/src/lib/ecore_evas/ecore_evas.c
+++ b/src/lib/ecore_evas/ecore_evas.c
@@ -3148,6 +3148,7 @@ _ecore_evas_tick_source_find(void)
3148 Ecore_Evas *ee; 3148 Ecore_Evas *ee;
3149 Eina_Bool source = EINA_FALSE; 3149 Eina_Bool source = EINA_FALSE;
3150 3150
3151 // Check if we do have a potential tick source for legacy
3151 EINA_INLIST_FOREACH(ecore_evases, ee) 3152 EINA_INLIST_FOREACH(ecore_evases, ee)
3152 if (!ee->deleted && 3153 if (!ee->deleted &&
3153 ee->engine.func->fn_animator_register && 3154 ee->engine.func->fn_animator_register &&
@@ -3157,7 +3158,19 @@ _ecore_evas_tick_source_find(void)
3157 break; 3158 break;
3158 } 3159 }
3159 3160
3160 // If no source is available for ticking, fallback to timer. 3161 // If just one source require fallback, we can't be sure that
3162 // we are not running enlightenment and that this source might
3163 // actually be the true tick source of all other window. In
3164 // that scenario, we have to forcefully fallback.
3165 EINA_INLIST_FOREACH(ecore_evases, ee)
3166 if (!ee->deleted &&
3167 (!ee->engine.func->fn_animator_register ||
3168 !ee->engine.func->fn_animator_unregister))
3169 {
3170 source = EINA_FALSE;
3171 break;
3172 }
3173
3161 if (!source) 3174 if (!source)
3162 { 3175 {
3163 ecore_animator_source_set(ECORE_ANIMATOR_SOURCE_TIMER); 3176 ecore_animator_source_set(ECORE_ANIMATOR_SOURCE_TIMER);