William Horvath (@whrvt) commented about dlls/winex11.drv/opengl.c:
RtlSetLastWin32Error( ERROR_INVALID_HANDLE ); return FALSE; } + if (gl->type != DC_GL_WINDOW) + { + release_gl_drawable( gl ); + return FALSE; + }
pthread_mutex_lock( &context_mutex ); set_swap_interval( gl, interval ); pthread_mutex_unlock( &context_mutex );
- switch (gl->type) + if (!ctx || !gl->offscreen) pglXSwapBuffers( gdi_display, gl->drawable );
```suggestion:-0+0 if (!ctx || !gl->offscreen || !pglXSwapBuffersMscOML) pglXSwapBuffers( gdi_display, gl->drawable ); ``` Otherwise we'd never swap in the else condition, if `pglXSwapBuffersMscOML` isn't available, like with NVIDIA drivers. I assume there's no need to manually flush in this case, either, if I'm to believe this comment which was here before: ``` /* (glX)SwapBuffers has an implicit glFlush effect, however * GLX_MESA_copy_sub_buffer doesn't. Make sure GL is flushed before * copying */ ``` (this is what was causing the breakage you mentioned) -- https://gitlab.winehq.org/wine/wine/-/merge_requests/8291#note_106580