22 #ifndef _ANDROID_JNI_H_ 23 #define _ANDROID_JNI_H_ 26 #include <semaphore.h> 29 #include "common/fs.h" 30 #include "common/archive.h" 31 #include "common/array.h" 32 #include "common/ustr.h" 46 static bool assets_updated;
49 static sem_t pause_sem;
51 static int surface_changeid;
52 static int egl_surface_width;
53 static int egl_surface_height;
54 static int egl_bits_per_pixel;
56 static bool virt_keyboard_state;
58 static int32 gestures_insets[4];
59 static int32 cutout_insets[4];
61 static jint onLoad(JavaVM *vm);
63 static inline JNIEnv *getEnv() {
64 JNIEnv *env = (JNIEnv*) pthread_getspecific(_env_tls);
72 static void attachThread();
73 static void detachThread();
75 static void setReadyForEvents(
bool ready);
76 static void wakeupForQuit();
83 typedef float DPIValues[3];
84 static void getDPI(DPIValues &values);
87 static bool hasTextInClipboard();
90 static bool isConnectionLimited();
91 static void showVirtualKeyboard(
bool enable);
92 static void showOnScreenControls(
int enableMask);
93 static void setTouchMode(
int touchMode);
94 static int getTouchMode();
95 static void setOrientation(
int touchMode);
101 static jint getAndroidSDKVersionId();
104 static inline bool haveSurface();
105 static inline bool swapBuffers();
106 static bool initSurface();
107 static void deinitSurface();
108 static int eglVersion() {
112 return fetchEGLVersion();
125 static pthread_key_t _env_tls;
129 static jobject _jobj;
130 static jobject _jobj_egl;
131 static jobject _jobj_egl_display;
132 static jobject _jobj_egl_surface;
134 static int _egl_version;
139 static bool _ready_for_events;
141 static jmethodID _MID_getDPI;
142 static jmethodID _MID_displayMessageOnOSD;
143 static jmethodID _MID_openUrl;
144 static jmethodID _MID_hasTextInClipboard;
145 static jmethodID _MID_getTextFromClipboard;
146 static jmethodID _MID_setTextInClipboard;
147 static jmethodID _MID_isConnectionLimited;
148 static jmethodID _MID_setWindowCaption;
149 static jmethodID _MID_showVirtualKeyboard;
150 static jmethodID _MID_showOnScreenControls;
151 static jmethodID _MID_setTouchMode;
152 static jmethodID _MID_getTouchMode;
153 static jmethodID _MID_setOrientation;
154 static jmethodID _MID_getScummVMBasePath;
155 static jmethodID _MID_getScummVMConfigPath;
156 static jmethodID _MID_getScummVMLogPath;
157 static jmethodID _MID_setCurrentGame;
158 static jmethodID _MID_getSysArchives;
159 static jmethodID _MID_getAllStorageLocations;
160 static jmethodID _MID_initSurface;
161 static jmethodID _MID_deinitSurface;
162 static jmethodID _MID_eglVersion;
163 static jmethodID _MID_getNewSAFTree;
164 static jmethodID _MID_getSAFTrees;
165 static jmethodID _MID_findSAFTree;
166 static jmethodID _MID_exportBackup;
167 static jmethodID _MID_importBackup;
169 static jmethodID _MID_EGL10_eglSwapBuffers;
171 static const JNINativeMethod _natives[];
173 static void throwByName(JNIEnv *env,
const char *name,
const char *msg);
174 static void throwRuntimeException(JNIEnv *env,
const char *msg);
177 static void create(JNIEnv *env, jobject
self, jobject asset_manager,
178 jobject egl, jobject egl_display,
179 jboolean assets_updated_);
180 static void destroy(JNIEnv *env, jobject
self);
182 static void setSurface(JNIEnv *env, jobject
self, jint width, jint height, jint bpp);
183 static jint main(JNIEnv *env, jobject
self, jobjectArray args);
185 static void pushEvent(JNIEnv *env, jobject
self,
int type,
int arg1,
186 int arg2,
int arg3,
int arg4,
int arg5,
int arg6);
187 static void updateTouch(JNIEnv *env, jobject
self,
int action,
int ptr,
int x,
int y);
188 static void setupTouchMode(JNIEnv *env, jobject
self, jint oldValue, jint newValue);
189 static void syncVirtkeyboardState(JNIEnv *env, jobject
self, jboolean newState);
190 static void setPause(JNIEnv *env, jobject
self, jboolean value);
192 static void systemInsetsUpdated(JNIEnv *env, jobject
self, jintArray gestureInsets, jintArray systemInsets, jintArray cutoutInsets);
194 static void setDefaultAudioValues(JNIEnv *env, jclass clazz, jint sampleRate, jint framesPerBurst);
195 static void notifyAudioDisconnect(JNIEnv *env, jclass clazz);
197 static jstring getNativeVersionInfo(JNIEnv *env, jobject
self);
201 static JNIEnv *fetchEnv();
202 static int fetchEGLVersion();
205 inline bool JNI::haveSurface() {
206 return _jobj_egl_surface != 0;
209 inline bool JNI::swapBuffers() {
210 JNIEnv *env = JNI::getEnv();
212 return env->CallBooleanMethod(_jobj_egl, _MID_EGL10_eglSwapBuffers,
213 _jobj_egl_display, _jobj_egl_surface);
Definition: archive.h:141
Definition: archive.h:330
Definition: jni-android.h:40
Definition: formatinfo.h:28