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