mirror of
https://github.com/encounter/SDL.git
synced 2025-12-13 23:26:18 +00:00
add in High DPI support (aka Retina)
- based on J?rgen's patch with a few bug fixes
This commit is contained in:
@@ -117,7 +117,12 @@ SDL_RendererEventWatch(void *userdata, SDL_Event *event)
|
||||
/* Window was resized, reset viewport */
|
||||
int w, h;
|
||||
|
||||
SDL_GetWindowSize(window, &w, &h);
|
||||
if (renderer->GetOutputSize) {
|
||||
renderer->GetOutputSize(renderer, &w, &h);
|
||||
} else {
|
||||
SDL_GetWindowSize(renderer->window, &w, &h);
|
||||
}
|
||||
|
||||
if (renderer->target) {
|
||||
renderer->viewport_backup.x = 0;
|
||||
renderer->viewport_backup.y = 0;
|
||||
@@ -335,11 +340,11 @@ SDL_GetRendererOutputSize(SDL_Renderer * renderer, int *w, int *h)
|
||||
|
||||
if (renderer->target) {
|
||||
return SDL_QueryTexture(renderer->target, NULL, NULL, w, h);
|
||||
} else if (renderer->GetOutputSize) {
|
||||
return renderer->GetOutputSize(renderer, w, h);
|
||||
} else if (renderer->window) {
|
||||
SDL_GetWindowSize(renderer->window, w, h);
|
||||
return 0;
|
||||
} else if (renderer->GetOutputSize) {
|
||||
return renderer->GetOutputSize(renderer, w, h);
|
||||
} else {
|
||||
/* This should never happen */
|
||||
SDL_SetError("Renderer doesn't support querying output size");
|
||||
|
||||
@@ -47,6 +47,7 @@ static const float inv255f = 1.0f / 255.0f;
|
||||
static SDL_Renderer *GL_CreateRenderer(SDL_Window * window, Uint32 flags);
|
||||
static void GL_WindowEvent(SDL_Renderer * renderer,
|
||||
const SDL_WindowEvent *event);
|
||||
static int GL_GetOutputSize(SDL_Renderer * renderer, int *w, int *h);
|
||||
static int GL_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture);
|
||||
static int GL_UpdateTexture(SDL_Renderer * renderer, SDL_Texture * texture,
|
||||
const SDL_Rect * rect, const void *pixels,
|
||||
@@ -399,6 +400,7 @@ GL_CreateRenderer(SDL_Window * window, Uint32 flags)
|
||||
}
|
||||
|
||||
renderer->WindowEvent = GL_WindowEvent;
|
||||
renderer->GetOutputSize = GL_GetOutputSize;
|
||||
renderer->CreateTexture = GL_CreateTexture;
|
||||
renderer->UpdateTexture = GL_UpdateTexture;
|
||||
renderer->LockTexture = GL_LockTexture;
|
||||
@@ -539,6 +541,14 @@ GL_WindowEvent(SDL_Renderer * renderer, const SDL_WindowEvent *event)
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
GL_GetOutputSize(SDL_Renderer * renderer, int *w, int *h)
|
||||
{
|
||||
SDL_GL_GetDrawableSize(renderer->window, w, h);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
SDL_FORCE_INLINE int
|
||||
power_of_2(int input)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user