]> git.tdb.fi Git - libs/core.git/blobdiff - source/core/android/mainthread.cpp
Expose window flags and set fullscreen mode by default
[libs/core.git] / source / core / android / mainthread.cpp
index 473379bd71ce373c4e8e8829d4a00ece43ff3c57..255eaa3260b892f43ae5d69eb670340b6a487120 100644 (file)
@@ -1,4 +1,6 @@
 #include <cstring>
+#include <cstdlib>
+#include <android/window.h>
 #include <msp/fs/dir.h>
 #include <msp/fs/path.h>
 #include <msp/fs/utils.h>
@@ -31,6 +33,8 @@ void MainThread::attach_to_activity(ANativeActivity *a)
        activity->callbacks->onInputQueueCreated = &input_queue_created;
        activity->callbacks->onInputQueueDestroyed = &input_queue_destroyed;
        activity->instance = this;
+
+       set_window_flags(AWINDOW_FLAG_FULLSCREEN, 0);
 }
 
 void MainThread::wait_for_app_created()
@@ -47,6 +51,11 @@ void MainThread::resume_startup()
        }
 }
 
+void MainThread::set_window_flags(unsigned set, unsigned clear)
+{
+       ANativeActivity_setWindowFlags(activity, set, clear);
+}
+
 void MainThread::main()
 {
        /* I have no idea how dependable this is, but it seems to be the only way
@@ -58,7 +67,12 @@ void MainThread::main()
        Msp::Application::run(1, argv, this, &app_created);
        free(appname);
        if(activity)
+       {
+               activity->callbacks->onDestroy = &end_process;
                ANativeActivity_finish(activity);
+       }
+       else
+               end_process(0);
 }
 
 void MainThread::app_created(void *data)
@@ -96,5 +110,10 @@ void MainThread::input_queue_destroyed(ANativeActivity *activity, AInputQueue *q
        reinterpret_cast<MainThread *>(activity->instance)->signal_input_queue_destroyed.emit(queue);
 }
 
+void MainThread::end_process(ANativeActivity *)
+{
+       exit(0);
+}
+
 } // namespace Android
 } // namespace Msp