From dd1abb5baee19a5265645b1791e9dfe5327a926a Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Thu, 14 Jan 2010 17:52:29 +0000 Subject: [PATCH] * ecore_evas: Cleanup buffer render user. Why isn't this common too ? SVN revision: 45114 --- .../ecore/src/lib/ecore_evas/ecore_evas_buffer.c | 7 +++++-- .../src/lib/ecore_evas/ecore_evas_directfb.c | 7 +++++-- legacy/ecore/src/lib/ecore_evas/ecore_evas_fb.c | 6 +++--- .../src/lib/ecore_evas/ecore_evas_private.h | 2 +- legacy/ecore/src/lib/ecore_evas/ecore_evas_sdl.c | 16 ++++++++-------- .../ecore/src/lib/ecore_evas/ecore_evas_win32.c | 2 +- .../ecore/src/lib/ecore_evas/ecore_evas_wince.c | 2 +- legacy/ecore/src/lib/ecore_evas/ecore_evas_x.c | 2 +- 8 files changed, 25 insertions(+), 19 deletions(-) diff --git a/legacy/ecore/src/lib/ecore_evas/ecore_evas_buffer.c b/legacy/ecore/src/lib/ecore_evas/ecore_evas_buffer.c index 33ab5b1602..43506bfb78 100644 --- a/legacy/ecore/src/lib/ecore_evas/ecore_evas_buffer.c +++ b/legacy/ecore/src/lib/ecore_evas/ecore_evas_buffer.c @@ -88,16 +88,17 @@ _ecore_evas_buffer_shutdown(void) return _ecore_evas_init_count; } -void +int _ecore_evas_buffer_render(Ecore_Evas *ee) { Eina_List *updates, *l, *ll; Ecore_Evas *ee2; + int rend = 0; EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2) { if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(ee2); - _ecore_evas_buffer_render(ee2); + rend |= _ecore_evas_buffer_render(ee2); if (ee2->func.fn_post_render) ee2->func.fn_post_render(ee2); } if (ee->engine.buffer.image) @@ -123,6 +124,8 @@ _ecore_evas_buffer_render(Ecore_Evas *ee) evas_render_updates_free(updates); _ecore_evas_idle_timeout_update(ee); } + + return updates ? 1 : rend; } static void diff --git a/legacy/ecore/src/lib/ecore_evas/ecore_evas_directfb.c b/legacy/ecore/src/lib/ecore_evas/ecore_evas_directfb.c index e301d41974..acc8a536ca 100644 --- a/legacy/ecore/src/lib/ecore_evas/ecore_evas_directfb.c +++ b/legacy/ecore/src/lib/ecore_evas/ecore_evas_directfb.c @@ -23,17 +23,18 @@ static Ecore_Event_Handler *ecore_evas_event_handlers[13]; static Eina_Hash *ecore_evases_hash = NULL; -static void +static int _ecore_evas_directfb_render(Ecore_Evas *ee) { Eina_List *updates, *ll; Ecore_Evas *ee2; + int rend = 0; #ifdef BUILD_ECORE_EVAS_SOFTWARE_BUFFER EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2) { if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(ee2); - _ecore_evas_buffer_render(ee2); + rend |= _ecore_evas_buffer_render(ee2); if (ee2->func.fn_post_render) ee2->func.fn_post_render(ee2); } #endif @@ -45,6 +46,8 @@ _ecore_evas_directfb_render(Ecore_Evas *ee) _ecore_evas_idle_timeout_update(ee); } if (ee->func.fn_post_render) ee->func.fn_post_render(ee); + + return updates ? 1 : rend; } static char * diff --git a/legacy/ecore/src/lib/ecore_evas/ecore_evas_fb.c b/legacy/ecore/src/lib/ecore_evas/ecore_evas_fb.c index 9758560890..f0a222f33d 100644 --- a/legacy/ecore/src/lib/ecore_evas/ecore_evas_fb.c +++ b/legacy/ecore/src/lib/ecore_evas/ecore_evas_fb.c @@ -194,11 +194,11 @@ static int _ecore_evas_fb_render(Ecore_Evas *ee) { int rend = 0; - + if (ee->visible) { Eina_List *updates; - + #ifdef BUILD_ECORE_EVAS_SOFTWARE_BUFFER Eina_List *ll; Ecore_Evas *ee2; @@ -208,7 +208,7 @@ _ecore_evas_fb_render(Ecore_Evas *ee) EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2) { if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(ee2); - _ecore_evas_buffer_render(ee2); + rend |= _ecore_evas_buffer_render(ee2); if (ee2->func.fn_post_render) ee2->func.fn_post_render(ee2); } #endif diff --git a/legacy/ecore/src/lib/ecore_evas/ecore_evas_private.h b/legacy/ecore/src/lib/ecore_evas/ecore_evas_private.h index c4404a1c5c..cc2caeeb4f 100644 --- a/legacy/ecore/src/lib/ecore_evas/ecore_evas_private.h +++ b/legacy/ecore/src/lib/ecore_evas/ecore_evas_private.h @@ -346,7 +346,7 @@ int _ecore_evas_fb_shutdown(void); #endif #ifdef BUILD_ECORE_EVAS_SOFTWARE_BUFFER int _ecore_evas_buffer_shutdown(void); -void _ecore_evas_buffer_render(Ecore_Evas *ee); +int _ecore_evas_buffer_render(Ecore_Evas *ee); #endif #ifdef BUILD_ECORE_EVAS_DIRECTFB int _ecore_evas_directfb_shutdown(void); diff --git a/legacy/ecore/src/lib/ecore_evas/ecore_evas_sdl.c b/legacy/ecore/src/lib/ecore_evas/ecore_evas_sdl.c index 31b204db2d..ad492ec258 100644 --- a/legacy/ecore/src/lib/ecore_evas/ecore_evas_sdl.c +++ b/legacy/ecore/src/lib/ecore_evas/ecore_evas_sdl.c @@ -112,36 +112,36 @@ _ecore_evas_render(Ecore_Evas *ee) evas_render_updates_free(updates); _ecore_evas_idle_timeout_update(ee); } - return (int)updates; + return updates ? 1 : 0; } static int _ecore_evas_sdl_render(Ecore_Evas *ee) { int rend = 0; - + #ifdef BUILD_ECORE_EVAS_SOFTWARE_BUFFER Eina_List *ll; Ecore_Evas *ee2; - + EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2) { if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(ee2); - _ecore_evas_buffer_render(ee2); + rend |= _ecore_evas_buffer_render(ee2); if (ee2->func.fn_post_render) ee2->func.fn_post_render(ee2); } #endif - + if (ee->func.fn_pre_render) ee->func.fn_pre_render(ee); - + if (ee->prop.avoid_damage) rend = _ecore_evas_render(ee); else if ((ee->visible) || ((ee->should_be_visible) && (ee->prop.fullscreen)) || ((ee->should_be_visible) && (ee->prop.override))) - rend = _ecore_evas_render(ee); + rend |= _ecore_evas_render(ee); else evas_norender(ee->evas); - + if (ee->func.fn_post_render) ee->func.fn_post_render(ee); return rend; } diff --git a/legacy/ecore/src/lib/ecore_evas/ecore_evas_win32.c b/legacy/ecore/src/lib/ecore_evas/ecore_evas_win32.c index 0fb92e1899..19f7545266 100644 --- a/legacy/ecore/src/lib/ecore_evas/ecore_evas_win32.c +++ b/legacy/ecore/src/lib/ecore_evas/ecore_evas_win32.c @@ -59,7 +59,7 @@ _ecore_evas_win32_render(Ecore_Evas *ee) EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2) { if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(ee2); - _ecore_evas_buffer_render(ee2); + rend |= _ecore_evas_buffer_render(ee2); if (ee2->func.fn_post_render) ee2->func.fn_post_render(ee2); } #endif diff --git a/legacy/ecore/src/lib/ecore_evas/ecore_evas_wince.c b/legacy/ecore/src/lib/ecore_evas/ecore_evas_wince.c index 7e558f5609..a4aa56a640 100644 --- a/legacy/ecore/src/lib/ecore_evas/ecore_evas_wince.c +++ b/legacy/ecore/src/lib/ecore_evas/ecore_evas_wince.c @@ -57,7 +57,7 @@ _ecore_evas_wince_render(Ecore_Evas *ee) EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2) { if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(ee2); - _ecore_evas_buffer_render(ee2); + rend |= _ecore_evas_buffer_render(ee2); if (ee2->func.fn_post_render) ee2->func.fn_post_render(ee2); } #endif diff --git a/legacy/ecore/src/lib/ecore_evas/ecore_evas_x.c b/legacy/ecore/src/lib/ecore_evas/ecore_evas_x.c index a5d067f69b..4df8492407 100644 --- a/legacy/ecore/src/lib/ecore_evas/ecore_evas_x.c +++ b/legacy/ecore/src/lib/ecore_evas/ecore_evas_x.c @@ -148,7 +148,7 @@ _ecore_evas_x_render(Ecore_Evas *ee) EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2) { if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(ee2); - _ecore_evas_buffer_render(ee2); + rend |= _ecore_evas_buffer_render(ee2); if (ee2->func.fn_post_render) ee2->func.fn_post_render(ee2); } #endif