mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2024-11-25 07:35:38 +00:00
(macOS) Reduced the CPU usage significantly while running in the background.
This commit is contained in:
parent
08bba3cbaf
commit
2d8d1e6831
|
@ -414,7 +414,22 @@ namespace Renderer
|
||||||
|
|
||||||
void swapBuffers()
|
void swapBuffers()
|
||||||
{
|
{
|
||||||
|
#if defined(__APPLE__)
|
||||||
|
// On macOS when running in the background, the OpenGL driver apparently does not swap
|
||||||
|
// the frames which leads to a very fast swap time. This makes ES-DE use a lot of CPU
|
||||||
|
// resources which slows down the games significantly on slower machines. By introducing
|
||||||
|
// a delay if the swap time is very low we reduce CPU usage while still keeping the
|
||||||
|
// application functioning normally.
|
||||||
|
const auto beforeSwap = std::chrono::system_clock::now();
|
||||||
SDL_GL_SwapWindow(getSDLWindow());
|
SDL_GL_SwapWindow(getSDLWindow());
|
||||||
|
const auto afterSwap = std::chrono::system_clock::now();
|
||||||
|
|
||||||
|
if (std::chrono::duration_cast<std::chrono::milliseconds>(afterSwap - beforeSwap).count() <
|
||||||
|
3.0)
|
||||||
|
SDL_Delay(10);
|
||||||
|
#else
|
||||||
|
SDL_GL_SwapWindow(getSDLWindow());
|
||||||
|
#endif
|
||||||
GL_CHECK_ERROR(glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT));
|
GL_CHECK_ERROR(glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue