* ecore_evas: Cleanup buffer render user. Why isn't this common too ?
authorcedric <cedric@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 14 Jan 2010 17:52:29 +0000 (17:52 +0000)
committercedric <cedric@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 14 Jan 2010 17:52:29 +0000 (17:52 +0000)
git-svn-id: http://svn.enlightenment.org/svn/e/trunk/ecore@45114 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/ecore_evas/ecore_evas_buffer.c
src/lib/ecore_evas/ecore_evas_directfb.c
src/lib/ecore_evas/ecore_evas_fb.c
src/lib/ecore_evas/ecore_evas_private.h
src/lib/ecore_evas/ecore_evas_sdl.c
src/lib/ecore_evas/ecore_evas_win32.c
src/lib/ecore_evas/ecore_evas_wince.c
src/lib/ecore_evas/ecore_evas_x.c

index 33ab5b1..43506bf 100644 (file)
@@ -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
index e301d41..acc8a53 100644 (file)
@@ -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 *
index 9758560..f0a222f 100644 (file)
@@ -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
index c4404a1..cc2caee 100644 (file)
@@ -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);
index 31b204d..ad492ec 100644 (file)
@@ -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;
 }
index 0fb92e1..19f7545 100644 (file)
@@ -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
index 7e558f5..a4aa56a 100644 (file)
@@ -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
index a5d067f..4df8492 100644 (file)
@@ -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