* ecore_evas: Cleanup buffer render user. Why isn't this common too ?

SVN revision: 45114
This commit is contained in:
Cedric BAIL 2010-01-14 17:52:29 +00:00
parent 99a429aab7
commit dd1abb5bae
8 changed files with 25 additions and 19 deletions

View File

@ -88,16 +88,17 @@ _ecore_evas_buffer_shutdown(void)
return _ecore_evas_init_count; return _ecore_evas_init_count;
} }
void int
_ecore_evas_buffer_render(Ecore_Evas *ee) _ecore_evas_buffer_render(Ecore_Evas *ee)
{ {
Eina_List *updates, *l, *ll; Eina_List *updates, *l, *ll;
Ecore_Evas *ee2; Ecore_Evas *ee2;
int rend = 0;
EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2) EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2)
{ {
if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(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 (ee2->func.fn_post_render) ee2->func.fn_post_render(ee2);
} }
if (ee->engine.buffer.image) if (ee->engine.buffer.image)
@ -123,6 +124,8 @@ _ecore_evas_buffer_render(Ecore_Evas *ee)
evas_render_updates_free(updates); evas_render_updates_free(updates);
_ecore_evas_idle_timeout_update(ee); _ecore_evas_idle_timeout_update(ee);
} }
return updates ? 1 : rend;
} }
static void static void

View File

@ -23,17 +23,18 @@ static Ecore_Event_Handler *ecore_evas_event_handlers[13];
static Eina_Hash *ecore_evases_hash = NULL; static Eina_Hash *ecore_evases_hash = NULL;
static void static int
_ecore_evas_directfb_render(Ecore_Evas *ee) _ecore_evas_directfb_render(Ecore_Evas *ee)
{ {
Eina_List *updates, *ll; Eina_List *updates, *ll;
Ecore_Evas *ee2; Ecore_Evas *ee2;
int rend = 0;
#ifdef BUILD_ECORE_EVAS_SOFTWARE_BUFFER #ifdef BUILD_ECORE_EVAS_SOFTWARE_BUFFER
EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2) EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2)
{ {
if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(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 (ee2->func.fn_post_render) ee2->func.fn_post_render(ee2);
} }
#endif #endif
@ -45,6 +46,8 @@ _ecore_evas_directfb_render(Ecore_Evas *ee)
_ecore_evas_idle_timeout_update(ee); _ecore_evas_idle_timeout_update(ee);
} }
if (ee->func.fn_post_render) ee->func.fn_post_render(ee); if (ee->func.fn_post_render) ee->func.fn_post_render(ee);
return updates ? 1 : rend;
} }
static char * static char *

View File

@ -194,11 +194,11 @@ static int
_ecore_evas_fb_render(Ecore_Evas *ee) _ecore_evas_fb_render(Ecore_Evas *ee)
{ {
int rend = 0; int rend = 0;
if (ee->visible) if (ee->visible)
{ {
Eina_List *updates; Eina_List *updates;
#ifdef BUILD_ECORE_EVAS_SOFTWARE_BUFFER #ifdef BUILD_ECORE_EVAS_SOFTWARE_BUFFER
Eina_List *ll; Eina_List *ll;
Ecore_Evas *ee2; Ecore_Evas *ee2;
@ -208,7 +208,7 @@ _ecore_evas_fb_render(Ecore_Evas *ee)
EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2) EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2)
{ {
if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(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 (ee2->func.fn_post_render) ee2->func.fn_post_render(ee2);
} }
#endif #endif

View File

@ -346,7 +346,7 @@ int _ecore_evas_fb_shutdown(void);
#endif #endif
#ifdef BUILD_ECORE_EVAS_SOFTWARE_BUFFER #ifdef BUILD_ECORE_EVAS_SOFTWARE_BUFFER
int _ecore_evas_buffer_shutdown(void); int _ecore_evas_buffer_shutdown(void);
void _ecore_evas_buffer_render(Ecore_Evas *ee); int _ecore_evas_buffer_render(Ecore_Evas *ee);
#endif #endif
#ifdef BUILD_ECORE_EVAS_DIRECTFB #ifdef BUILD_ECORE_EVAS_DIRECTFB
int _ecore_evas_directfb_shutdown(void); int _ecore_evas_directfb_shutdown(void);

View File

@ -112,36 +112,36 @@ _ecore_evas_render(Ecore_Evas *ee)
evas_render_updates_free(updates); evas_render_updates_free(updates);
_ecore_evas_idle_timeout_update(ee); _ecore_evas_idle_timeout_update(ee);
} }
return (int)updates; return updates ? 1 : 0;
} }
static int static int
_ecore_evas_sdl_render(Ecore_Evas *ee) _ecore_evas_sdl_render(Ecore_Evas *ee)
{ {
int rend = 0; int rend = 0;
#ifdef BUILD_ECORE_EVAS_SOFTWARE_BUFFER #ifdef BUILD_ECORE_EVAS_SOFTWARE_BUFFER
Eina_List *ll; Eina_List *ll;
Ecore_Evas *ee2; Ecore_Evas *ee2;
EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2) EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2)
{ {
if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(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 (ee2->func.fn_post_render) ee2->func.fn_post_render(ee2);
} }
#endif #endif
if (ee->func.fn_pre_render) ee->func.fn_pre_render(ee); if (ee->func.fn_pre_render) ee->func.fn_pre_render(ee);
if (ee->prop.avoid_damage) rend = _ecore_evas_render(ee); if (ee->prop.avoid_damage) rend = _ecore_evas_render(ee);
else if ((ee->visible) || else if ((ee->visible) ||
((ee->should_be_visible) && (ee->prop.fullscreen)) || ((ee->should_be_visible) && (ee->prop.fullscreen)) ||
((ee->should_be_visible) && (ee->prop.override))) ((ee->should_be_visible) && (ee->prop.override)))
rend = _ecore_evas_render(ee); rend |= _ecore_evas_render(ee);
else else
evas_norender(ee->evas); evas_norender(ee->evas);
if (ee->func.fn_post_render) ee->func.fn_post_render(ee); if (ee->func.fn_post_render) ee->func.fn_post_render(ee);
return rend; return rend;
} }

View File

@ -59,7 +59,7 @@ _ecore_evas_win32_render(Ecore_Evas *ee)
EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2) EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2)
{ {
if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(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 (ee2->func.fn_post_render) ee2->func.fn_post_render(ee2);
} }
#endif #endif

View File

@ -57,7 +57,7 @@ _ecore_evas_wince_render(Ecore_Evas *ee)
EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2) EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2)
{ {
if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(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 (ee2->func.fn_post_render) ee2->func.fn_post_render(ee2);
} }
#endif #endif

View File

@ -148,7 +148,7 @@ _ecore_evas_x_render(Ecore_Evas *ee)
EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2) EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2)
{ {
if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(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 (ee2->func.fn_post_render) ee2->func.fn_post_render(ee2);
} }
#endif #endif