rendered paste bodydiff --git a/dlls/winex11.drv/init.c b/dlls/winex11.drv/init.c
index b773f9a..d2532c7 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_depth_override) ? screen_depth : 32;
case PLANES:
return 1;
case NUMBRUSHES:
diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h
index 8de2e25..080d3f2 100644
--- a/dlls/winex11.drv/x11drv.h
+++ b/dlls/winex11.drv/x11drv.h
@@ -524,6 +524,7 @@ extern Window root_window;
extern unsigned int screen_width;
extern unsigned int screen_height;
extern unsigned int screen_depth;
+extern BOOL screen_depth_override;
extern RECT virtual_screen_rect;
extern unsigned int text_caps;
extern int dxgrab;
diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_
main.c
index 15a3624..a9d0e09 100644
--- a/dlls/winex11.drv/x11drv_main.c
+++ b/dlls/winex11.drv/x11drv_main.c
@@ -69,6 +69,7 @@ Visual *visual;
unsigned int screen_width;
unsigned int screen_height;
unsigned int screen_depth;
+BOOL screen_depth_override;
RECT virtual_screen_rect;
Window root_window;
int dxgrab = 0;
@@ -334,6 +335,7 @@ static void setup_options(void)
use_primary_selection = IS_OPTION_TRUE( buffer[0] );
screen_depth = 0;
+ screen_depth_override = FALSE;
if (!get_config_key( hkey, appkey, "ScreenDepth", buffer, sizeof( buffer) ))
screen_depth = atoi(buffer);
@@ -420,6 +422,8 @@ static BOOL process_attach(void)
{
visual = desktop_vi->visual;
screen = ScreenOfDisplay(display, desktop_vi->screen);
+ /* some apps demand we report back a 32-bit screendepth */
+ if(screen_depth == 32) screen_depth_override = TRUE;
screen_depth = desktop_vi->depth;
XFree(desktop_vi);
}