diff --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); }