summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/client.cpp17
-rw-r--r--src/game.cpp4
2 files changed, 21 insertions, 0 deletions
diff --git a/src/client.cpp b/src/client.cpp
index a73dc6806..fe5ec8e16 100644
--- a/src/client.cpp
+++ b/src/client.cpp
@@ -883,6 +883,7 @@ int Client::gameExec()
{
case SDL_QUIT:
mState = STATE_EXIT;
+ logger->log("force exit");
break;
case SDL_KEYDOWN:
@@ -907,7 +908,21 @@ int Client::gameExec()
inputManager.handleAssignKey(event, INPUT_JOYSTICK);
break;
+#ifdef ANDROID
+ case SDL_ACTIVEEVENT:
+ if ((event.active.state & SDL_APPACTIVE)
+ && !event.active.gain)
+ {
+ mState = STATE_EXIT;
+ logger->log("exit on lost focus");
+ }
+ break;
+#endif
+ case SDL_MOUSEMOTION:
+ break;
+
default:
+// logger->log("unknown event: %d", event.type);
break;
case SDL_VIDEORESIZE:
@@ -924,6 +939,8 @@ int Client::gameExec()
}
#endif
}
+ if (mState == STATE_EXIT)
+ continue;
BLOCK_END("Client::gameExec 2")
}
diff --git a/src/game.cpp b/src/game.cpp
index 3cf000229..df23a0146 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -871,12 +871,16 @@ void Game::handleActive(const SDL_Event &event)
}
else
{ // window minimisation
+#ifdef ANDROID
+ Client::setState(STATE_EXIT);
+#else
Client::setIsMinimized(true);
if (player_node && !player_node->getAway())
{
fpsLimit = config.getIntValue("altfpslimit");
player_node->setHalfAway(true);
}
+#endif
}
if (player_node)
player_node->updateStatus();