From ff64d67f765d819769fbd4c49a605a406a6e450a Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Fri, 20 Jan 2023 18:12:31 -0600 Subject: [PATCH] wineandroid: Separately store the internal pixel format set by WGL_WINE_pixel_format_passthrough. --- dlls/wineandroid.drv/opengl.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/dlls/wineandroid.drv/opengl.c b/dlls/wineandroid.drv/opengl.c index c8b7bf85cfb..5146fdf4df9 100644 --- a/dlls/wineandroid.drv/opengl.c +++ b/dlls/wineandroid.drv/opengl.c @@ -208,11 +208,10 @@ void update_gl_drawable( HWND hwnd ) } } -static BOOL set_pixel_format( HDC hdc, int format, BOOL allow_change ) +static BOOL set_pixel_format( HDC hdc, int format, BOOL internal ) { struct gl_drawable *gl; HWND hwnd = NtUserWindowFromDC( hdc ); - int prev = 0; if (!hwnd || hwnd == NtUserGetDesktopWindow()) { @@ -226,10 +225,18 @@ static BOOL set_pixel_format( HDC hdc, int format, BOOL allow_change ) } TRACE( "%p/%p format %d\n", hdc, hwnd, format ); + if (!internal) + { + /* cannot change it if already set */ + int prev = win32u_get_window_pixel_format( hwnd ); + + if (prev) + return prev == format; + } + if ((gl = get_gl_drawable( hwnd, 0 ))) { - prev = gl->format; - if (allow_change) + if (internal) { EGLint pf; p_eglGetConfigAttrib( display, pixel_formats[format - 1].config, EGL_NATIVE_VISUAL_ID, &pf ); @@ -241,8 +248,7 @@ static BOOL set_pixel_format( HDC hdc, int format, BOOL allow_change ) release_gl_drawable( gl ); - if (prev && prev != format && !allow_change) return FALSE; - if (win32u_set_window_pixel_format( hwnd, format, FALSE )) return TRUE; + if (win32u_set_window_pixel_format( hwnd, format, internal )) return TRUE; destroy_gl_drawable( hwnd ); return FALSE; }