winex11drv: Initialize real default mode in xrandr and xvidmode backends
Dmitry Timoshkov
dmitry at codeweavers.com
Wed Oct 31 00:47:34 CDT 2007
Hello,
the following test program causes a display mode change on my system:
int main(void)
{
GetDesktopWindow();
ChangeDisplaySettingsEx(NULL, NULL, 0, 0, NULL);
return 0;
}
ChangeDisplaySettingsEx with all parameters set to 0 is intended to restore
an original display mode. The default display mode is not at the position 0
of returned modes on my system, but xrandr and xvidmode backends assume that
mode 0 is always a default one.
Changelog:
winex11drv: Initialize real default mode in xrandr and xvidmode backends.
---
dlls/winex11.drv/xrandr.c | 9 ++++++---
dlls/winex11.drv/xvidmode.c | 7 ++++---
2 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/dlls/winex11.drv/xrandr.c b/dlls/winex11.drv/xrandr.c
index 8a8d7d9..863db6c 100644
--- a/dlls/winex11.drv/xrandr.c
+++ b/dlls/winex11.drv/xrandr.c
@@ -241,7 +241,7 @@ static LONG X11DRV_XRandR_SetCurrentMode(int mode)
void X11DRV_XRandR_Init(void)
{
Bool ok;
- int nmodes = 0;
+ int nmodes = 0, default_mode;
unsigned int i;
if (xrandr_major) return; /* already initialized? */
@@ -280,7 +280,7 @@ void X11DRV_XRandR_Init(void)
nmodes += real_xrandr_rates_count[i];
for (j = 0; j < real_xrandr_rates_count[i]; ++j) {
if (j > 0) TRACE(",");
- TRACE(" %d", real_xrandr_rates[i][j]);
+ TRACE(" %d", real_xrandr_rates[i][j]);
}
}
else
@@ -304,7 +304,10 @@ void X11DRV_XRandR_Init(void)
make_modes();
X11DRV_Settings_AddDepthModes();
dd_mode_count = X11DRV_Settings_GetModeCount();
- X11DRV_Settings_SetDefaultMode(0);
+
+ default_mode = X11DRV_XRandR_GetCurrentMode();
+ TRACE("default mode: %d\n", default_mode);
+ X11DRV_Settings_SetDefaultMode(default_mode);
TRACE("Available DD modes: count=%d\n", dd_mode_count);
TRACE("Enabling XRandR\n");
diff --git a/dlls/winex11.drv/xvidmode.c b/dlls/winex11.drv/xvidmode.c
index 3a0363c..4aabbbc 100644
--- a/dlls/winex11.drv/xvidmode.c
+++ b/dlls/winex11.drv/xvidmode.c
@@ -141,7 +141,7 @@ static LONG X11DRV_XF86VM_SetCurrentMode(int mode)
void X11DRV_XF86VM_Init(void)
{
Bool ok;
- int nmodes;
+ int nmodes, default_mode;
unsigned int i;
DWORD dwBpp = screen_depth;
if (dwBpp == 24) dwBpp = 32;
@@ -198,8 +198,9 @@ void X11DRV_XF86VM_Init(void)
TRACE("Available DD modes: count=%d\n", dd_mode_count);
- /* the first mode in the list seems to be the default */
- X11DRV_Settings_SetDefaultMode(0);
+ default_mode = X11DRV_XF86VM_GetCurrentMode();
+ TRACE("default mode: %d\n", default_mode);
+ X11DRV_Settings_SetDefaultMode(default_mode);
TRACE("Enabling XVidMode\n");
}
--
1.5.3.4
More information about the wine-patches
mailing list