mirror of
https://github.com/yawut/SDL.git
synced 2026-04-25 07:52:57 -05:00
render/wiiu: Handle window size changes
This commit is contained in:
parent
89013edb6c
commit
b17164d5f6
|
|
@ -102,17 +102,29 @@ SDL_Renderer *WIIU_SDL_CreateRenderer(SDL_Window * window, Uint32 flags)
|
|||
memset(data->ctx, 0, sizeof(GX2ContextState));
|
||||
GX2SetupContextStateEx(data->ctx, TRUE);
|
||||
|
||||
// Make a texture for the window
|
||||
WIIU_SDL_CreateWindowTex(renderer, window);
|
||||
|
||||
// Setup colour buffer, rendering to the window
|
||||
WIIU_SDL_SetRenderTarget(renderer, NULL);
|
||||
|
||||
return renderer;
|
||||
}
|
||||
|
||||
void WIIU_SDL_CreateWindowTex(SDL_Renderer * renderer, SDL_Window * window) {
|
||||
WIIU_RenderData *data = (WIIU_RenderData *) renderer->driverdata;
|
||||
|
||||
if (data->windowTex.driverdata) {
|
||||
WIIU_SDL_DestroyTexture(renderer, &data->windowTex);
|
||||
data->windowTex = (SDL_Texture) {0};
|
||||
}
|
||||
|
||||
// Allocate a buffer for the window
|
||||
data->windowTex = (SDL_Texture) {
|
||||
.format = SDL_PIXELFORMAT_RGBA8888,
|
||||
};
|
||||
SDL_GetWindowSize(window, &data->windowTex.w, &data->windowTex.h);
|
||||
WIIU_SDL_CreateTexture(renderer, &data->windowTex);
|
||||
|
||||
// Setup colour buffer, rendering to the window
|
||||
WIIU_SDL_SetRenderTarget(renderer, NULL);
|
||||
|
||||
return renderer;
|
||||
}
|
||||
|
||||
int WIIU_SDL_SetRenderTarget(SDL_Renderer * renderer, SDL_Texture * texture)
|
||||
|
|
|
|||
|
|
@ -118,6 +118,9 @@ void WIIU_SDL_RenderPresent(SDL_Renderer * renderer);
|
|||
void WIIU_SDL_DestroyTexture(SDL_Renderer * renderer, SDL_Texture * texture);
|
||||
void WIIU_SDL_DestroyRenderer(SDL_Renderer * renderer);
|
||||
|
||||
//Driver internal functions
|
||||
void WIIU_SDL_CreateWindowTex(SDL_Renderer * renderer, SDL_Window * window);
|
||||
|
||||
//Utility/helper functions
|
||||
static inline Uint32 TextureNextPow2(Uint32 w) {
|
||||
Uint32 n = 2;
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ void WIIU_SDL_WindowEvent(SDL_Renderer * renderer, const SDL_WindowEvent *event)
|
|||
// Re-init the colour buffer etc. for new window size
|
||||
// TODO check: what if we're rendering to a texture when this happens?
|
||||
// SDL may handle this already, see SDL_render.c: SDL_RendererEventWatch
|
||||
WIIU_SDL_CreateWindowTex(renderer, renderer->window);
|
||||
WIIU_SDL_SetRenderTarget(renderer, NULL);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user