xrandr: Don't operate on a NULL object.

This commit is contained in:
ajacoutot 2013-01-23 19:02:15 +00:00
parent 3f1c4aa554
commit 9cfbd463e2
2 changed files with 90 additions and 2 deletions

@ -1,4 +1,4 @@
# $OpenBSD: Makefile,v 1.90 2013/01/18 07:22:27 ajacoutot Exp $
# $OpenBSD: Makefile,v 1.91 2013/01/23 19:02:15 ajacoutot Exp $
SHARED_ONLY= Yes
@ -6,6 +6,7 @@ COMMENT= GNOME settings daemon
GNOME_PROJECT= gnome-settings-daemon
GNOME_VERSION= 3.6.4
REVISION= 0
# GPLv3
PERMIT_PACKAGE_CDROM= Yes
@ -13,7 +14,7 @@ PERMIT_PACKAGE_FTP= Yes
PERMIT_DISTFILES_CDROM= Yes
PERMIT_DISTFILES_FTP= Yes
WANTLIB += GL ICE SM X11 X11-xcb Xau Xcomposite Xcursor Xdamage
WANTLIB += ICE SM X11 X11-xcb Xau Xcomposite Xcursor Xdamage
WANTLIB += Xdmcp Xext Xfixes Xi Xinerama Xrandr Xrender Xtst asn1
WANTLIB += atk-1.0 atk-bridge-2.0 atspi avahi-client avahi-common
WANTLIB += c cairo cairo-gobject canberra canberra-gtk3 colord

@ -0,0 +1,87 @@
$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");