tdf#94006 - need an explicit dispose for GLContext's SystemChildWindow.

Previously we would get an explicit ~OpenGLContext - and potentially
leave FMR's around for other OGC users, now we treat the other users
properly - we need an explicit dispose() to get Window::dispose ordering
right.

Change-Id: I5edcbd73399b6db3dbcfb391570f364f9ab0c70d
Reviewed-on: https://gerrit.libreoffice.org/18412
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
This commit is contained in:
Michael Meeks
2015-09-08 15:57:55 +01:00
committed by Markus Mohrhard
parent f19049065a
commit 82d25c02f8
5 changed files with 19 additions and 2 deletions

View File

@@ -112,6 +112,13 @@ OpenGLContext::~OpenGLContext()
assert (mnRefCount == 1);
}
// release associated child-window if we have one
void OpenGLContext::dispose()
{
reset();
m_pChildWindow.disposeAndClear();
}
rtl::Reference<OpenGLContext> OpenGLContext::Create()
{
return rtl::Reference<OpenGLContext>(new OpenGLContext);
@@ -1191,6 +1198,7 @@ void OpenGLContext::reset()
wglMakeCurrent(NULL, NULL);
wglDeleteContext( m_aGLWin.hRC );
ReleaseDC( m_aGLWin.hWnd, m_aGLWin.hDC );
m_aGLWin.hRC = 0;
}
#elif defined( MACOSX )
OpenGLWrapper::resetCurrent();
@@ -1212,6 +1220,7 @@ void OpenGLContext::reset()
if (mbPixmap && m_aGLWin.glPix != None)
glXDestroyPixmap(m_aGLWin.dpy, m_aGLWin.glPix);
m_aGLWin.ctx = 0;
}
#endif
}