ogl: fix single core crash

osx is missing, sorry but I'm too stupid for objective-c
This commit is contained in:
degasus 2013-04-11 03:32:07 +02:00
parent 6af14bd4ce
commit 3c87512180
8 changed files with 24 additions and 2 deletions

View file

@ -87,6 +87,13 @@ bool cInterfaceAGL::MakeCurrent()
return true;
}
bool cInterfaceAGL::ClearCurrent()
{
// not tested at all
//clearCurrentContext();
return true;
}
// Close backend
void cInterfaceAGL::Shutdown()
{

View file

@ -30,6 +30,7 @@ public:
void Swap();
bool Create(void *&window_handle);
bool MakeCurrent();
bool ClearCurrent();
void Shutdown();
void Update();

View file

@ -141,12 +141,17 @@ bool cInterfaceGLX::MakeCurrent()
#endif
return glXMakeCurrent(GLWin.dpy, GLWin.win, GLWin.ctx);
}
bool cInterfaceGLX::ClearCurrent()
{
return glXMakeCurrent(GLWin.dpy, None, NULL);
}
// Close backend
void cInterfaceGLX::Shutdown()
{
XWindow.DestroyXWindow();
if (GLWin.ctx && !glXMakeCurrent(GLWin.dpy, None, NULL))
NOTICE_LOG(VIDEO, "Could not release drawing context.");
if (GLWin.ctx)
{
glXDestroyContext(GLWin.dpy, GLWin.ctx);

View file

@ -36,6 +36,7 @@ public:
void UpdateFPSDisplay(const char *Text);
bool Create(void *&window_handle);
bool MakeCurrent();
bool ClearCurrent();
void Shutdown();
};
#endif

View file

@ -27,6 +27,7 @@ public:
virtual void UpdateFPSDisplay(const char *Text) {}
virtual bool Create(void *&window_handle) { return true; }
virtual bool MakeCurrent() { return true; }
virtual bool ClearCurrent() { return true; }
virtual void Shutdown() {}
virtual void SwapInterval(int Interval) { }

View file

@ -131,6 +131,11 @@ bool cInterfaceWGL::MakeCurrent()
return wglMakeCurrent(hDC, hRC) ? true : false;
}
bool cInterfaceWGL::ClearCurrent()
{
return wglMakeCurrent(hDC, NULL) ? true : false;
}
// Update window width, size and etc. Called from Render.cpp
void cInterfaceWGL::Update()
{

View file

@ -33,6 +33,7 @@ public:
void UpdateFPSDisplay(const char *Text);
bool Create(void *&window_handle);
bool MakeCurrent();
bool ClearCurrent();
void Shutdown();
void Update();

View file

@ -253,6 +253,7 @@ void VideoBackend::Video_Cleanup() {
OpcodeDecoder_Shutdown();
delete g_renderer;
g_renderer = NULL;
GLInterface->ClearCurrent();
}
}