mirror of
https://github.com/The-Powder-Toy/The-Powder-Toy.git
synced 2025-08-21 07:31:26 +02:00
Update refresh rate when the window is moved to another display
This commit is contained in:
@@ -144,6 +144,21 @@ void blit(pixel *vid)
|
|||||||
SDL_RenderPresent(sdl_renderer);
|
SDL_RenderPresent(sdl_renderer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UpdateRefreshRate()
|
||||||
|
{
|
||||||
|
std::optional<int> refreshRate;
|
||||||
|
int displayIndex = SDL_GetWindowDisplayIndex(sdl_window);
|
||||||
|
if (displayIndex >= 0)
|
||||||
|
{
|
||||||
|
SDL_DisplayMode displayMode;
|
||||||
|
if (!SDL_GetCurrentDisplayMode(displayIndex, &displayMode) && displayMode.refresh_rate)
|
||||||
|
{
|
||||||
|
refreshRate = displayMode.refresh_rate;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ui::Engine::Ref().SetRefreshRate(refreshRate);
|
||||||
|
}
|
||||||
|
|
||||||
void SDLOpen()
|
void SDLOpen()
|
||||||
{
|
{
|
||||||
if (SDL_InitSubSystem(SDL_INIT_VIDEO) < 0)
|
if (SDL_InitSubSystem(SDL_INIT_VIDEO) < 0)
|
||||||
@@ -156,7 +171,6 @@ void SDLOpen()
|
|||||||
SDLSetScreen();
|
SDLSetScreen();
|
||||||
|
|
||||||
int displayIndex = SDL_GetWindowDisplayIndex(sdl_window);
|
int displayIndex = SDL_GetWindowDisplayIndex(sdl_window);
|
||||||
std::optional<int> refreshRate;
|
|
||||||
if (displayIndex >= 0)
|
if (displayIndex >= 0)
|
||||||
{
|
{
|
||||||
SDL_Rect rect;
|
SDL_Rect rect;
|
||||||
@@ -165,13 +179,8 @@ void SDLOpen()
|
|||||||
desktopWidth = rect.w;
|
desktopWidth = rect.w;
|
||||||
desktopHeight = rect.h;
|
desktopHeight = rect.h;
|
||||||
}
|
}
|
||||||
SDL_DisplayMode displayMode;
|
|
||||||
if (!SDL_GetCurrentDisplayMode(displayIndex, &displayMode) && displayMode.refresh_rate)
|
|
||||||
{
|
|
||||||
refreshRate = displayMode.refresh_rate;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
ui::Engine::Ref().SetRefreshRate(refreshRate);
|
UpdateRefreshRate();
|
||||||
|
|
||||||
StopTextInput();
|
StopTextInput();
|
||||||
}
|
}
|
||||||
@@ -431,6 +440,10 @@ static void EventProcess(const SDL_Event &event)
|
|||||||
calculatedInitialMouse = true;
|
calculatedInitialMouse = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SDL_WINDOWEVENT_DISPLAY_CHANGED:
|
||||||
|
UpdateRefreshRate();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user