Hi guys,

this is a little patch for e_randr related stuff.

- replace the saving of a monitor's EDID with a hash of it.
- rename a variable name


BR,

Leif
diff --git a/e/src/bin/e_config.c b/e/src/bin/e_config.c
index 2b33ef0..f34b670 100644
--- a/e/src/bin/e_config.c
+++ b/e/src/bin/e_config.c
@@ -70,6 +70,7 @@ static E_Config_DD *_e_config_eina_rectangle_edd = NULL;
 static E_Config_DD *_e_config_screen_info_edd = NULL;
 static E_Config_DD *_e_config_screen_restore_info_11_edd = NULL;
 static E_Config_DD *_e_config_screen_restore_info_12_edd = NULL;
+static E_Config_DD *_e_config_screen_output_edid_hash_edd = NULL;
 static E_Config_DD *_e_config_screen_output_restore_info_edd = NULL;
 static E_Config_DD *_e_config_screen_crtc_restore_info_edd = NULL;
 
@@ -540,15 +541,22 @@ e_config_init(void)
    E_CONFIG_VAL(D, T, w, INT);
    E_CONFIG_VAL(D, T, h, INT);
 
+      _e_config_screen_output_edid_hash_edd = E_CONFIG_DD_NEW("E_Randr_Output_Edid_Hash", E_Randr_Output_Edid_Hash);
+#undef T
+#undef D
+#define T E_Randr_Output_Edid_Hash
+#define D _e_config_screen_output_edid_hash_edd
+   E_CONFIG_VAL(D, T, hash, INT);
+
    // FIXME: need to totally re-do this randr config stuff - remove the
    // union stuff. do this differently to not use unions really. not
    // intended for how it is used here really.
-    _e_config_screen_output_restore_info_edd = E_CONFIG_DD_NEW("E_Randr_Output_Restore_Info", Eina_Rectangle);
+    _e_config_screen_output_restore_info_edd = E_CONFIG_DD_NEW("E_Randr_Output_Restore_Info", E_Randr_Output_Restore_Info);
 #undef T
 #undef D
 #define T E_Randr_Output_Restore_Info
 #define D _e_config_screen_output_restore_info_edd
-   E_CONFIG_VAL(D, T, edid, STR);
+   E_CONFIG_SUB(D, T, edid_hash, _e_config_screen_output_edid_hash_edd);
    E_CONFIG_VAL(D, T, backlight_level, DOUBLE);
 
   _e_config_screen_crtc_restore_info_edd = E_CONFIG_DD_NEW("E_Randr_Crtc_Restore_Info", E_Randr_Crtc_Restore_Info);
@@ -566,6 +574,8 @@ e_config_init(void)
 #define T E_Randr_Screen_Restore_Info_12
 #define D _e_config_screen_restore_info_12_edd
    E_CONFIG_LIST(D, T, crtcs, _e_config_screen_crtc_restore_info_edd);
+   E_CONFIG_LIST(D, T, outputs_edid_hashes, _e_config_screen_output_edid_hash_edd);
+   E_CONFIG_VAL(D, T, noutputs, INT);
    E_CONFIG_VAL(D, T, output_policy, INT);
    E_CONFIG_VAL(D, T, alignment, INT);
 
diff --git a/e/src/bin/e_config.h b/e/src/bin/e_config.h
index 1880c5a..5c7172b 100644
--- a/e/src/bin/e_config.h
+++ b/e/src/bin/e_config.h
@@ -32,7 +32,7 @@ typedef struct _E_Event_Config_Icon_Theme   E_Event_Config_Icon_Theme;
 /* increment this whenever a new set of config values are added but the users
  * config doesn't need to be wiped - simply new values need to be put in
  */
-#define E_CONFIG_FILE_GENERATION 0x0140
+#define E_CONFIG_FILE_GENERATION 0x0141
 #define E_CONFIG_FILE_VERSION    ((E_CONFIG_FILE_EPOCH << 16) | E_CONFIG_FILE_GENERATION)
 
 #define E_EVAS_ENGINE_DEFAULT         0
diff --git a/e/src/bin/e_randr.c b/e/src/bin/e_randr.c
index ee1da22..e8e2703 100644
--- a/e/src/bin/e_randr.c
+++ b/e/src/bin/e_randr.c
@@ -447,7 +447,7 @@ _e_randr_output_info_new(int nrequested)
         .possible_crtcs = NULL,
         .preferred_modes = NULL,
         .max_backlight = Ecore_X_Randr_Unset,
-        .current_backlight = Ecore_X_Randr_Unset,
+        .backlight_level = 0.0,
         .edid = NULL,
         .edid_length = 0,
         .size_mm = {Ecore_X_Randr_Unset, Ecore_X_Randr_Unset},
@@ -1058,7 +1058,8 @@ _e_randr_config_find_suiting_config_11(E_Randr_Screen_Restore_Info_11 **restore_
 
    EINA_LIST_FOREACH(e_config->screen_info, cfg_screen_restore_info_iter, screen_restore_info)
      {
-	if (!screen_restore_info) continue ;
+        /* 'screen_restore_info' should _never_ be NULL, since this functions shouldn't be called due to randr init failing. */
+	if (!screen_restore_info) continue;
         if (screen_restore_info->randr_version != ECORE_X_RANDR_1_1) continue;
         restore_info_11 = screen_restore_info->rrvd_restore_info.restore_info_11;
         if((sizes = ecore_x_randr_screen_primary_output_sizes_get(e_randr_screen_info->root, &nsizes)))
@@ -1135,7 +1136,8 @@ _e_randr_outputs_to_array(Eina_List *outputs_info)
 
    if (!outputs_info || !(ret = malloc(sizeof(Ecore_X_Randr_Output) * eina_list_count(outputs_info)))) return NULL;
    EINA_LIST_FOREACH(outputs_info, output_iter, output_info)
-     ret[i++] = output_info ? output_info->xid : 0;
+     /* output_info == NULL should _not_ be possible! */
+     ret[i++] = output_info ? output_info->xid : Ecore_X_Randr_None;
    return ret;
 }
 
diff --git a/e/src/bin/e_randr.h b/e/src/bin/e_randr.h
index 7fca68d..b4bdffb 100644
--- a/e/src/bin/e_randr.h
+++ b/e/src/bin/e_randr.h
@@ -6,6 +6,7 @@ typedef struct _E_Randr_Screen_Info_11 E_Randr_Screen_Info_11;
 typedef struct _E_Randr_Screen_Info_12 E_Randr_Screen_Info_12;
 typedef union _E_Randr_Screen_RRVD_Info E_Randr_Screen_RRVD_Info;
 typedef struct _E_Randr_Screen_Info E_Randr_Screen_Info;
+typedef struct _E_Randr_Output_Edid_Hash E_Randr_Output_Edid_Hash;
 typedef struct _E_Randr_Output_Restore_Info E_Randr_Output_Restore_Info;
 typedef struct _E_Randr_Crtc_Restore_Info E_Randr_Crtc_Restore_Info;
 typedef struct _E_Randr_Screen_Restore_Info_11 E_Randr_Screen_Restore_Info_11;
@@ -56,12 +57,12 @@ struct _E_Randr_Output_Info
    unsigned char *edid;
    unsigned long edid_length;
    int max_backlight;
-   double current_backlight;
+   double backlight_level;
    Ecore_X_Render_Subpixel_Order subpixel_order;
    Eina_List *compatible_outputs;
 };
 
-struct _E_Randr_Screen_Info_11 
+struct _E_Randr_Screen_Info_11
 {
    //List of Ecore_X_Randr_Screen_Size_MM*
    Eina_List *sizes;
@@ -101,13 +102,17 @@ struct _E_Randr_Screen_Info
 };
 
 //Following stuff is just for configuration purposes
-struct _E_Randr_Output_Restore_Info 
+struct _E_Randr_Output_Edid_Hash {
+   int hash;
+};
+
+struct _E_Randr_Output_Restore_Info
 {
-   const char *edid;
+   E_Randr_Output_Edid_Hash edid_hash;
    double backlight_level;
 };
 
-struct _E_Randr_Crtc_Restore_Info 
+struct _E_Randr_Crtc_Restore_Info
 {
    Eina_Rectangle geometry;
    Ecore_X_Randr_Orientation orientation;
@@ -124,6 +129,8 @@ struct _E_Randr_Screen_Restore_Info_11
 
 struct _E_Randr_Screen_Restore_Info_12 
 {
+   Eina_List *outputs_edid_hashes;
+   int noutputs;
    Eina_List *crtcs;
    Ecore_X_Randr_Output_Policy output_policy;
    Ecore_X_Randr_Relative_Alignment alignment;
------------------------------------------------------------------------------
This SF.net email is sponsored by 

Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev 
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to