Explorar o código

recreate pbuffer if it is lost

David Rose %!s(int64=22) %!d(string=hai) anos
pai
achega
b49f3d4b51
Modificáronse 1 ficheiros con 6 adicións e 3 borrados
  1. 6 3
      panda/src/wgldisplay/wglGraphicsBuffer.cxx

+ 6 - 3
panda/src/wgldisplay/wglGraphicsBuffer.cxx

@@ -75,9 +75,12 @@ begin_frame() {
     int flag = 0;
     int flag = 0;
     wglgsg->_wglQueryPbufferARB(_pbuffer, WGL_PBUFFER_LOST_ARB, &flag);
     wglgsg->_wglQueryPbufferARB(_pbuffer, WGL_PBUFFER_LOST_ARB, &flag);
     if (flag != 0) {
     if (flag != 0) {
-      wgldisplay_cat.info()
-        << "Pbuffer contents lost.\n";
-      return false;
+      // The pbuffer was lost, due to a mode change or something
+      // silly like that.  We must therefore recreate the pbuffer.
+      close_buffer();
+      if (!open_buffer()) {
+        return false;
+      }
     }
     }
   }
   }