Module: wine Branch: master Commit: ccab10bd46d129e469b36a155b934084b1e8dc3b URL: http://source.winehq.org/git/wine.git/?a=commit;h=ccab10bd46d129e469b36a155b...
Author: Stefan Dösinger stefan@codeweavers.com Date: Sun Dec 16 14:00:45 2007 +0100
winex11: Distinguish between bpp and depth.
---
dlls/winex11.drv/bitmap.c | 8 ++++---- dlls/winex11.drv/desktop.c | 4 ++-- dlls/winex11.drv/init.c | 2 +- dlls/winex11.drv/settings.c | 5 +++-- dlls/winex11.drv/winpos.c | 2 +- dlls/winex11.drv/x11drv.h | 1 + dlls/winex11.drv/x11drv_main.c | 3 +++ dlls/winex11.drv/xrandr.c | 4 ++-- dlls/winex11.drv/xvidmode.c | 4 ++-- 9 files changed, 19 insertions(+), 14 deletions(-)
diff --git a/dlls/winex11.drv/bitmap.c b/dlls/winex11.drv/bitmap.c index 98514d3..b52b05d 100644 --- a/dlls/winex11.drv/bitmap.c +++ b/dlls/winex11.drv/bitmap.c @@ -123,10 +123,10 @@ BOOL X11DRV_CreateBitmap( X11DRV_PDEVICE *physDev, HBITMAP hbitmap, LPVOID bmBit
/* check if bpp is compatible with screen depth */ if (!((bitmap.bmBitsPixel == 1) || - (bitmap.bmBitsPixel == screen_depth) || - (bitmap.bmBitsPixel == 24 && screen_depth == 32) || /* FIXME: Not compatible */ - (bitmap.bmBitsPixel == 32 && screen_depth == 24) || /* FIXME: Not compatible */ - (bitmap.bmBitsPixel == 16 && screen_depth == 15))) /* TODO: Confirm this */ + (bitmap.bmBitsPixel == screen_bpp) || + (bitmap.bmBitsPixel == 24 && screen_bpp == 32) || /* FIXME: Not compatible */ + (bitmap.bmBitsPixel == 32 && screen_bpp == 24) || /* FIXME: Not compatible */ + (bitmap.bmBitsPixel == 16 && screen_bpp == 15))) /* TODO: Confirm this */ { ERR("Trying to make bitmap with planes=%d, bpp=%d\n", bitmap.bmPlanes, bitmap.bmBitsPixel); diff --git a/dlls/winex11.drv/desktop.c b/dlls/winex11.drv/desktop.c index 92686fb..188cb1e 100644 --- a/dlls/winex11.drv/desktop.c +++ b/dlls/winex11.drv/desktop.c @@ -103,7 +103,7 @@ static int X11DRV_resize_desktop( unsigned int width, unsigned int height ) static int X11DRV_desktop_GetCurrentMode(void) { unsigned int i; - DWORD dwBpp = screen_depth; + DWORD dwBpp = screen_bpp; if (dwBpp == 24) dwBpp = 32; for (i=0; i<dd_mode_count; i++) { @@ -118,7 +118,7 @@ static int X11DRV_desktop_GetCurrentMode(void)
static LONG X11DRV_desktop_SetCurrentMode(int mode) { - DWORD dwBpp = screen_depth; + DWORD dwBpp = screen_bpp; if (dwBpp == 24) dwBpp = 32; if (dwBpp != dd_modes[mode].dwBPP) { diff --git a/dlls/winex11.drv/init.c b/dlls/winex11.drv/init.c index 8492385..bcf60e5 100644 --- a/dlls/winex11.drv/init.c +++ b/dlls/winex11.drv/init.c @@ -202,7 +202,7 @@ INT X11DRV_GetDeviceCaps( X11DRV_PDEVICE *physDev, INT cap ) case DESKTOPVERTRES: return virtual_screen_rect.bottom - virtual_screen_rect.top; case BITSPIXEL: - return screen_depth; + return screen_bpp; case PLANES: return 1; case NUMBRUSHES: diff --git a/dlls/winex11.drv/settings.c b/dlls/winex11.drv/settings.c index ac6f4ad..2db0c7f 100644 --- a/dlls/winex11.drv/settings.c +++ b/dlls/winex11.drv/settings.c @@ -86,7 +86,7 @@ LPDDHALMODEINFO X11DRV_Settings_SetHandlers(const char *name, void X11DRV_Settings_AddOneMode(unsigned int width, unsigned int height, unsigned int bpp, unsigned int freq) { LPDDHALMODEINFO info = &(dd_modes[dd_mode_count]); - DWORD dwBpp = screen_depth; + DWORD dwBpp = screen_bpp; if (dd_mode_count >= dd_max_modes) { ERR("Maximum modes (%d) exceeded\n", dd_max_modes); @@ -114,8 +114,9 @@ void X11DRV_Settings_AddDepthModes(void) { int i, j; int existing_modes = dd_mode_count; - DWORD dwBpp = screen_depth; + DWORD dwBpp = screen_bpp; if (dwBpp == 24) dwBpp = 32; + for (j=0; j<3; j++) { if (depths[j] != dwBpp) diff --git a/dlls/winex11.drv/winpos.c b/dlls/winex11.drv/winpos.c index c01f702..a521bf7 100644 --- a/dlls/winex11.drv/winpos.c +++ b/dlls/winex11.drv/winpos.c @@ -895,7 +895,7 @@ void X11DRV_handle_desktop_resize( unsigned int width, unsigned int height ) SWP_NOZORDER | SWP_NOMOVE | SWP_NOACTIVATE, NULL ); data->lock_changes--; ClipCursor(NULL); - SendMessageTimeoutW( HWND_BROADCAST, WM_DISPLAYCHANGE, screen_depth, + SendMessageTimeoutW( HWND_BROADCAST, WM_DISPLAYCHANGE, screen_bpp, MAKELPARAM( width, height ), SMTO_ABORTIFHUNG, 2000, NULL );
EnumWindows( update_windows_on_desktop_resize, (LPARAM)&resize_data ); diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h index ec03e71..3328981 100644 --- a/dlls/winex11.drv/x11drv.h +++ b/dlls/winex11.drv/x11drv.h @@ -531,6 +531,7 @@ extern Visual *visual; extern Window root_window; extern unsigned int screen_width; extern unsigned int screen_height; +extern unsigned int screen_bpp; extern unsigned int screen_depth; extern RECT virtual_screen_rect; extern unsigned int text_caps; diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c index d26fa8b..5912a4a 100644 --- a/dlls/winex11.drv/x11drv_main.c +++ b/dlls/winex11.drv/x11drv_main.c @@ -70,6 +70,7 @@ Screen *screen; Visual *visual; unsigned int screen_width; unsigned int screen_height; +unsigned int screen_bpp; unsigned int screen_depth; RECT virtual_screen_rect; Window root_window; @@ -491,6 +492,8 @@ static BOOL process_attach(void) XFree(desktop_vi); }
+ screen_bpp = screen_depth; /* TODO */ + XInternAtoms( display, (char **)atom_names, NB_XATOMS - FIRST_XATOM, False, X11DRV_Atoms );
if (TRACE_ON(synchronous)) XSynchronize( display, True ); diff --git a/dlls/winex11.drv/xrandr.c b/dlls/winex11.drv/xrandr.c index e6ae615..f2a5229 100644 --- a/dlls/winex11.drv/xrandr.c +++ b/dlls/winex11.drv/xrandr.c @@ -178,9 +178,9 @@ static LONG X11DRV_XRandR_SetCurrentMode(int mode) short rate; unsigned int i; int j; - DWORD dwBpp = screen_depth; + DWORD dwBpp = screen_bpp; if (dwBpp == 24) dwBpp = 32; - + wine_tsx11_lock(); root = RootWindow (gdi_display, DefaultScreen(gdi_display)); sc = pXRRGetScreenInfo (gdi_display, root); diff --git a/dlls/winex11.drv/xvidmode.c b/dlls/winex11.drv/xvidmode.c index be05ac4..6b67594 100644 --- a/dlls/winex11.drv/xvidmode.c +++ b/dlls/winex11.drv/xvidmode.c @@ -94,7 +94,7 @@ static int X11DRV_XF86VM_GetCurrentMode(void) int dotclock; unsigned int i; DDHALMODEINFO cmode; - DWORD dwBpp = screen_depth; + DWORD dwBpp = screen_bpp; if (dwBpp == 24) dwBpp = 32;
TRACE("Querying XVidMode current mode\n"); @@ -113,7 +113,7 @@ static int X11DRV_XF86VM_GetCurrentMode(void)
static LONG X11DRV_XF86VM_SetCurrentMode(int mode) { - DWORD dwBpp = screen_depth; + DWORD dwBpp = screen_bpp; if (dwBpp == 24) dwBpp = 32; /* only set modes from the original color depth */ if (dwBpp != dd_modes[mode].dwBPP)