Rémi Bernon (@rbernon) commented about dlls/win32u/opengl.c:
if (hdc && (drawable = get_dc_opengl_drawable( hdc ))) return drawable;
/* get an updated drawable with the desired format */ - return get_window_unused_drawable( hwnd, format ); + ret = get_window_unused_drawable( hwnd, format ); + if (ret && update_dc) set_dc_opengl_drawable( update_dc, ret );
Only D3D swapchain and pbuffer DCs owns their drawables, and they are handled before this. This will register window-owned drawables with their DCs which is unnecessary, and caused some deadlock issues in the past when the DCs are released and destroyed and the drawable released. That issue might have been resolved, but I think it's still unnecessary and it'll cause any later use of the HDC to be treated as a D3D owning DC, which isn't the case. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10190#note_130598