[gtk+] Fix a silly mistake in primary_monitor handling
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] Fix a silly mistake in primary_monitor handling
- Date: Fri, 9 Apr 2010 13:08:23 +0000 (UTC)
commit b4adea747780fb05a7923707fe431d924c2ada9d
Author: Matthias Clasen <mclasen redhat com>
Date: Fri Apr 9 09:05:38 2010 -0400
Fix a silly mistake in primary_monitor handling
It doesn't make sense to determine an index into an array, if
you are going to sort the array afterwards...pointed out in
bug 615128 by Florian Scandella.
gdk/x11/gdkscreen-x11.c | 41 ++++++++++++++++++++++++-----------------
1 files changed, 24 insertions(+), 17 deletions(-)
---
diff --git a/gdk/x11/gdkscreen-x11.c b/gdk/x11/gdkscreen-x11.c
index f27d4ec..4a8fc68 100644
--- a/gdk/x11/gdkscreen-x11.c
+++ b/gdk/x11/gdkscreen-x11.c
@@ -763,21 +763,13 @@ init_randr13 (GdkScreen *screen)
monitors = g_array_sized_new (FALSE, TRUE, sizeof (GdkX11Monitor),
resources->noutput);
- primary_output = XRRGetOutputPrimary (screen_x11->xdisplay,
- screen_x11->xroot_window);
-
for (i = 0; i < resources->noutput; ++i)
{
XRROutputInfo *output =
XRRGetOutputInfo (dpy, resources, resources->outputs[i]);
- if (resources->outputs[i] == primary_output)
- {
- screen_x11->primary_monitor = i;
- }
-
/* Non RandR1.2 X driver have output name "default" */
- randr12_compat |= !g_strcmp0(output->name, "default");
+ randr12_compat |= !g_strcmp0 (output->name, "default");
if (output->connection == RR_Disconnected)
{
@@ -785,12 +777,6 @@ init_randr13 (GdkScreen *screen)
continue;
}
- /* No RandR1.3+ available or no primary set, fall back to prefer LVDS as primary if present */
- if (primary_output == None && g_ascii_strncasecmp (output->name, "LVDS", 4) == 0)
- {
- screen_x11->primary_monitor = i;
- }
-
if (output->crtc)
{
GdkX11Monitor monitor;
@@ -834,9 +820,25 @@ init_randr13 (GdkScreen *screen)
screen_x11->n_monitors = monitors->len;
screen_x11->monitors = (GdkX11Monitor *)g_array_free (monitors, FALSE);
+ screen_x11->primary_monitor = 0;
+
+ primary_output = XRRGetOutputPrimary (screen_x11->xdisplay,
+ screen_x11->xroot_window);
+
+ for (i = 0; i < screen_x11->n_monitors; ++i)
+ {
+ if (screen_x11->monitors[i].output == primary_output)
+ screen_x11->primary_monitor = i;
+
+ /* No RandR1.3+ available or no primary set, fall back to prefer LVDS as primary if present */
+ if (primary_output == None &&
+ g_ascii_strncasecmp (screen_x11->monitors[i].output_name, "LVDS", 4) == 0)
+ screen_x11->primary_monitor = i;
+ }
+
return screen_x11->n_monitors > 0;
#endif
-
+
return FALSE;
}
@@ -875,7 +877,9 @@ init_solaris_xinerama (GdkScreen *screen)
monitors[i].x, monitors[i].y,
monitors[i].width, monitors[i].height);
}
-
+
+ screen_x11->primary_monitor = 0;
+
return TRUE;
#endif /* HAVE_SOLARIS_XINERAMA */
@@ -922,6 +926,8 @@ init_xfree_xinerama (GdkScreen *screen)
XFree (monitors);
+ screen_x11->primary_monitor = 0;
+
return TRUE;
#endif /* HAVE_XFREE_XINERAMA */
@@ -1014,6 +1020,7 @@ init_multihead (GdkScreen *screen)
/* No multihead support of any kind for this screen */
screen_x11->n_monitors = 1;
screen_x11->monitors = g_new0 (GdkX11Monitor, 1);
+ screen_x11->primary_monitor = 0;
init_monitor_geometry (screen_x11->monitors, 0, 0,
WidthOfScreen (screen_x11->xscreen),
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]