Fixed bug 1622 - SDL_RenderSetViewport with empty SDL_Rect raises wrong error for OpenGL rendering backend

It's now legal to set an empty viewport rect - it will prevent any rendering.

Also added an API to query the output size: SDL_GetRendererOutputSize()
This commit is contained in:
Sam Lantinga 2013-05-29 03:07:55 -07:00
parent b337b40e33
commit c55f53aa40
8 changed files with 103 additions and 64 deletions

View file

@ -849,28 +849,25 @@ GL_UpdateViewport(SDL_Renderer * renderer)
return 0;
}
if (!renderer->viewport.w || !renderer->viewport.h) {
/* The viewport isn't set up yet, ignore it */
return -1;
}
data->glViewport(renderer->viewport.x, renderer->viewport.y,
renderer->viewport.w, renderer->viewport.h);
data->glMatrixMode(GL_PROJECTION);
data->glLoadIdentity();
if (renderer->target) {
data->glOrtho((GLdouble) 0,
(GLdouble) renderer->viewport.w,
(GLdouble) 0,
(GLdouble) renderer->viewport.h,
0.0, 1.0);
} else {
data->glOrtho((GLdouble) 0,
(GLdouble) renderer->viewport.w,
(GLdouble) renderer->viewport.h,
(GLdouble) 0,
0.0, 1.0);
if (renderer->viewport.w && renderer->viewport.h) {
if (renderer->target) {
data->glOrtho((GLdouble) 0,
(GLdouble) renderer->viewport.w,
(GLdouble) 0,
(GLdouble) renderer->viewport.h,
0.0, 1.0);
} else {
data->glOrtho((GLdouble) 0,
(GLdouble) renderer->viewport.w,
(GLdouble) renderer->viewport.h,
(GLdouble) 0,
0.0, 1.0);
}
}
return GL_CheckError("", renderer);
}