Enlightenment CVS committal

Author  : sebastid
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/modules/randr


Modified Files:
        e_mod_main.c e_mod_main.h 


Log Message:
Fix storing data for randr module.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/randr/e_mod_main.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- e_mod_main.c        25 Aug 2005 13:17:55 -0000      1.4
+++ e_mod_main.c        25 Aug 2005 13:55:15 -0000      1.5
@@ -20,6 +20,7 @@
 static void _randr_menu_cb_resolution_change(void *data, E_Menu *m, 
E_Menu_Item *mi);
 
 static E_Config_DD *conf_edd;
+static E_Config_DD *conf_manager_edd;
 
 void *
 e_modapi_init(E_Module *m)
@@ -69,7 +70,9 @@
 int
 e_modapi_info(E_Module *m)
 {
+   /*
    char buf[4096];
+   */
    
    m->label = strdup(_("Randr"));
    /*
@@ -95,17 +98,50 @@
    e = E_NEW(Randr, 1);
    if (!e) return NULL;
    
+   conf_manager_edd = E_CONFIG_DD_NEW("Randr_Config_Manager", Config_Manager);
+#undef T
+#undef D
+#define T Config_Manager
+#define D conf_manager_edd
+   E_CONFIG_VAL(D, T, manager, INT);
+   E_CONFIG_VAL(D, T, width, INT);
+   E_CONFIG_VAL(D, T, height, INT);
+
    conf_edd = E_CONFIG_DD_NEW("Randr_Config", Config);
 #undef T
 #undef D
 #define T Config
 #define D conf_edd
    E_CONFIG_VAL(D, T, store, INT);
-   E_CONFIG_VAL(D, T, width, INT);
-   E_CONFIG_VAL(D, T, height, INT);
+   E_CONFIG_LIST(D, T, managers, conf_manager_edd);
    
    e->conf = e_config_domain_load("module.randr", conf_edd);
-   if (!e->conf) e->conf = E_NEW(Config, 1);
+   if (!e->conf)
+     {
+               e->conf = E_NEW(Config, 1);
+       e->conf->store = 1;
+     }
+   else if ((e->conf->store) && (e->conf->managers))
+     {
+       /* Restore resoultion */
+       Evas_List *l;
+       Ecore_X_Screen_Size size;
+
+       for (l = e->conf->managers; l; l = l->next)
+         {
+            E_Manager *man;
+            Config_Manager *cm;
+
+            cm = l->data;
+            man = e_manager_number_get(cm->manager);
+            if (man)
+              {
+                 size.width = cm->width;
+                 size.height = cm->height;
+                 ecore_x_randr_screen_size_set(man->root, size);
+              }
+         }
+     }
    
    _randr_config_menu_new(e);
 
@@ -119,13 +155,19 @@
 static void
 _randr_free(Randr *e)
 {
+   Evas_List *l;
+
    E_CONFIG_DD_FREE(conf_edd);
+   E_CONFIG_DD_FREE(conf_manager_edd);
    
    e_object_del(E_OBJECT(e->config_menu));
    if (e->resolution_menu)
      e_object_del(E_OBJECT(e->resolution_menu));
    
    e_int_menus_menu_augmentation_del("config", e->augmentation);
+   for (l = e->conf->managers; l; l = l->next)
+     free(l->data);
+   evas_list_free(e->conf->managers);
    free(e->conf);
    free(e);
 }
@@ -221,11 +263,38 @@
 {
    Randr *e;
    Ecore_X_Screen_Size size;
+   Config_Manager *cm = NULL;
+   Evas_List *l;
    
    e = data;
    if (sscanf(mi->label, "%dx%d", &size.width, &size.height) != 2) return;
    ecore_x_randr_screen_size_set(m->zone->container->manager->root, size);
 
-   e->conf->width = size.width;
-   e->conf->height = size.height;
+   /* Find this manager config */
+   for (l = e->conf->managers; l; l = l->next)
+     {
+       Config_Manager *current;
+
+       current = l->data;
+       if (current->manager == m->zone->container->manager->num)
+         {
+            cm = current;
+            break;
+         }
+     }
+   /* If not found, create new config */
+   if (!cm)
+     {
+       cm = E_NEW(Config_Manager, 1);
+       if (cm)
+         e->conf->managers = evas_list_append(e->conf->managers, cm);
+     }
+   /* Save config */
+   if (cm)
+     {
+       cm->manager = m->zone->container->manager->num;
+       cm->width = size.width;
+       cm->height = size.height;
+     }
+   e_config_save_queue();
 }
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/randr/e_mod_main.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- e_mod_main.h        23 Aug 2005 10:26:44 -0000      1.2
+++ e_mod_main.h        25 Aug 2005 13:55:15 -0000      1.3
@@ -4,12 +4,19 @@
 #ifndef E_MOD_MAIN_H
 #define E_MOD_MAIN_H
 
-typedef struct _Config      Config;
-typedef struct _Randr       Randr;
+typedef struct _Config         Config;
+typedef struct _Config_Manager Config_Manager;
+typedef struct _Randr          Randr;
 
 struct _Config
 {
    int store;
+   Evas_List *managers;
+};
+
+struct _Config_Manager
+{
+   int manager;
    int width;
    int height;
 };




-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to