hello,

what do you think about a "Wallpaper Engine" item in the Engine config
panel that would set the e_config->evas_engine_container, so we can
configure the evas engine for the wallpaper separately ?
it's usefull for me because xrender has problems rendering all kind of
things in enlightenment, but for the background it does a very good
job.

other engine options are in the configuration, and marked as "maybe
remove ?"; i'd vote for removal. i'm ok to take care of it.

laurent
Index: trunk/e/src/bin/e_config.h
===================================================================
--- trunk/e/src/bin/e_config.h	(revision 45914)
+++ trunk/e/src/bin/e_config.h	(working copy)
@@ -84,7 +84,7 @@
    int         show_desktop_icons; // GUI
    int         edge_flip_dragging; // GUI
    int         evas_engine_default; // GUI
-   int         evas_engine_container; // NO GUI - maybe remove?
+   int         evas_engine_container; // GUI
    int         evas_engine_init; // NO GUI - maybe remove?
    int         evas_engine_menus; // NO GUI - maybe remove?
    int         evas_engine_borders; // NO GUI - maybe remove?
Index: trunk/e/src/modules/conf_engine/e_int_config_engine.c
===================================================================
--- trunk/e/src/modules/conf_engine/e_int_config_engine.c	(revision 45914)
+++ trunk/e/src/modules/conf_engine/e_int_config_engine.c	(working copy)
@@ -6,6 +6,9 @@
 static int   _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
 static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
 static int   _basic_check_changed(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
+static int   _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
+static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
+static int   _advanced_check_changed(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
 static void _cb_composite_change(void *data, Evas_Object *obj);
 static void _cb_confirm_yes(void *data);
 static void _cb_confirm_no(void *data);
@@ -16,6 +19,7 @@
 
    int use_composite;
    int evas_engine_default;
+   int evas_engine_container;
    Evas_Object *o_composite;
 };
 
@@ -33,6 +37,9 @@
    v->basic.apply_cfdata = _basic_apply_data;
    v->basic.create_widgets = _basic_create_widgets;
    v->basic.check_changed = _basic_check_changed;
+   v->advanced.apply_cfdata = _advanced_apply_data;
+   v->advanced.create_widgets = _advanced_create_widgets;
+   v->advanced.check_changed = _advanced_check_changed;
 
    cfd = e_config_dialog_new(con,
 			     _("Engine Settings"),
@@ -57,6 +64,7 @@
 {
    cfdata->use_composite = e_config->use_composite;
    cfdata->evas_engine_default = e_config->evas_engine_default;
+   cfdata->evas_engine_container = e_config->evas_engine_container;
 }
 
 static void
@@ -117,6 +125,75 @@
    return o;
 }
 
+static int
+_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
+{
+   e_config->use_composite = cfdata->use_composite;
+   e_config->evas_engine_default = cfdata->evas_engine_default;
+   e_config->evas_engine_container = cfdata->evas_engine_container;
+   e_config_save_queue();
+   return 1;
+}
+
+static int
+_advanced_check_changed(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
+{
+   return !((cfdata->use_composite == e_config->use_composite) &&
+	    (cfdata->evas_engine_default == e_config->evas_engine_default) &&
+	    (cfdata->evas_engine_container == e_config->evas_engine_container));
+}
+
+static Evas_Object *
+_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
+{
+   Evas_Object *o, *ob, *of;
+   E_Radio_Group *rg;
+   Eina_List *l;
+   int engine;
+
+   o = e_widget_list_add(evas, 0, 0);
+
+   of = e_widget_framelist_add(evas, _("General Settings"), 0);
+   ob = e_widget_check_add(evas, _("Enable Composite"),
+			   &(cfdata->use_composite));
+   cfdata->o_composite = ob;
+   e_widget_on_change_hook_set(ob, _cb_composite_change, cfdata);
+   e_widget_framelist_object_append(of, ob);
+   e_widget_list_object_append(o, of, 1, 1, 0.5);
+
+   of = e_widget_framelist_add(evas, _("Default Engine"), 0);
+   rg = e_widget_radio_group_new(&(cfdata->evas_engine_default));
+   for (l = e_config_engine_list(); l; l = l->next)
+     {
+        if (!strcmp("SOFTWARE", l->data)) engine = E_EVAS_ENGINE_SOFTWARE_X11;
+        else if (!strcmp("GL", l->data)) engine = E_EVAS_ENGINE_GL_X11;
+        else if (!strcmp("XRENDER", l->data)) engine = E_EVAS_ENGINE_XRENDER_X11;
+        else if (!strcmp("SOFTWARE_16", l->data)) engine = E_EVAS_ENGINE_SOFTWARE_X11_16;
+	else continue;
+        ob = e_widget_radio_add(evas, _(l->data), engine, rg);
+        e_widget_framelist_object_append(of, ob);
+     }
+   e_widget_list_object_append(o, of, 1, 1, 0.5);
+
+   of = e_widget_framelist_add(evas, _("Wallpaper Engine"), 0);
+   rg = e_widget_radio_group_new(&(cfdata->evas_engine_container));
+   ob = e_widget_radio_add(evas, _("Use default"), E_EVAS_ENGINE_DEFAULT, rg);
+   e_widget_framelist_object_append(of, ob);
+   for (l = e_config_engine_list(); l; l = l->next)
+     {
+        if (!strcmp("SOFTWARE", l->data)) engine = E_EVAS_ENGINE_SOFTWARE_X11;
+        else if (!strcmp("GL", l->data)) engine = E_EVAS_ENGINE_GL_X11;
+        else if (!strcmp("XRENDER", l->data)) engine = E_EVAS_ENGINE_XRENDER_X11;
+        else if (!strcmp("SOFTWARE_16", l->data)) engine = E_EVAS_ENGINE_SOFTWARE_X11_16;
+	else continue;
+        ob = e_widget_radio_add(evas, _(l->data), engine, rg);
+        e_widget_framelist_object_append(of, ob);
+     }
+   e_widget_list_object_append(o, of, 1, 1, 0.5);
+
+   e_dialog_resizable_set(cfd->dia, 0);
+   return o;
+}
 static void
 _cb_composite_change(void *data, Evas_Object *obj)
 {
------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to