Enlightenment CVS committal Author : ningerso Project : e17 Module : libs/ewl
Dir : e17/libs/ewl/src/lib Modified Files: ewl_embed.c ewl_engines.c ewl_engines.h ewl_misc.c Log Message: Move Edje specific code into the evas engine. =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_embed.c,v retrieving revision 1.123 retrieving revision 1.124 diff -u -3 -r1.123 -r1.124 --- ewl_embed.c 25 Jul 2007 17:01:00 -0000 1.123 +++ ewl_embed.c 31 Jul 2007 18:35:47 -0000 1.124 @@ -1762,6 +1762,11 @@ DCHECK_PARAM_PTR("e", e); DCHECK_TYPE("e", e, EWL_EMBED_TYPE); + /* + * Global freeze on theme events while theme's are being manipulated. + */ + ewl_engine_theme_freeze(e); + ewl_engine_canvas_freeze(e); DLEAVE_FUNCTION(DLEVEL_STABLE); @@ -1779,6 +1784,10 @@ DCHECK_PARAM_PTR("e", e); DCHECK_TYPE("e", e, EWL_EMBED_TYPE); + /* + * Thaw the theme and canvas for this embed. + */ + ewl_engine_theme_thaw(e); ewl_engine_canvas_thaw(e); DLEAVE_FUNCTION(DLEVEL_STABLE); @@ -1803,6 +1812,7 @@ DCHECK_TYPE("w", w, EWL_EMBED_TYPE); emb = EWL_EMBED(w); + ewl_embed_freeze(emb); if (!emb->ev_clip) { =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_engines.c,v retrieving revision 1.45 retrieving revision 1.46 diff -u -3 -r1.45 -r1.46 --- ewl_engines.c 25 Jul 2007 17:01:00 -0000 1.45 +++ ewl_engines.c 31 Jul 2007 18:35:47 -0000 1.46 @@ -1152,23 +1152,55 @@ } /** + * @param embed: Embed used to lookup the current theme key. + * @return Returns no value + * @brief Fetch data from the theme system + */ +char * +ewl_engine_theme_data_get(Ewl_Widget *w, char *key) +{ + Ewl_Embed *embed; + Ewl_Engine_Cb_Theme_Data_Get theme_data_get; + char *value = NULL; + + DENTER_FUNCTION(DLEVEL_STABLE); + DCHECK_PARAM_PTR_RET("w", w, NULL); + DCHECK_TYPE_RET("w", w, EWL_WIDGET_TYPE, NULL); + + embed = ewl_embed_widget_find(w); + if (embed) { + theme_data_get = ewl_engine_hook_get(embed, + EWL_ENGINE_HOOK_TYPE_THEME, + EWL_ENGINE_THEME_DATA_GET); + if (theme_data_get) + value = theme_data_get(ewl_theme_path_get(), key); + } + + DRETURN_PTR(value, DLEVEL_STABLE); +} + +/** * @return Returns a new object group on success, NULL on failure * @brief Create a grouping for theme objects. */ void * ewl_engine_theme_widget_group(Ewl_Widget *w) { + Ewl_Embed *embed; Ewl_Engine_Cb_Theme_Widget_Group theme_widget_group; DENTER_FUNCTION(DLEVEL_STABLE); DCHECK_PARAM_PTR_RET("w", w, NULL); DCHECK_TYPE_RET("w", w, EWL_WIDGET_TYPE, NULL); - theme_widget_group = ewl_engine_hook_get(EWL_EMBED(w), - EWL_ENGINE_HOOK_TYPE_THEME, - EWL_ENGINE_THEME_WIDGET_GROUP); - if (theme_widget_group) - DRETURN_PTR(theme_widget_group(w), DLEVEL_STABLE); + embed = ewl_embed_widget_find(w); + if (embed) { + theme_widget_group = ewl_engine_hook_get(embed, + EWL_ENGINE_HOOK_TYPE_THEME, + EWL_ENGINE_THEME_WIDGET_GROUP); + if (theme_widget_group) + DRETURN_PTR(theme_widget_group(w), DLEVEL_STABLE); + } DRETURN_PTR(NULL, DLEVEL_STABLE); } =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_engines.h,v retrieving revision 1.27 retrieving revision 1.28 diff -u -3 -r1.27 -r1.28 --- ewl_engines.h 18 May 2007 21:24:35 -0000 1.27 +++ ewl_engines.h 31 Jul 2007 18:35:47 -0000 1.28 @@ -215,6 +215,10 @@ void ewl_engine_canvas_damage_add(Ewl_Embed *embed, int x, int y, int w, int h); +void ewl_engine_theme_freeze(Ewl_Embed *embed); +void ewl_engine_theme_thaw(Ewl_Embed *embed); +char *ewl_engine_theme_data_get(Ewl_Widget *w, char *key); + int ewl_engine_pointer_data_new(Ewl_Embed *embed, unsigned int *data, int w, int h); void ewl_engine_pointer_free(Ewl_Embed *embed, int pointer); @@ -280,7 +284,7 @@ int x, int y, int w, int h); typedef void (*Ewl_Engine_Cb_Theme_Freeze)(); typedef void (*Ewl_Engine_Cb_Theme_Thaw)(); -typedef char *(*Ewl_Engine_Cb_Theme_Data_Get)(char *path, char *key); +typedef char *(*Ewl_Engine_Cb_Theme_Data_Get)(const char *path, char *key); typedef void *(*Ewl_Engine_Cb_Theme_Widget_Group)(Ewl_Widget *w); typedef void *(*Ewl_Engine_Cb_Theme_Object_Add)(Ewl_Embed *embed); typedef void (*Ewl_Engine_Cb_Theme_Object_Del)(void *obj); =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_misc.c,v retrieving revision 1.100 retrieving revision 1.101 diff -u -3 -r1.100 -r1.101 --- ewl_misc.c 25 Jul 2007 17:01:00 -0000 1.100 +++ ewl_misc.c 31 Jul 2007 18:35:47 -0000 1.101 @@ -145,8 +145,6 @@ int ewl_init(int *argc, char **argv) { - int frozen = FALSE; - DENTER_FUNCTION(DLEVEL_STABLE); /* check if we are already initialized */ @@ -195,12 +193,6 @@ } ecore_list_prepend(shutdown_queue, edje_shutdown); - /* - * Global freeze on edje events while edje's are being manipulated. - */ - edje_freeze(); - frozen = TRUE; - reveal_list = ecore_list_new(); obscure_list = ecore_list_new(); configure_active = ecore_list_new(); @@ -304,7 +296,6 @@ DRETURN_INT(ewl_init_count, DLEVEL_STABLE); ERROR: - if (frozen) edje_thaw(); ewl_shutdown(); DRETURN_INT(ewl_init_count, DLEVEL_STABLE); @@ -450,7 +441,8 @@ */ ecore_list_first_goto(ewl_embed_list); while ((emb = ecore_list_next(ewl_embed_list)) != NULL) - ewl_embed_freeze(emb); + if (REALIZED(emb)) + ewl_embed_freeze(emb); /* * Clean out the unused widgets first, to avoid them being drawn or @@ -495,11 +487,6 @@ } /* - * Our work is done, allow edje events to be triggered. - */ - edje_thaw(); - - /* * Allow each embed to render itself, this requires thawing the evas. */ ecore_list_first_goto(ewl_embed_list); @@ -521,11 +508,6 @@ ecore_time_get() - render_time); } } - - /* - * Global freeze on edje events while edje's are being manipulated. - */ - edje_freeze(); DRETURN_INT(TRUE, DLEVEL_STABLE); } ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs