emscripten: Let SDL_GetDisplayUsableBounds return the size of the window

This does not account for scrollbars nor margins. But is much better then returning the full display size when not running fullscreen, but for example in an iframe.
This commit is contained in:
Daid 2020-04-09 15:01:45 +01:00
parent fb3df3a18d
commit 287772f5e9
1 changed files with 18 additions and 0 deletions

View File

@ -42,6 +42,7 @@
static int Emscripten_VideoInit(_THIS);
static int Emscripten_SetDisplayMode(_THIS, SDL_VideoDisplay * display, SDL_DisplayMode * mode);
static void Emscripten_VideoQuit(_THIS);
static int Emscripten_GetDisplayUsableBounds(_THIS, SDL_VideoDisplay * display, SDL_Rect * rect);
static int Emscripten_CreateWindow(_THIS, SDL_Window * window);
static void Emscripten_SetWindowSize(_THIS, SDL_Window * window);
@ -86,6 +87,7 @@ Emscripten_CreateDevice(int devindex)
/* Set the function pointers */
device->VideoInit = Emscripten_VideoInit;
device->VideoQuit = Emscripten_VideoQuit;
device->GetDisplayUsableBounds = Emscripten_GetDisplayUsableBounds;
device->SetDisplayMode = Emscripten_SetDisplayMode;
@ -177,6 +179,22 @@ Emscripten_VideoQuit(_THIS)
Emscripten_FiniMouse();
}
static int
Emscripten_GetDisplayUsableBounds(_THIS, SDL_VideoDisplay * display, SDL_Rect * rect)
{
if (rect) {
rect->x = 0;
rect->y = 0;
rect->w = EM_ASM_INT_V({
return window.innerWidth;
});
rect->h = EM_ASM_INT_V({
return window.innerHeight;
});
}
return 0;
}
static void
Emscripten_PumpEvents(_THIS)
{