Module: wine Branch: master Commit: ff64d67f765d819769fbd4c49a605a406a6e450a URL: https://gitlab.winehq.org/wine/wine/-/commit/ff64d67f765d819769fbd4c49a605a4...
Author: Zebediah Figura zfigura@codeweavers.com Date: Fri Jan 20 18:12:31 2023 -0600
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; }