Enlightenment CVS committal Author : raster Project : e17 Module : libs/ecore
Dir : e17/libs/ecore/src/lib/ecore_evas Modified Files: Ecore_Evas.h Makefile.am ecore_evas.c ecore_evas_fb.c ecore_evas_private.h ecore_evas_x.c Added Files: ecore_evas_buffer.c Log Message: ecore_evas supprot for buffers... and bingo... image objects in another evas.. so u can put an evas in an evas.. and get its pixel data or just render to raw ARGB memory too :) =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/Ecore_Evas.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- Ecore_Evas.h 25 Nov 2004 05:17:16 -0000 1.7 +++ Ecore_Evas.h 8 Jan 2005 18:40:31 -0000 1.8 @@ -52,7 +52,8 @@ { ECORE_EVAS_ENGINE_SOFTWARE_X11, ECORE_EVAS_ENGINE_SOFTWARE_FB, - ECORE_EVAS_ENGINE_GL_X11 + ECORE_EVAS_ENGINE_GL_X11, + ECORE_EVAS_ENGINE_SOFTWARE_BUFFER } Ecore_Evas_Engine_Type; #ifndef _ECORE_X_H @@ -87,6 +88,11 @@ EAPI Ecore_Evas *ecore_evas_fb_new(char *disp_name, int rotation, int w, int h); +EAPI Ecore_Evas *ecore_evas_buffer_new(int w, int h); +EAPI int *ecore_evas_buffer_pixels_get(Ecore_Evas *ee); + +EAPI Evas_Object *ecore_evas_object_image_new(Ecore_Evas *ee_target); + /* generic manipulation calls */ EAPI void ecore_evas_free(Ecore_Evas *ee); EAPI void *ecore_evas_data_get(Ecore_Evas *ee, const char *key); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/Makefile.am,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- Makefile.am 2 Nov 2004 04:03:26 -0000 1.9 +++ Makefile.am 8 Jan 2005 18:40:31 -0000 1.10 @@ -43,8 +43,9 @@ libecore_evas_la_SOURCES = \ ecore_evas.c \ ecore_evas_private.h \ +ecore_evas_x.c \ ecore_evas_fb.c \ -ecore_evas_x.c +ecore_evas_buffer.c libecore_evas_la_LIBADD = \ $(ECORE_X_LIB) \ @@ -61,7 +62,8 @@ EXTRA_DIST = \ ecore_evas.c \ +ecore_evas_private.h \ ecore_evas_x.c \ ecore_evas_fb.c \ -ecore_evas_private.h +ecore_evas_buffer.c =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/ecore_evas.c,v retrieving revision 1.17 retrieving revision 1.18 diff -u -3 -r1.17 -r1.18 --- ecore_evas.c 22 Oct 2004 03:41:48 -0000 1.17 +++ ecore_evas.c 8 Jan 2005 18:40:31 -0000 1.18 @@ -40,6 +40,13 @@ return 0; #endif break; + case ECORE_EVAS_ENGINE_SOFTWARE_BUFFER: +#ifdef BUILD_ECORE_EVAS_BUFFER + return 1; +#else + return 0; +#endif + break; default: return 0; break; @@ -79,6 +86,9 @@ #ifdef BUILD_ECORE_EVAS_FB while (_ecore_evas_fb_shutdown()); #endif +#ifdef BUILD_ECORE_EVAS_BUFFER + while (_ecore_evas_buffer_shutdown()); +#endif evas_shutdown(); } if (_ecore_evas_init_count < 0) _ecore_evas_init_count = 0; @@ -101,6 +111,10 @@ return; } ECORE_MAGIC_SET(ee, ECORE_MAGIC_NONE); + while (ee->sub_ecore_evas) + { + ecore_evas_free(ee->sub_ecore_evas->data); + } if (ee->data) evas_hash_free(ee->data); if (ee->driver) free(ee->driver); if (ee->name) free(ee->name); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/ecore_evas_fb.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- ecore_evas_fb.c 14 Dec 2004 03:21:42 -0000 1.9 +++ ecore_evas_fb.c 8 Jan 2005 18:40:31 -0000 1.10 @@ -186,7 +186,22 @@ ee = (Ecore_Evas *)l; if (ee->visible) { +#ifdef BUILD_ECORE_EVAS_BUFFER + Evas_List *ll; +#endif + if (ee->func.fn_pre_render) ee->func.fn_pre_render(ee); +#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); + } +#endif evas_render(ee->evas); if (ee->func.fn_post_render) ee->func.fn_post_render(ee); } @@ -481,8 +496,8 @@ ee->w = w; ee->h = h; - ee->prop.max.w = 240; - ee->prop.max.h = 320; + ee->prop.max.w = 0; + ee->prop.max.h = 0; ee->prop.layer = 0; ee->prop.focused = 1; ee->prop.borderless = 1; =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/ecore_evas_private.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- ecore_evas_private.h 23 Nov 2004 15:17:54 -0000 1.8 +++ ecore_evas_private.h 8 Jan 2005 18:40:31 -0000 1.9 @@ -25,6 +25,9 @@ #ifdef BUILD_ECORE_EVAS_FB #include <Evas_Engine_FB.h> #endif +#ifdef BUILD_ECORE_EVAS_BUFFER +#include <Evas_Engine_Buffer.h> +#endif typedef struct _Ecore_Evas Ecore_Evas; typedef struct _Ecore_Evas_Engine Ecore_Evas_Engine; @@ -94,6 +97,12 @@ int real_h; } fb; #endif +#ifdef BUILD_ECORE_EVAS_BUFFER + struct { + void *pixels; + Evas_Object *image; + } buffer; +#endif }; struct _Ecore_Evas @@ -165,6 +174,7 @@ } func; Ecore_Evas_Engine engine; + Evas_List *sub_ecore_evas; }; #ifdef BUILD_ECORE_X @@ -173,6 +183,10 @@ #ifdef BUILD_ECORE_EVAS_FB int _ecore_evas_fb_shutdown(void); #endif +#ifdef BUILD_ECORE_EVAS_BUFFER +int _ecore_evas_buffer_shutdown(void); +void _ecore_evas_buffer_render(Ecore_Evas *ee); +#endif void _ecore_evas_fps_debug_init(void); void _ecore_evas_fps_debug_shutdown(void); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/ecore_evas_x.c,v retrieving revision 1.30 retrieving revision 1.31 diff -u -3 -r1.30 -r1.31 --- ecore_evas_x.c 14 Dec 2004 03:21:42 -0000 1.30 +++ ecore_evas_x.c 8 Jan 2005 18:40:32 -0000 1.31 @@ -451,9 +451,23 @@ for (l = (Ecore_Oldlist *)ecore_evases; l; l = l->next) { Ecore_Evas *ee; +#ifdef BUILD_ECORE_EVAS_BUFFER + Evas_List *ll; +#endif ee = (Ecore_Evas *)l; if (ee->func.fn_pre_render) ee->func.fn_pre_render(ee); +#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); + } +#endif if (ee->prop.avoid_damage) { Evas_List *updates, *l; ------------------------------------------------------- The SF.Net email is sponsored by: Beat the post-holiday blues Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs