princeamd pushed a commit to branch enlightenment-0.17.

commit 0f067cb391a819737b41b63464f55f81fa08b3d5
Author: Chris Michael <[email protected]>
Date:   Fri May 24 18:42:45 2013 +0100

    Backport: 04936b2 :: Set primary output before crtc settings. If the 
primary output saved in config does not exist, then set primary to the first 
output.
    
    Signed-off-by: Chris Michael <[email protected]>
    Signed-off-by: Deon Thomas <[email protected]>
---
 src/bin/e_randr.c | 35 ++++++++++++++++++++++++-----------
 1 file changed, 24 insertions(+), 11 deletions(-)

diff --git a/src/bin/e_randr.c b/src/bin/e_randr.c
index 4aa79b6..7b54935 100644
--- a/src/bin/e_randr.c
+++ b/src/bin/e_randr.c
@@ -524,9 +524,32 @@ _e_randr_config_restore(void)
 
                   if (ocount > 0)
                     {
-                       Ecore_X_Randr_Output *couts;
+                       Ecore_X_Randr_Output *couts, primary = 0;
                        Eina_List *o;
                        E_Randr_Output_Config *out;
+                       Eina_Bool primary_set = EINA_FALSE;
+
+                       /* get the current primary output */
+                       primary = ecore_x_randr_primary_output_get(root);
+                       EINA_LIST_FOREACH(valid_outputs, o, out)
+                         {
+                            if ((out->primary) && 
+                                ((int)out->xid == e_randr_cfg->primary))
+                              {
+                                 ecore_x_randr_primary_output_set(root, 
out->xid);
+                                 primary_set = EINA_TRUE;
+                                 break;
+                              }
+                         }
+
+                       if (!primary_set)
+                         {
+                            /* if no primary was set, set it to the first 
output */
+                            out = eina_list_nth(valid_outputs, 0);
+                            ecore_x_randr_primary_output_set(root, out->xid);
+                            e_randr_cfg->primary = (int)out->xid;
+                            e_randr_config_save();
+                         }
 
                        couts = malloc(ocount * sizeof(Ecore_X_Randr_Output));
                        EINA_LIST_FOREACH(valid_outputs, o, out)
@@ -550,14 +573,6 @@ _e_randr_config_restore(void)
                                                        crtc_cfg->mode, 
                                                        crtc_cfg->orient);
 
-                       EINA_LIST_FOREACH(valid_outputs, o, out)
-                         if ((out->primary) && 
-                             ((int)out->xid == e_randr_cfg->primary))
-                           {
-                              ecore_x_randr_primary_output_set(root, out->xid);
-                              break;
-                           }
-
                        free(couts);
                     }
                }
@@ -566,8 +581,6 @@ _e_randr_config_restore(void)
         eina_list_free(valid_crtcs);
      }
 
-//   e_randr_config_save();
-
 //   if (need_reset) ecore_x_randr_screen_reset(root);
 }
 

-- 

------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev

Reply via email to