[PATCH] wined3d: Avoid crash in swapchain_gl_present() if context could not be acquired.

Henri Verbeet hverbeet at gmail.com
Thu Nov 14 10:42:24 CST 2019


On Thu, 14 Nov 2019 at 20:05, Paul Gofman <gofmanp at gmail.com> wrote:
> On 11/14/19 18:23, Henri Verbeet wrote:
> > Somewhat, in the sense that it gives us the option of using e.g.
> > (gdi32) BitBlt() to still get the contents into the target window, if
> > we really needed to.
> >
> > That isn't entirely the point though. Part of the issue is that the
> > behaviour for creating a new context should be consistent with the
> > behaviour for reusing an existing one. Another part is that for better
> > or worse, the model we currently have is that provided OpenGL works at
> > all, context_acquire() isn't supposed to fail. It may make sense to
> > rethink that, but we have a lot more context_acquire() calls besides
> > the one in swapchain_gl_present().
> >
> > The background is that the target window can go away at any given
> > point, and D3D is supposed to keep working when that happens. Modern
> > versions of OpenGL/GLX can make a context current without a drawable,
> > but originally the drawable was required. Provided FBOs are available
> > current wined3d always renders offscreen and only needs an onscreen
> > context for Present(), but in the past that was not the case either.
> > (I.e., think Opengl 1.x or 2.x and "backbuffer" ORM.)
>
> Thanks for the explanation, I see now.
>
> So I will make wined3d_context_gl_init() create backup context as well
> if it fails to set pixel format (and maybe as well if wglCreateContext()
> fails?).
>
Right.



More information about the wine-devel mailing list