Destructor order fix

This commit is contained in:
Jack Andersen 2015-12-05 15:25:43 -10:00
parent d145e15ecb
commit ae790866e5

View File

@ -270,17 +270,31 @@ public:
visualIdOut = m_visualid; visualIdOut = m_visualid;
} }
~GraphicsContextGLX() void destroy()
{ {
if (m_glxCtx) if (m_glxCtx)
{
glXDestroyContext(m_xDisp, m_glxCtx); glXDestroyContext(m_xDisp, m_glxCtx);
m_glxCtx = nullptr;
}
if (m_glxWindow) if (m_glxWindow)
{
glXDestroyWindow(m_xDisp, m_glxWindow); glXDestroyWindow(m_xDisp, m_glxWindow);
m_glxWindow = 0;
}
if (m_loadCtx) if (m_loadCtx)
{
glXDestroyContext(m_xDisp, m_loadCtx); glXDestroyContext(m_xDisp, m_loadCtx);
m_loadCtx = nullptr;
}
if (m_vsyncRunning)
{
m_vsyncRunning = false; m_vsyncRunning = false;
m_vsyncThread.join(); m_vsyncThread.join();
} }
}
~GraphicsContextGLX() {destroy();}
void _setCallback(IWindowCallback* cb) void _setCallback(IWindowCallback* cb)
{ {
@ -574,6 +588,7 @@ public:
~WindowXlib() ~WindowXlib()
{ {
XLockDisplay(m_xDisp); XLockDisplay(m_xDisp);
m_gfxCtx.destroy();
XUnmapWindow(m_xDisp, m_windowId); XUnmapWindow(m_xDisp, m_windowId);
XDestroyWindow(m_xDisp, m_windowId); XDestroyWindow(m_xDisp, m_windowId);
XFreeColormap(m_xDisp, m_colormapId); XFreeColormap(m_xDisp, m_colormapId);