we need make_current() in the flip after all

This commit is contained in:
David Rose 2004-03-02 18:21:23 +00:00
parent 6f956e1fe7
commit f709ae9232

View File

@ -160,7 +160,9 @@ make_current() {
wglGraphicsStateGuardian *wglgsg; wglGraphicsStateGuardian *wglgsg;
DCAST_INTO_V(wglgsg, _gsg); DCAST_INTO_V(wglgsg, _gsg);
wglMakeCurrent(_hdc, wglgsg->get_context(_hdc)); HGLRC context = wglgsg->get_context(_hdc);
if (context) {
wglMakeCurrent(_hdc, context);
// Now that we have made the context current to a window, we can // Now that we have made the context current to a window, we can
// reset the GSG state if this is the first time it has been used. // reset the GSG state if this is the first time it has been used.
@ -168,6 +170,7 @@ make_current() {
// reset() requires having a current context.) // reset() requires having a current context.)
wglgsg->reset_if_new(); wglgsg->reset_if_new();
} }
}
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// Function: wglGraphicsWindow::release_gsg // Function: wglGraphicsWindow::release_gsg
@ -201,6 +204,12 @@ release_gsg() {
void wglGraphicsWindow:: void wglGraphicsWindow::
begin_flip() { begin_flip() {
if (_hdc) { if (_hdc) {
// It turns out that if we don't call make_current() before
// calling SwapBuffers() on a Matrix card, we crash a horrible
// death. This is a pity since make_current() seems unnecessary
// on other cards, and does incur some performance overhead.
make_current();
SwapBuffers(_hdc); SwapBuffers(_hdc);
} }
} }