winex11.drv: Check that there are connected outputs before using XRandR 1.4.
On headless systems, Wine can still run through a VNC connection even though no outputs are connected. Fallback to using the Xinerama display device handler in this case to report at least one monitor. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=49500 Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
472adf6509
commit
798137dbf6
|
@ -1555,6 +1555,38 @@ void X11DRV_XRandR_Init(void)
|
|||
#ifdef HAVE_XRRGETPROVIDERRESOURCES
|
||||
if (ret >= 4 && (major > 1 || (major == 1 && minor >= 4)))
|
||||
{
|
||||
XRRScreenResources *screen_resources;
|
||||
XRROutputInfo *output_info;
|
||||
BOOL found_output = FALSE;
|
||||
INT i;
|
||||
|
||||
screen_resources = xrandr_get_screen_resources();
|
||||
if (!screen_resources)
|
||||
return;
|
||||
|
||||
for (i = 0; i < screen_resources->noutput; ++i)
|
||||
{
|
||||
output_info = pXRRGetOutputInfo( gdi_display, screen_resources, screen_resources->outputs[i] );
|
||||
if (!output_info)
|
||||
continue;
|
||||
|
||||
if (output_info->connection == RR_Connected)
|
||||
{
|
||||
pXRRFreeOutputInfo( output_info );
|
||||
found_output = TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
pXRRFreeOutputInfo( output_info );
|
||||
}
|
||||
pXRRFreeScreenResources( screen_resources );
|
||||
|
||||
if (!found_output)
|
||||
{
|
||||
WARN("No connected outputs found.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
display_handler.name = "XRandR 1.4";
|
||||
display_handler.priority = 200;
|
||||
display_handler.get_gpus = xrandr14_get_gpus;
|
||||
|
|
Loading…
Reference in New Issue