Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/ecore

Dir     : e17/libs/ecore/src/lib/ecore_evas


Modified Files:
        Ecore_Evas.h ecore_evas.c ecore_evas_buffer.c 
        ecore_evas_directfb.c ecore_evas_fb.c ecore_evas_private.h 
        ecore_evas_x.c 


Log Message:


add idle flush support - 0.5 secs of no rendering gets the engine to flush
all floating data.

===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_evas/Ecore_Evas.h,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -3 -r1.26 -r1.27
--- Ecore_Evas.h        7 Apr 2007 07:35:31 -0000       1.26
+++ Ecore_Evas.h        17 Jun 2007 03:41:43 -0000      1.27
@@ -53,7 +53,7 @@
 #define HAVE_ECORE_EVAS_GL 1
 #define HAVE_ECORE_EVAS_DIRECTFB 1
 
-typedef enum
+typedef enum _Ecore_Evas_Engine_Type
 {
    ECORE_EVAS_ENGINE_SOFTWARE_X11,
    ECORE_EVAS_ENGINE_SOFTWARE_FB,
@@ -70,12 +70,12 @@
    
 #ifndef _ECORE_DIRECTFB_H
 #define _ECORE_DIRECTFB_WINDOW_PREDEF
-typedef void Ecore_DirectFB_Window;
+typedef struct _Ecore_DirectFB_Window Ecore_DirectFB_Window;
 #endif
    
 #ifndef _ECORE_EVAS_PRIVATE_H
 /* basic data types */
-typedef void Ecore_Evas;
+typedef struct _Ecore_Evas Ecore_Evas;
 #endif
 
 /* module setup/shutdown calls */
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_evas/ecore_evas.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -3 -r1.32 -r1.33
--- ecore_evas.c        4 Jun 2007 09:48:27 -0000       1.32
+++ ecore_evas.c        17 Jun 2007 03:41:43 -0000      1.33
@@ -1812,6 +1812,29 @@
    ee->prop.cursor.file = NULL;
    ee->prop.cursor.object = NULL;
    ee->evas = NULL;
+   if (ee->engine.idle_flush_timer)
+     ecore_timer_del(ee->engine.idle_flush_timer);
    if (ee->engine.func->fn_free) ee->engine.func->fn_free(ee);
    free(ee);
+}
+
+static int
+_ecore_evas_cb_idle_flush(void *data)
+{
+   Ecore_Evas *ee;
+   
+   ee = (Ecore_Evas *)data;
+   evas_render_idle_flush(ee);
+   ee->engine.idle_flush_timer = NULL;
+   return 0;
+}
+
+void
+_ecore_evas_idle_timeout_update(Ecore_Evas *ee)
+{
+   if (ee->engine.idle_flush_timer)
+     ecore_timer_del(ee->engine.idle_flush_timer);
+   ee->engine.idle_flush_timer = ecore_timer_add(IDLE_FLUSH_TIME,
+                                                _ecore_evas_cb_idle_flush,
+                                                ee);
 }
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_evas/ecore_evas_buffer.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- ecore_evas_buffer.c 19 Dec 2006 15:06:23 -0000      1.15
+++ ecore_evas_buffer.c 17 Jun 2007 03:41:43 -0000      1.16
@@ -114,6 +114,7 @@
        if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(ee2);
        _ecore_evas_buffer_render(ee2);
        if (ee2->func.fn_post_render) ee2->func.fn_post_render(ee2);
+       _ecore_evas_idle_timeout_update(ee2);
      }
    if (ee->engine.buffer.image)
      {
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_evas/ecore_evas_directfb.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- ecore_evas_directfb.c       6 Apr 2007 12:28:16 -0000       1.9
+++ ecore_evas_directfb.c       17 Jun 2007 03:41:43 -0000      1.10
@@ -21,8 +21,20 @@
 static void
 _ecore_evas_directfb_render(Ecore_Evas *ee)
 {
-   Evas_List *updates;
+   Evas_List *updates, *ll;
    
+#ifdef BUILD_ECORE_EVAS_BUFFER
+   for (ll = ee->sub_ecore_evas; ll; ll = ll->next)
+     {
+       Ecore_Evas *ee2;
+       
+       ee2 = ll->data;
+       if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(ee2);
+       _ecore_evas_buffer_render(ee2);
+       if (ee2->func.fn_post_render) ee2->func.fn_post_render(ee2);
+       _ecore_evas_idle_timeout_update(ee2);
+     }
+#endif
    if (ee->func.fn_pre_render) ee->func.fn_pre_render(ee);
    updates = evas_render_updates(ee->evas);
    if (updates)
@@ -45,6 +57,8 @@
          }
        evas_render_updates_free(updates);
      }
+   if (ee->func.fn_post_render) ee->func.fn_post_render(ee);
+   _ecore_evas_idle_timeout_update(ee);
 }
 
 static int
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_evas/ecore_evas_fb.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -3 -r1.25 -r1.26
--- ecore_evas_fb.c     5 Apr 2007 12:11:23 -0000       1.25
+++ ecore_evas_fb.c     17 Jun 2007 03:41:43 -0000      1.26
@@ -229,6 +229,7 @@
          }
        else
          evas_norender(ee->evas);
+       _ecore_evas_idle_timeout_update(ee);
      }
    if (_ecore_evas_fps_debug)
      {
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_evas/ecore_evas_private.h,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -3 -r1.27 -r1.28
--- ecore_evas_private.h        13 Apr 2007 17:13:16 -0000      1.27
+++ ecore_evas_private.h        17 Jun 2007 03:41:43 -0000      1.28
@@ -59,6 +59,8 @@
 #include <Evas_Engine_Buffer.h>
 #endif
 
+#define IDLE_FLUSH_TIME 0.5
+
 typedef struct _Ecore_Evas             Ecore_Evas;
 typedef struct _Ecore_Evas_Engine      Ecore_Evas_Engine;
 typedef struct _Ecore_Evas_Engine_Func Ecore_Evas_Engine_Func;
@@ -163,6 +165,7 @@
       Ecore_DirectFB_Window *window;
    } directfb;
 #endif
+   Ecore_Timer *idle_flush_timer;
 };
   
 struct _Ecore_Evas
@@ -261,5 +264,6 @@
 void _ecore_evas_fps_debug_shutdown(void);
 void _ecore_evas_fps_debug_rendertime_add(double t);
 void _ecore_evas_free(Ecore_Evas *ee);
-
+void _ecore_evas_idle_timeout_update(Ecore_Evas *ee);
+    
 #endif
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_evas/ecore_evas_x.c,v
retrieving revision 1.103
retrieving revision 1.104
diff -u -3 -r1.103 -r1.104
--- ecore_evas_x.c      3 Jun 2007 07:07:27 -0000       1.103
+++ ecore_evas_x.c      17 Jun 2007 03:41:43 -0000      1.104
@@ -148,6 +148,7 @@
        if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(ee2);
        _ecore_evas_buffer_render(ee2);
        if (ee2->func.fn_post_render) ee2->func.fn_post_render(ee2);
+        _ecore_evas_idle_timeout_update(ee2);
      }
 #endif
    if (ee->func.fn_pre_render) ee->func.fn_pre_render(ee);
@@ -328,6 +329,7 @@
    else
      evas_norender(ee->evas);
    if (ee->func.fn_post_render) ee->func.fn_post_render(ee);
+   _ecore_evas_idle_timeout_update(ee);
 }
 
 static void



-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to