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