winex11: Detect broken NVIDIA RandR setups.
This commit is contained in:
parent
86779241c6
commit
8776e1c0e1
|
@ -24,6 +24,7 @@
|
|||
#include "wine/debug.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(xrandr);
|
||||
WINE_DECLARE_DEBUG_CHANNEL(winediag);
|
||||
|
||||
#ifdef SONAME_LIBXRANDR
|
||||
|
||||
|
@ -419,6 +420,21 @@ static int xrandr12_init_modes(void)
|
|||
goto done;
|
||||
}
|
||||
|
||||
/* Recent (304.64, possibly earlier) versions of the nvidia driver only
|
||||
* report a DFP's native mode through RandR 1.2 / 1.3. Standard DMT modes
|
||||
* are only listed through RandR 1.0 / 1.1. This is completely useless,
|
||||
* but NVIDIA considers this a feature, so it's unlikely to change. The
|
||||
* best we can do is to fall back to RandR 1.0 and encourage users to
|
||||
* consider more cooperative driver vendors when we detect such a
|
||||
* configuration. */
|
||||
if (output_info->nmode == 1 && XQueryExtension( gdi_display, "NV-CONTROL", &i, &j, &ret ))
|
||||
{
|
||||
ERR_(winediag)("Broken NVIDIA RandR detected, falling back to RandR 1.0. "
|
||||
"Please consider using the Nouveau driver instead.\n");
|
||||
ret = -1;
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (!(xrandr12_modes = HeapAlloc( GetProcessHeap(), 0, sizeof(*xrandr12_modes) * output_info->nmode )))
|
||||
{
|
||||
ERR("Failed to allocate xrandr mode info array.\n");
|
||||
|
|
Loading…
Reference in New Issue