Handle DPI scaling in SDL_GetWindowSurface
Fixes DPI awareness of testdrawchessboard (previously, the surface was being created in points instead of pixels, resulting in the demo app only drawing in a corner of the screen on High-DPI displays) *_CreateWindowFramebuffer()/*_UpdateWindowFramebuffer(): are updated to use SDL_GetWindowSizeInPixels instead of SDL_GetWindowSize() or window->w/window->h. Most of the _CreateWindowFramebuffer backends are untested except for Windows. Fixes #7047
This commit is contained in:
parent
6d11515873
commit
67c91353e0
11 changed files with 57 additions and 35 deletions
|
@ -39,6 +39,9 @@ int RISCOS_CreateWindowFramebuffer(_THIS, SDL_Window *window, Uint32 *format, vo
|
|||
_kernel_swi_regs regs;
|
||||
SDL_DisplayMode mode;
|
||||
int size;
|
||||
int w, h;
|
||||
|
||||
SDL_GetWindowSizeInPixels(window, &w, &h);
|
||||
|
||||
/* Free the old framebuffer surface */
|
||||
RISCOS_DestroyWindowFramebuffer(_this, window);
|
||||
|
@ -54,10 +57,10 @@ int RISCOS_CreateWindowFramebuffer(_THIS, SDL_Window *window, Uint32 *format, vo
|
|||
}
|
||||
|
||||
/* Calculate pitch */
|
||||
*pitch = (((window->w * SDL_BYTESPERPIXEL(*format)) + 3) & ~3);
|
||||
*pitch = (((w * SDL_BYTESPERPIXEL(*format)) + 3) & ~3);
|
||||
|
||||
/* Allocate the sprite area */
|
||||
size = sizeof(sprite_area) + sizeof(sprite_header) + ((*pitch) * window->h);
|
||||
size = sizeof(sprite_area) + sizeof(sprite_header) + ((*pitch) * h);
|
||||
driverdata->fb_area = SDL_malloc(size);
|
||||
if (!driverdata->fb_area) {
|
||||
return SDL_OutOfMemory();
|
||||
|
@ -73,8 +76,8 @@ int RISCOS_CreateWindowFramebuffer(_THIS, SDL_Window *window, Uint32 *format, vo
|
|||
regs.r[1] = (int)driverdata->fb_area;
|
||||
regs.r[2] = (int)sprite_name;
|
||||
regs.r[3] = 0;
|
||||
regs.r[4] = window->w;
|
||||
regs.r[5] = window->h;
|
||||
regs.r[4] = w;
|
||||
regs.r[5] = h;
|
||||
regs.r[6] = sprite_mode;
|
||||
error = _kernel_swi(OS_SpriteOp, ®s, ®s);
|
||||
if (error != NULL) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue