devilhorns pushed a commit to branch master.

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

    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]>
---
 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);
 }
 

-- 

------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app, & servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may

Reply via email to