Stefan Dösinger : winex11: Distinguish between bpp and depth.
Alexandre Julliard
julliard at winehq.org
Mon Dec 17 06:42:16 CST 2007
Module: wine
Branch: master
Commit: ccab10bd46d129e469b36a155b934084b1e8dc3b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ccab10bd46d129e469b36a155b934084b1e8dc3b
Author: Stefan Dösinger <stefan at 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)
More information about the wine-cvs
mailing list