Whoops, can't call glOrtho() repeatedly
authorSam Lantinga <slouken@libsdl.org>
Fri, 05 Dec 2008 07:00:58 +0000
changeset 2833 c2e182a37f5f
parent 2832 0379769e8caa
child 2834 feb6ccdb888f
Whoops, can't call glOrtho() repeatedly
src/video/SDL_renderer_gl.c
--- a/src/video/SDL_renderer_gl.c	Fri Dec 05 06:22:19 2008 +0000
+++ b/src/video/SDL_renderer_gl.c	Fri Dec 05 07:00:58 2008 +0000
@@ -121,6 +121,7 @@
 typedef struct
 {
     SDL_GLContext context;
+    SDL_bool updateSize;
     SDL_bool GL_ARB_texture_rectangle_supported;
     SDL_bool GL_EXT_paletted_texture_supported;
     int blendMode;
@@ -357,10 +358,7 @@
     } else {
         data->glEnable(GL_TEXTURE_2D);
     }
-    data->glMatrixMode(GL_PROJECTION);
-    data->glLoadIdentity();
-    data->glMatrixMode(GL_MODELVIEW);
-    data->glLoadIdentity();
+    data->updateSize = SDL_TRUE;
 
     return renderer;
 }
@@ -374,9 +372,10 @@
     if (SDL_GL_MakeCurrent(window->id, data->context) < 0) {
         return -1;
     }
-    data->glViewport(0, 0, window->w, window->h);
-    data->glOrtho(0.0, (GLdouble) window->w, (GLdouble) window->h, 0.0, 0.0,
-                  1.0);
+    if (data->updateSize) {
+        GL_DisplayModeChanged(renderer);
+        data->updateSize = SDL_FALSE;
+    }
     return 0;
 }
 
@@ -386,9 +385,14 @@
     GL_RenderData *data = (GL_RenderData *) renderer->driverdata;
     SDL_Window *window = SDL_GetWindowFromID(renderer->window);
 
+    data->glMatrixMode(GL_PROJECTION);
+    data->glLoadIdentity();
+    data->glMatrixMode(GL_MODELVIEW);
+    data->glLoadIdentity();
     data->glViewport(0, 0, window->w, window->h);
     data->glOrtho(0.0, (GLdouble) window->w, (GLdouble) window->h, 0.0, 0.0,
                   1.0);
+    return 0;
 }
 
 static __inline__ int