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
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs