$OpenBSD: patch-plugins_xrandr_gsd-xrandr-manager_c,v 1.3 2013/01/23 19:02:15 ajacoutot Exp $

From b4ed1323cad845212fda4c374003c4b4bb1c5616 Mon Sep 17 00:00:00 2001
From: Matthias Clasen <mclasen@redhat.com>
Date: Wed, 23 Jan 2013 10:52:50 +0000
Subject: xrandr: Don't operate on a NULL object

--- plugins/xrandr/gsd-xrandr-manager.c.orig	Thu Jan 10 14:37:58 2013
+++ plugins/xrandr/gsd-xrandr-manager.c	Wed Jan 23 19:12:05 2013
@@ -879,6 +879,8 @@ make_clone_setup (GsdXrandrManager *manager, GnomeRRSc
                 return NULL;
 
         result = gnome_rr_config_new_current (screen, NULL);
+        gnome_rr_config_set_clone (result, TRUE);
+
         outputs = gnome_rr_config_get_outputs (result);
 
         for (i = 0; outputs[i] != NULL; ++i) {
@@ -920,8 +922,6 @@ make_clone_setup (GsdXrandrManager *manager, GnomeRRSc
                 result = NULL;
         }
 
-        gnome_rr_config_set_clone (result, TRUE);
-
         print_configuration (result, "clone setup");
 
         return result;
@@ -1003,6 +1003,8 @@ make_laptop_setup (GsdXrandrManager *manager, GnomeRRS
         GnomeRROutputInfo **outputs = gnome_rr_config_get_outputs (result);
         int i;
 
+        gnome_rr_config_set_clone (result, FALSE);
+
         for (i = 0; outputs[i] != NULL; ++i) {
                 GnomeRROutputInfo *info = outputs[i];
 
@@ -1018,13 +1020,12 @@ make_laptop_setup (GsdXrandrManager *manager, GnomeRRS
                 }
         }
 
+
         if (config_is_all_off (result)) {
                 g_object_unref (G_OBJECT (result));
                 result = NULL;
         }
 
-        gnome_rr_config_set_clone (result, FALSE);
-
         print_configuration (result, "Laptop setup");
 
         /* FIXME - Maybe we should return NULL if there is more than
@@ -1137,6 +1138,8 @@ make_xinerama_setup (GsdXrandrManager *manager, GnomeR
         int i;
         int x;
 
+        gnome_rr_config_set_clone (result, FALSE);
+
         x = 0;
         for (i = 0; outputs[i] != NULL; ++i) {
                 GnomeRROutputInfo *info = outputs[i];
@@ -1165,8 +1168,6 @@ make_xinerama_setup (GsdXrandrManager *manager, GnomeR
                 result = NULL;
         }
 
-        gnome_rr_config_set_clone (result, FALSE);
-
         print_configuration (result, "xinerama setup");
 
         return result;
@@ -1183,6 +1184,8 @@ make_other_setup (GnomeRRScreen *screen)
         GnomeRROutputInfo **outputs = gnome_rr_config_get_outputs (result);
         int i;
 
+        gnome_rr_config_set_clone (result, FALSE);
+
         for (i = 0; outputs[i] != NULL; ++i) {
                 GnomeRROutputInfo *info = outputs[i];
 
@@ -1199,8 +1202,6 @@ make_other_setup (GnomeRRScreen *screen)
                 g_object_unref (G_OBJECT (result));
                 result = NULL;
         }
-
-        gnome_rr_config_set_clone (result, FALSE);
 
         print_configuration (result, "other setup");
 
