Commit fa620100 authored by Mike Gorchak's avatar Mike Gorchak

Proper window resize handling in GLES test application.

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%403653
parent 83ca32e5
...@@ -11,59 +11,56 @@ ...@@ -11,59 +11,56 @@
#define AUDIO_USAGE \ #define AUDIO_USAGE \
"[--rate N] [--format U8|S8|U16|U16LE|U16BE|S16|S16LE|S16BE] [--channels N] [--samples N]" "[--rate N] [--format U8|S8|U16|U16LE|U16BE|S16|S16LE|S16BE] [--channels N] [--samples N]"
struct pformat struct pformat {
{
Uint32 id; Uint32 id;
const char *idstr; const char* idstr;
} pixel_format[] = { } pixel_format[]={
{ {SDL_PIXELFORMAT_INDEX1LSB, "SDL_PIXELFORMAT_INDEX1LSB"},
SDL_PIXELFORMAT_INDEX1LSB, "SDL_PIXELFORMAT_INDEX1LSB"}, { {SDL_PIXELFORMAT_INDEX1MSB, "SDL_PIXELFORMAT_INDEX1MSB"},
SDL_PIXELFORMAT_INDEX1MSB, "SDL_PIXELFORMAT_INDEX1MSB"}, { {SDL_PIXELFORMAT_INDEX4LSB, "SDL_PIXELFORMAT_INDEX4LSB"},
SDL_PIXELFORMAT_INDEX4LSB, "SDL_PIXELFORMAT_INDEX4LSB"}, { {SDL_PIXELFORMAT_INDEX4MSB, "SDL_PIXELFORMAT_INDEX4MSB"},
SDL_PIXELFORMAT_INDEX4MSB, "SDL_PIXELFORMAT_INDEX4MSB"}, { {SDL_PIXELFORMAT_INDEX8, "SDL_PIXELFORMAT_INDEX8"},
SDL_PIXELFORMAT_INDEX8, "SDL_PIXELFORMAT_INDEX8"}, { {SDL_PIXELFORMAT_RGB332, "SDL_PIXELFORMAT_RGB332"},
SDL_PIXELFORMAT_RGB332, "SDL_PIXELFORMAT_RGB332"}, { {SDL_PIXELFORMAT_RGB444, "SDL_PIXELFORMAT_RGB444"},
SDL_PIXELFORMAT_RGB444, "SDL_PIXELFORMAT_RGB444"}, { {SDL_PIXELFORMAT_RGB555, "SDL_PIXELFORMAT_RGB555"},
SDL_PIXELFORMAT_RGB555, "SDL_PIXELFORMAT_RGB555"}, { {SDL_PIXELFORMAT_BGR555, "SDL_PIXELFORMAT_BGR555"},
SDL_PIXELFORMAT_BGR555, "SDL_PIXELFORMAT_BGR555"}, { {SDL_PIXELFORMAT_ARGB4444, "SDL_PIXELFORMAT_ARGB4444"},
SDL_PIXELFORMAT_ARGB4444, "SDL_PIXELFORMAT_ARGB4444"}, { {SDL_PIXELFORMAT_ABGR4444, "SDL_PIXELFORMAT_ABGR4444"},
SDL_PIXELFORMAT_ABGR4444, "SDL_PIXELFORMAT_ABGR4444"}, { {SDL_PIXELFORMAT_ARGB1555, "SDL_PIXELFORMAT_ARGB1555"},
SDL_PIXELFORMAT_ARGB1555, "SDL_PIXELFORMAT_ARGB1555"}, { {SDL_PIXELFORMAT_ABGR1555, "SDL_PIXELFORMAT_ABGR1555"},
SDL_PIXELFORMAT_ABGR1555, "SDL_PIXELFORMAT_ABGR1555"}, { {SDL_PIXELFORMAT_RGB565, "SDL_PIXELFORMAT_RGB565"},
SDL_PIXELFORMAT_RGB565, "SDL_PIXELFORMAT_RGB565"}, { {SDL_PIXELFORMAT_BGR565, "SDL_PIXELFORMAT_BGR565"},
SDL_PIXELFORMAT_BGR565, "SDL_PIXELFORMAT_BGR565"}, { {SDL_PIXELFORMAT_RGB24, "SDL_PIXELFORMAT_RGB24"},
SDL_PIXELFORMAT_RGB24, "SDL_PIXELFORMAT_RGB24"}, { {SDL_PIXELFORMAT_BGR24, "SDL_PIXELFORMAT_BGR24"},
SDL_PIXELFORMAT_BGR24, "SDL_PIXELFORMAT_BGR24"}, { {SDL_PIXELFORMAT_RGB888, "SDL_PIXELFORMAT_RGB888"},
SDL_PIXELFORMAT_RGB888, "SDL_PIXELFORMAT_RGB888"}, { {SDL_PIXELFORMAT_BGR888, "SDL_PIXELFORMAT_BGR888"},
SDL_PIXELFORMAT_BGR888, "SDL_PIXELFORMAT_BGR888"}, { {SDL_PIXELFORMAT_ARGB8888, "SDL_PIXELFORMAT_ARGB8888"},
SDL_PIXELFORMAT_ARGB8888, "SDL_PIXELFORMAT_ARGB8888"}, { {SDL_PIXELFORMAT_RGBA8888, "SDL_PIXELFORMAT_RGBA8888"},
SDL_PIXELFORMAT_RGBA8888, "SDL_PIXELFORMAT_RGBA8888"}, { {SDL_PIXELFORMAT_ABGR8888, "SDL_PIXELFORMAT_ABGR8888"},
SDL_PIXELFORMAT_ABGR8888, "SDL_PIXELFORMAT_ABGR8888"}, { {SDL_PIXELFORMAT_BGRA8888, "SDL_PIXELFORMAT_BGRA8888"},
SDL_PIXELFORMAT_BGRA8888, "SDL_PIXELFORMAT_BGRA8888"}, { {SDL_PIXELFORMAT_ARGB2101010, "SDL_PIXELFORMAT_ARGB2101010"},
SDL_PIXELFORMAT_ARGB2101010, "SDL_PIXELFORMAT_ARGB2101010"}, { {SDL_PIXELFORMAT_YV12, "SDL_PIXELFORMAT_YV12"},
SDL_PIXELFORMAT_YV12, "SDL_PIXELFORMAT_YV12"}, { {SDL_PIXELFORMAT_IYUV, "SDL_PIXELFORMAT_IYUV"},
SDL_PIXELFORMAT_IYUV, "SDL_PIXELFORMAT_IYUV"}, { {SDL_PIXELFORMAT_YUY2, "SDL_PIXELFORMAT_YUY2"},
SDL_PIXELFORMAT_YUY2, "SDL_PIXELFORMAT_YUY2"}, { {SDL_PIXELFORMAT_UYVY, "SDL_PIXELFORMAT_UYVY"},
SDL_PIXELFORMAT_UYVY, "SDL_PIXELFORMAT_UYVY"}, { {SDL_PIXELFORMAT_YVYU, "SDL_PIXELFORMAT_YVYU"}
SDL_PIXELFORMAT_YVYU, "SDL_PIXELFORMAT_YVYU"}
}; };
const char * const char* PixelFormatToString(Uint32 pformat)
PixelFormatToString(Uint32 pformat)
{ {
Uint32 it = 0; Uint32 it=0;
do { do {
if (pixel_format[it].idstr == NULL) { if (pixel_format[it].idstr == NULL) {
break; break;
} }
if (pixel_format[it].id == pformat) { if (pixel_format[it].id == pformat) {
return pixel_format[it].idstr; return pixel_format[it].idstr;
} }
it++; it++;
} while (1); } while(1);
return "SDL_PIXELFORMAT_UNKNOWN"; return "SDL_PIXELFORMAT_UNKNOWN";
} }
CommonState * CommonState *
...@@ -82,8 +79,8 @@ CommonCreateState(char **argv, Uint32 flags) ...@@ -82,8 +79,8 @@ CommonCreateState(char **argv, Uint32 flags)
state->window_flags = SDL_WINDOW_SHOWN; state->window_flags = SDL_WINDOW_SHOWN;
state->window_x = SDL_WINDOWPOS_UNDEFINED; state->window_x = SDL_WINDOWPOS_UNDEFINED;
state->window_y = SDL_WINDOWPOS_UNDEFINED; state->window_y = SDL_WINDOWPOS_UNDEFINED;
state->window_w = 640; state->window_w = DEFAULT_WINDOW_WIDTH;
state->window_h = 480; state->window_h = DEFAULT_WINDOW_HEIGHT;
state->num_windows = 1; state->num_windows = 1;
state->audiospec.freq = 22050; state->audiospec.freq = 22050;
state->audiospec.format = AUDIO_S16; state->audiospec.format = AUDIO_S16;
...@@ -709,7 +706,7 @@ CommonInit(CommonState * state) ...@@ -709,7 +706,7 @@ CommonInit(CommonState * state)
fullscreen_mode.w = state->window_w; fullscreen_mode.w = state->window_w;
fullscreen_mode.h = state->window_h; fullscreen_mode.h = state->window_h;
fullscreen_mode.refresh_rate = state->refresh_rate; fullscreen_mode.refresh_rate = state->refresh_rate;
if (SDL_SetFullscreenDisplayMode(&fullscreen_mode) < 0) { if (SDL_SetFullscreenDisplayMode(&fullscreen_mode)<0) {
fprintf(stderr, "Can't switch to fullscreen display mode: %s\n", fprintf(stderr, "Can't switch to fullscreen display mode: %s\n",
SDL_GetError()); SDL_GetError());
return SDL_FALSE; return SDL_FALSE;
......
...@@ -3,6 +3,9 @@ ...@@ -3,6 +3,9 @@
#include "SDL.h" #include "SDL.h"
#define DEFAULT_WINDOW_WIDTH 640
#define DEFAULT_WINDOW_HEIGHT 480
#define VERBOSE_VIDEO 0x00000001 #define VERBOSE_VIDEO 0x00000001
#define VERBOSE_MODES 0x00000002 #define VERBOSE_MODES 0x00000002
#define VERBOSE_RENDER 0x00000004 #define VERBOSE_RENDER 0x00000004
......
...@@ -242,6 +242,7 @@ main(int argc, char *argv[]) ...@@ -242,6 +242,7 @@ main(int argc, char *argv[])
continue; continue;
} }
glViewport(0, 0, DEFAULT_WINDOW_WIDTH, DEFAULT_WINDOW_HEIGHT);
glMatrixMode(GL_PROJECTION); glMatrixMode(GL_PROJECTION);
glLoadIdentity(); glLoadIdentity();
glOrthof(-2.0, 2.0, -2.0, 2.0, -20.0, 20.0); glOrthof(-2.0, 2.0, -2.0, 2.0, -20.0, 20.0);
...@@ -260,10 +261,31 @@ main(int argc, char *argv[]) ...@@ -260,10 +261,31 @@ main(int argc, char *argv[])
/* Check for events */ /* Check for events */
++frames; ++frames;
while (SDL_PollEvent(&event)) { while (SDL_PollEvent(&event)) {
switch (event.type) {
case SDL_WINDOWEVENT:
switch (event.window.event) {
case SDL_WINDOWEVENT_RESIZED:
for (i = 0; i < state->num_windows; ++i) {
if (event.window.windowID == state->windows[i]) {
status = SDL_GL_MakeCurrent(state->windows[i], context[i]);
if (status) {
printf("SDL_GL_MakeCurrent(): %s\n", SDL_GetError());
break;
}
/* Change view port to the new window dimensions */
glViewport(0, 0, event.window.data1, event.window.data2);
/* Update window content */
Render();
SDL_GL_SwapWindow(state->windows[i]);
break;
}
}
break;
}
}
CommonEvent(state, &event, &done); CommonEvent(state, &event, &done);
} }
for (i = 0; i < state->num_windows; ++i) { for (i = 0; i < state->num_windows; ++i) {
int w, h;
status = SDL_GL_MakeCurrent(state->windows[i], context[i]); status = SDL_GL_MakeCurrent(state->windows[i], context[i]);
if (status) { if (status) {
printf("SDL_GL_MakeCurrent(): %s\n", SDL_GetError()); printf("SDL_GL_MakeCurrent(): %s\n", SDL_GetError());
...@@ -271,8 +293,6 @@ main(int argc, char *argv[]) ...@@ -271,8 +293,6 @@ main(int argc, char *argv[])
/* Continue for next window */ /* Continue for next window */
continue; continue;
} }
SDL_GetWindowSize(state->windows[i], &w, &h);
glViewport(0, 0, w, h);
Render(); Render();
SDL_GL_SwapWindow(state->windows[i]); SDL_GL_SwapWindow(state->windows[i]);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment