[PATCH 0/1] MR7092: winex11: Don't re-create the GL drawable if pixel format didn't change.
From: Rémi Bernon <rbernon(a)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 ); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/7092
I didn't get around to test it but the patch seems good to me in principle. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/7092#note_91285
participants (2)
-
Matteo Bruni (@Mystral) -
Rémi Bernon