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;
|
break;
|
||||||
#endif
|
#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:
|
case SDL_QUIT:
|
||||||
Handle_window_exit(event.quit);
|
Handle_window_exit(event.quit);
|
||||||
user_feedback_required = 1;
|
user_feedback_required = 1;
|
||||||
|
|||||||
@ -142,10 +142,20 @@ void GFX2_Set_mode(int *width, int *height, int fullscreen)
|
|||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
// SDL2
|
// SDL2
|
||||||
Window_SDL = SDL_CreateWindow("GrafX2", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
|
if (Window_SDL == NULL)
|
||||||
*width, *height, (fullscreen?SDL_WINDOW_FULLSCREEN:SDL_WINDOW_RESIZABLE));
|
{
|
||||||
Renderer_SDL = SDL_CreateRenderer(Window_SDL, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
|
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);
|
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);
|
Screen_SDL = SDL_CreateRGBSurface(0, *width, *height, 8, 0, 0, 0, 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user