Allow SDL2 window to be resized
This commit is contained in:
parent
13883b7928
commit
53aa22263f
23
src/input.c
23
src/input.c
@ -933,6 +933,29 @@ int Get_input(int sleep_time)
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if defined(USE_SDL2)
|
||||
case SDL_WINDOWEVENT:
|
||||
switch(event.window.event)
|
||||
{
|
||||
case SDL_WINDOWEVENT_RESIZED: // change by external event (user or window manager)
|
||||
Resize_width = event.window.data1;
|
||||
Resize_height = event.window.data2;
|
||||
// forbid window size < 320x200
|
||||
if (Resize_width < 320)
|
||||
Resize_width = 320;
|
||||
if (Resize_height < 200)
|
||||
Resize_height = 200;
|
||||
if (Resize_width != event.window.data1 || Resize_height != event.window.data2)
|
||||
SDL_SetWindowSize(SDL_GetWindowFromID(event.window.windowID), Resize_width, Resize_height);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_CLOSE:
|
||||
Quit_is_required = 1;
|
||||
user_feedback_required = 1;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
||||
case SDL_QUIT:
|
||||
Handle_window_exit(event.quit);
|
||||
user_feedback_required = 1;
|
||||
|
||||
@ -142,10 +142,20 @@ void GFX2_Set_mode(int *width, int *height, int fullscreen)
|
||||
}
|
||||
#else
|
||||
// SDL2
|
||||
Window_SDL = SDL_CreateWindow("GrafX2", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
|
||||
*width, *height, (fullscreen?SDL_WINDOW_FULLSCREEN:SDL_WINDOW_RESIZABLE));
|
||||
Renderer_SDL = SDL_CreateRenderer(Window_SDL, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
|
||||
if (Window_SDL == NULL)
|
||||
{
|
||||
Window_SDL = SDL_CreateWindow("GrafX2", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
|
||||
*width, *height, (fullscreen?SDL_WINDOW_FULLSCREEN:SDL_WINDOW_RESIZABLE));
|
||||
Renderer_SDL = SDL_CreateRenderer(Window_SDL, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
|
||||
}
|
||||
//else
|
||||
// SDL_SetWindowSize(Window_SDL, *width, *height);
|
||||
//SDL_GetWindowSize(Window_SDL, width, height);
|
||||
if (Texture_SDL != NULL)
|
||||
SDL_DestroyTexture(Texture_SDL);
|
||||
Texture_SDL = SDL_CreateTexture(Renderer_SDL, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, *width, *height);
|
||||
if (Screen_SDL != NULL)
|
||||
SDL_FreeSurface(Screen_SDL);
|
||||
Screen_SDL = SDL_CreateRGBSurface(0, *width, *height, 8, 0, 0, 0, 0);
|
||||
#endif
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user