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

Reply via email to