Add heuristic for primary monitor
Use the first monitor returned by RANDR as primary, if primary is not set and no LVDS is found. https://bugzilla.gnome.org/show_bug.cgi?id=615128
This commit is contained in:
parent
093722fcc8
commit
53fae3247c
@ -748,6 +748,7 @@ init_randr13 (GdkScreen *screen)
|
||||
Display *dpy = GDK_SCREEN_XDISPLAY (screen);
|
||||
XRRScreenResources *resources;
|
||||
RROutput primary_output;
|
||||
RROutput first_output = None;
|
||||
int i;
|
||||
GArray *monitors;
|
||||
gboolean randr12_compat = FALSE;
|
||||
@ -802,6 +803,9 @@ init_randr13 (GdkScreen *screen)
|
||||
XRRFreeOutputInfo (output);
|
||||
}
|
||||
|
||||
if (resources->noutput > 0)
|
||||
first_output = resources->outputs[0];
|
||||
|
||||
XRRFreeScreenResources (resources);
|
||||
|
||||
/* non RandR 1.2 X driver doesn't return any usable multihead data */
|
||||
@ -828,11 +832,21 @@ init_randr13 (GdkScreen *screen)
|
||||
for (i = 0; i < screen_x11->n_monitors; ++i)
|
||||
{
|
||||
if (screen_x11->monitors[i].output == primary_output)
|
||||
{
|
||||
screen_x11->primary_monitor = i;
|
||||
break;
|
||||
}
|
||||
|
||||
/* 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;
|
||||
break;
|
||||
}
|
||||
|
||||
/* No primary specified and no LVDS found */
|
||||
if (screen_x11->monitors[i].output == first_output)
|
||||
screen_x11->primary_monitor = i;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user