summaryrefslogtreecommitdiff
path: root/src/lib/ecore_evas
diff options
context:
space:
mode:
authorDerek Foreman <derekf@osg.samsung.com>2017-07-10 16:05:27 -0500
committerDerek Foreman <derekf@osg.samsung.com>2017-07-10 16:24:25 -0500
commitcae1927554eb0d92dcbf7d3478c6eda494593eb9 (patch)
treefeaa9470ce845c72d19c0a4113e92966469bfab3 /src/lib/ecore_evas
parent0fdc6a854a0fb55c2fe53c5d2f4e939655f67361 (diff)
ecore_evas: Don't start backend ticking for manually rendered canvases
Shortcut the code that starts up a back-end ticker if we're manually rendered. ref T5462
Diffstat (limited to 'src/lib/ecore_evas')
-rw-r--r--src/lib/ecore_evas/ecore_evas.c44
1 files changed, 21 insertions, 23 deletions
diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c
index 280e82d609..43560bae0f 100644
--- a/src/lib/ecore_evas/ecore_evas.c
+++ b/src/lib/ecore_evas/ecore_evas.c
@@ -218,6 +218,12 @@ _ecore_evas_idle_enter(void *data EINA_UNUSED)
218 } 218 }
219 EINA_INLIST_FOREACH(ecore_evases, ee) 219 EINA_INLIST_FOREACH(ecore_evases, ee)
220 { 220 {
221 if (ee->manual_render)
222 {
223 if (ee->engine.func->fn_evas_changed)
224 ee->engine.func->fn_evas_changed(ee, EINA_FALSE);
225 continue;
226 }
221 if (_ecore_evas_render_sync) 227 if (_ecore_evas_render_sync)
222 { 228 {
223 if (!ee->first_frame) 229 if (!ee->first_frame)
@@ -271,32 +277,24 @@ _ecore_evas_idle_enter(void *data EINA_UNUSED)
271 } 277 }
272#endif 278#endif
273 279
274 if (!ee->manual_render) 280 Eina_Bool change = EINA_FALSE;
275 {
276 Eina_Bool change = EINA_FALSE;
277 281
278 if (ee->engine.func->fn_render) 282 if (ee->engine.func->fn_render)
279 { 283 {
280 change = ee->engine.func->fn_render(ee); 284 change = ee->engine.func->fn_render(ee);
281 }
282 else
283 {
284 change = ecore_evas_render(ee);
285 }
286 rend |= change;
287 /*
288 * Some engines that generate their own ticks based on hardware
289 * events need to know that render has been considered, and
290 * whether it will actually generate a new image or not
291 */
292 if (ee->engine.func->fn_evas_changed)
293 ee->engine.func->fn_evas_changed(ee, change);
294 } 285 }
295 else 286 else
296 { 287 {
297 if (ee->engine.func->fn_evas_changed) 288 change = ecore_evas_render(ee);
298 ee->engine.func->fn_evas_changed(ee, EINA_FALSE); 289 }
299 } 290 rend |= change;
291 /*
292 * Some engines that generate their own ticks based on hardware
293 * events need to know that render has been considered, and
294 * whether it will actually generate a new image or not
295 */
296 if (ee->engine.func->fn_evas_changed)
297 ee->engine.func->fn_evas_changed(ee, change);
300 298
301#ifdef ECORE_EVAS_ASYNC_RENDER_DEBUG 299#ifdef ECORE_EVAS_ASYNC_RENDER_DEBUG
302 if ((ee->in_async_render) && (ee->async_render_start <= 0.0)) 300 if ((ee->in_async_render) && (ee->async_render_start <= 0.0))