From: Rémi Bernon rbernon@codeweavers.com
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=57582 --- dlls/winex11.drv/opengl.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-)
diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c index 594ffaea2dd..2ef8687013b 100644 --- a/dlls/winex11.drv/opengl.c +++ b/dlls/winex11.drv/opengl.c @@ -1208,22 +1208,24 @@ static BOOL set_win_format( HWND hwnd, const struct glx_pixel_format *format, BO
if (!format->visual) return FALSE;
- old = get_gl_drawable( hwnd, 0 ); - - if (!(gl = create_gl_drawable( hwnd, format, FALSE, internal ))) + if (!(old = get_gl_drawable( hwnd, 0 )) || old->format != format) { - release_gl_drawable( old ); - return FALSE; - } + if (!(gl = create_gl_drawable( hwnd, format, FALSE, internal ))) + { + release_gl_drawable( old ); + return FALSE; + }
- TRACE( "created GL drawable %lx for win %p %s\n", - gl->drawable, hwnd, debugstr_fbconfig( format->fbconfig )); + TRACE( "created GL drawable %lx for win %p %s\n", + gl->drawable, hwnd, debugstr_fbconfig( format->fbconfig ));
- if (old) - mark_drawable_dirty( old, gl ); + if (old) + mark_drawable_dirty( old, gl ); + + XFlush( gdi_display ); + release_gl_drawable( gl ); + }
- XFlush( gdi_display ); - release_gl_drawable( gl ); release_gl_drawable( old );
win32u_set_window_pixel_format( hwnd, pixel_format_index( format ), internal );