]> git.cworth.org Git - apitrace/commitdiff
Handle visual creation errors.
authorJosé Fonseca <jose.r.fonseca@gmail.com>
Wed, 24 Oct 2012 11:30:46 +0000 (12:30 +0100)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Thu, 25 Oct 2012 11:20:56 +0000 (12:20 +0100)
retrace/glretrace_ws.cpp

index c49b47228c9bddf5d503851dd88e9e51186e8596..de9fe08c2c7ed4c471019502eb9dd19a5355ff91 100644 (file)
@@ -52,6 +52,10 @@ getVisual(glws::Profile profile) {
     glws::Visual * & visual = visuals[profile];
     if (!visual) {
         visual = glws::createVisual(retrace::doubleBuffer, profile);
+        if (!visual) {
+            std::cerr << "error: failed to create OpenGL visual\n";
+            exit(1);
+        }
     }
     return visual;
 }
@@ -70,11 +74,11 @@ getDefaultProfile(void)
 
 static glws::Drawable *
 createDrawableHelper(glws::Profile profile, int width = 32, int height = 32, bool pbuffer = false) {
-    glws::Drawable *draw = glws::createDrawable(getVisual(profile), width, height, pbuffer);
+    glws::Visual *visual = getVisual(profile);
+    glws::Drawable *draw = glws::createDrawable(visual, width, height, pbuffer);
     if (!draw) {
         std::cerr << "error: failed to create OpenGL drawable\n";
         exit(1);
-        return NULL;
     }
 
     return draw;
@@ -101,8 +105,9 @@ createPbuffer(int width, int height) {
 
 Context *
 createContext(Context *shareContext, glws::Profile profile) {
+    glws::Visual *visual = getVisual(profile);
     glws::Context *shareWsContext = shareContext ? shareContext->wsContext : NULL;
-    glws::Context *ctx = glws::createContext(getVisual(profile), shareWsContext, profile, retrace::debug);
+    glws::Context *ctx = glws::createContext(visual, shareWsContext, profile, retrace::debug);
     if (!ctx) {
         std::cerr << "error: failed to create OpenGL context\n";
         exit(1);