Skip to content

Commit

Permalink
Only pause rendering if the Android activity is stopped
Browse files Browse the repository at this point in the history
  • Loading branch information
grorp committed Jan 19, 2024
1 parent 699d1bf commit 4d89fe2
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 15 deletions.
2 changes: 1 addition & 1 deletion src/client/game.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4207,7 +4207,7 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, f32 dtime,
/*
==================== Drawing begins ====================
*/
if (RenderingEngine::shouldRender())
if (device->isWindowVisible())
drawScene(graph, stats);
/*
==================== End scene ====================
Expand Down
11 changes: 0 additions & 11 deletions src/client/renderingengine.h
Original file line number Diff line number Diff line change
Expand Up @@ -138,17 +138,6 @@ class RenderingEngine
const irr::core::dimension2d<u32> initial_screen_size,
const bool initial_window_maximized);

static bool shouldRender()
{
// On Android, pause rendering while the app is in background (generally not visible).
// Don't do this on desktop because windows can be partially visible.
#ifdef __ANDROID__
return get_raw_device()->isWindowActive();
#else
return true;
#endif
};

private:
v2u32 _getWindowSize() const;

Expand Down
5 changes: 2 additions & 3 deletions src/gui/guiEngine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,7 @@ bool GUIEngine::loadMainMenuScript()
/******************************************************************************/
void GUIEngine::run()
{
IrrlichtDevice *device = m_rendering_engine->get_raw_device();
// Always create clouds because they may or may not be
// needed based on the game selected
video::IVideoDriver *driver = m_rendering_engine->get_video_driver();
Expand Down Expand Up @@ -265,7 +266,7 @@ void GUIEngine::run()
f32 dtime = 0.0f;

while (m_rendering_engine->run() && (!m_startgame) && (!m_kill)) {
if (RenderingEngine::shouldRender()) {
if (device->isWindowVisible()) {
// check if we need to update the "upper left corner"-text
if (text_height != g_fontengine->getTextHeight()) {
updateTopLeftTextSize();
Expand Down Expand Up @@ -295,8 +296,6 @@ void GUIEngine::run()
driver->endScene();
}

IrrlichtDevice *device = m_rendering_engine->get_raw_device();

u32 frametime_min = 1000 / (device->isWindowFocused()
? g_settings->getFloat("fps_max")
: g_settings->getFloat("fps_max_unfocused"));
Expand Down

0 comments on commit 4d89fe2

Please sign in to comment.