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