mirror of
https://github.com/Relintai/sdl2_frt.git
synced 2024-12-20 22:16:49 +01:00
WinRT: code cleanup wrt. display mode(s)
This commit is contained in:
parent
f860141aa6
commit
17ca1d00b5
@ -41,6 +41,7 @@ extern "C" {
|
|||||||
|
|
||||||
extern SDL_Window * WINRT_GlobalSDLWindow;
|
extern SDL_Window * WINRT_GlobalSDLWindow;
|
||||||
extern SDL_VideoDevice * WINRT_GlobalSDLVideoDevice;
|
extern SDL_VideoDevice * WINRT_GlobalSDLVideoDevice;
|
||||||
|
extern SDL_DisplayMode WINRT_CalcDisplayModeUsingNativeWindow();
|
||||||
|
|
||||||
|
|
||||||
// Compile-time debugging options:
|
// Compile-time debugging options:
|
||||||
@ -305,7 +306,7 @@ void SDL_WinRTApp::OnWindowSizeChanged(CoreWindow^ sender, WindowSizeChangedEven
|
|||||||
// window-resize event as it appeared the SDL window didn't change
|
// window-resize event as it appeared the SDL window didn't change
|
||||||
// size, and the Direct3D 11.1 renderer wouldn't resize its swap
|
// size, and the Direct3D 11.1 renderer wouldn't resize its swap
|
||||||
// chain.
|
// chain.
|
||||||
SDL_DisplayMode resizedDisplayMode = CalcCurrentDisplayMode();
|
SDL_DisplayMode resizedDisplayMode = WINRT_CalcDisplayModeUsingNativeWindow();
|
||||||
WINRT_GlobalSDLVideoDevice->displays[0].current_mode = resizedDisplayMode;
|
WINRT_GlobalSDLVideoDevice->displays[0].current_mode = resizedDisplayMode;
|
||||||
WINRT_GlobalSDLVideoDevice->displays[0].desktop_mode = resizedDisplayMode;
|
WINRT_GlobalSDLVideoDevice->displays[0].desktop_mode = resizedDisplayMode;
|
||||||
WINRT_GlobalSDLVideoDevice->displays[0].display_modes[0] = resizedDisplayMode;
|
WINRT_GlobalSDLVideoDevice->displays[0].display_modes[0] = resizedDisplayMode;
|
||||||
@ -466,24 +467,3 @@ void SDL_WinRTApp::OnResuming(Platform::Object^ sender, Platform::Object^ args)
|
|||||||
SDL_FilterEvents(RemoveAppSuspendAndResumeEvents, 0);
|
SDL_FilterEvents(RemoveAppSuspendAndResumeEvents, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_DisplayMode SDL_WinRTApp::CalcCurrentDisplayMode()
|
|
||||||
{
|
|
||||||
// Create an empty, zeroed-out display mode:
|
|
||||||
SDL_DisplayMode mode;
|
|
||||||
SDL_zero(mode);
|
|
||||||
|
|
||||||
// Fill in most fields:
|
|
||||||
mode.format = SDL_PIXELFORMAT_RGB888;
|
|
||||||
mode.refresh_rate = 0; // TODO, WinRT: see if refresh rate data is available, or relevant (for WinRT apps)
|
|
||||||
mode.driverdata = NULL;
|
|
||||||
|
|
||||||
// Calculate the display size given the window size, taking into account
|
|
||||||
// the current display's DPI:
|
|
||||||
const float currentDPI = Windows::Graphics::Display::DisplayProperties::LogicalDpi;
|
|
||||||
const float dipsPerInch = 96.0f;
|
|
||||||
mode.w = (int) ((CoreWindow::GetForCurrentThread()->Bounds.Width * currentDPI) / dipsPerInch);
|
|
||||||
mode.h = (int) ((CoreWindow::GetForCurrentThread()->Bounds.Height * currentDPI) / dipsPerInch);
|
|
||||||
|
|
||||||
return mode;
|
|
||||||
}
|
|
||||||
|
@ -14,7 +14,6 @@ public:
|
|||||||
|
|
||||||
internal:
|
internal:
|
||||||
// SDL-specific methods
|
// SDL-specific methods
|
||||||
SDL_DisplayMode CalcCurrentDisplayMode();
|
|
||||||
void PumpEvents();
|
void PumpEvents();
|
||||||
Windows::Foundation::Point TransformCursor(Windows::Foundation::Point rawPosition);
|
Windows::Foundation::Point TransformCursor(Windows::Foundation::Point rawPosition);
|
||||||
|
|
||||||
|
@ -147,10 +147,33 @@ WINRT_VideoInit(_THIS)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SDL_DisplayMode
|
||||||
|
WINRT_CalcDisplayModeUsingNativeWindow()
|
||||||
|
{
|
||||||
|
// Create an empty, zeroed-out display mode:
|
||||||
|
SDL_DisplayMode mode;
|
||||||
|
SDL_zero(mode);
|
||||||
|
|
||||||
|
// Fill in most fields:
|
||||||
|
mode.format = SDL_PIXELFORMAT_RGB888;
|
||||||
|
mode.refresh_rate = 0; // TODO, WinRT: see if refresh rate data is available, or relevant (for WinRT apps)
|
||||||
|
mode.driverdata = NULL;
|
||||||
|
|
||||||
|
// Calculate the display size given the window size, taking into account
|
||||||
|
// the current display's DPI:
|
||||||
|
const float currentDPI = Windows::Graphics::Display::DisplayProperties::LogicalDpi;
|
||||||
|
const float dipsPerInch = 96.0f;
|
||||||
|
mode.w = (int) ((CoreWindow::GetForCurrentThread()->Bounds.Width * currentDPI) / dipsPerInch);
|
||||||
|
mode.h = (int) ((CoreWindow::GetForCurrentThread()->Bounds.Height * currentDPI) / dipsPerInch);
|
||||||
|
|
||||||
|
return mode;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
WINRT_InitModes(_THIS)
|
WINRT_InitModes(_THIS)
|
||||||
{
|
{
|
||||||
SDL_DisplayMode mode = SDL_WinRTGlobalApp->CalcCurrentDisplayMode();
|
SDL_DisplayMode mode = WINRT_CalcDisplayModeUsingNativeWindow();
|
||||||
if (SDL_AddBasicVideoDisplay(&mode) < 0) {
|
if (SDL_AddBasicVideoDisplay(&mode) < 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user