mirror of https://github.com/PCSX2/pcsx2.git
gsdx wgl: drop GL2.0 context and avoid a context leak
Namely detach/delete context before throwing
This commit is contained in:
parent
cdb71101a1
commit
674d22321a
|
@ -53,6 +53,8 @@ void GSWndWGL::CreateContext(int major, int minor)
|
|||
exit(1);
|
||||
}
|
||||
|
||||
ASSERT(major >= 3);
|
||||
|
||||
// GL2 context are quite easy but we need GL3 which is another painful story...
|
||||
m_context = wglCreateContext(m_NativeDisplay);
|
||||
if (!m_context) {
|
||||
|
@ -63,7 +65,6 @@ void GSWndWGL::CreateContext(int major, int minor)
|
|||
// FIXME test it
|
||||
// Note: albeit every tutorial said that we need an opengl context to use the GL function wglCreateContextAttribsARB
|
||||
// On linux it works without the extra temporary context, not sure the limitation still applied
|
||||
if (major >= 3) {
|
||||
AttachContext();
|
||||
|
||||
// Create a context
|
||||
|
@ -98,19 +99,19 @@ void GSWndWGL::CreateContext(int major, int minor)
|
|||
context_attribs[2*2+1] = 0;
|
||||
|
||||
context30 = wglCreateContextAttribsARB(m_NativeDisplay, NULL, context_attribs);
|
||||
if (!context30) {
|
||||
fprintf(stderr, "Failed to create a 3.x context with compatible flags\n");
|
||||
throw GSDXRecoverableError();
|
||||
}
|
||||
}
|
||||
|
||||
DetachContext();
|
||||
wglDeleteContext(m_context);
|
||||
|
||||
if (!context30) {
|
||||
fprintf(stderr, "Failed to create a 3.x context with compatible flags\n");
|
||||
throw GSDXRecoverableError();
|
||||
}
|
||||
|
||||
m_context = context30;
|
||||
fprintf(stderr, "3.x GL context successfully created\n");
|
||||
}
|
||||
}
|
||||
|
||||
void GSWndWGL::AttachContext()
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue