]> git.tdb.fi Git - libs/core.git/blob - source/core/android/mainthread.h
Use nullptr instead of 0 for pointers
[libs/core.git] / source / core / android / mainthread.h
1 #ifndef MSP_CORE_ANDROID_MAINTHREAD_H_
2 #define MSP_CORE_ANDROID_MAINTHREAD_H_
3
4 #include <android/native_activity.h>
5 #include <sigc++/signal.h>
6 #include <msp/fs/path.h>
7 #include "mutex.h"
8 #include "thread.h"
9
10 namespace Msp {
11 namespace Android {
12
13 class MainThread: public Thread
14 {
15 public:
16         sigc::signal<void, ANativeWindow *> signal_native_window_created;
17         sigc::signal<void, ANativeWindow *> signal_native_window_resized;
18         sigc::signal<void, ANativeWindow *> signal_native_window_destroyed;
19         sigc::signal<void, AInputQueue *> signal_input_queue_created;
20         sigc::signal<void, AInputQueue *> signal_input_queue_destroyed;
21
22 private:
23         ANativeActivity *activity = nullptr;
24         AAssetManager *asset_manager = nullptr;
25         FS::Path int_data_path;
26         bool starting_up = true;
27         Mutex startup_mutex;
28
29 public:
30         MainThread(ANativeActivity *);
31
32         void attach_to_activity(ANativeActivity *);
33         bool is_starting_up() const { return starting_up; }
34         void wait_for_app_created();
35         void resume_startup();
36
37         JavaVM *get_java_vm() const;
38         AAssetManager *get_asset_manager() const { return asset_manager; }
39         const FS::Path &get_internal_data_path() const { return int_data_path; }
40
41         void set_window_flags(unsigned, unsigned);
42
43 private:
44         virtual void main();
45
46         static void app_created(void *);
47         static void activity_destroyed(ANativeActivity *);
48         static void native_window_created(ANativeActivity *, ANativeWindow *);
49         static void native_window_resized(ANativeActivity *, ANativeWindow *);
50         static void native_window_destroyed(ANativeActivity *, ANativeWindow *);
51         static void input_queue_created(ANativeActivity *, AInputQueue *);
52         static void input_queue_destroyed(ANativeActivity *, AInputQueue *);
53         static void end_process(ANativeActivity *);
54 };
55
56 } // namespace Android
57 } // namespace Msp
58
59 #endif