Rémi Bernon (@rbernon) commented about dlls/winex11.drv/opengl.c:
} - return FALSE; + else if (!org->has_been_current && !org->sharing) + { + /* Re-create the source GLX context and share display lists */ + pglXDestroyContext(gdi_display, org->ctx); + org->ctx = create_glxcontext(gdi_display, org, dest->ctx); + TRACE(" re-created context (%p) for Wine context %p (%s) sharing lists with ctx %p (%s)\n", + org->ctx, org, debugstr_fbconfig(org->fmt->fbconfig), + dest->ctx, debugstr_fbconfig(dest->fmt->fbconfig)); + } + else + { + ERR("Could not share display lists because both of the contexts have already been current or shared\n"); + return FALSE; + }
I have no idea what this change is about, and the only comment I can probably make about it is that it seems to be alright (from what I can read and tell), and that this could be factored out, first choosing which context is best to destroy, and then re-creating it or failing to. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/2032#note_29036