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" 33 #include "engines/engine.h" 47 static bool assets_updated;
50 static sem_t pause_sem;
52 static int surface_changeid;
53 static int egl_surface_width;
54 static int egl_surface_height;
55 static int egl_bits_per_pixel;
57 static bool virt_keyboard_state;
59 static int32 gestures_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);
100 static jint getAndroidSDKVersionId();
103 static inline bool haveSurface();
104 static inline bool swapBuffers();
105 static bool initSurface();
106 static void deinitSurface();
107 static int eglVersion() {
111 return fetchEGLVersion();
114 static void setAudioPause();
115 static void setAudioPlay();
116 static void setAudioStop();
118 static inline int writeAudio(JNIEnv *env, jbyteArray &data,
int offset,
128 static pthread_key_t _env_tls;
132 static jobject _jobj;
133 static jobject _jobj_audio_track;
134 static jobject _jobj_egl;
135 static jobject _jobj_egl_display;
136 static jobject _jobj_egl_surface;
138 static int _egl_version;
143 static bool _ready_for_events;
145 static jmethodID _MID_getDPI;
146 static jmethodID _MID_displayMessageOnOSD;
147 static jmethodID _MID_openUrl;
148 static jmethodID _MID_hasTextInClipboard;
149 static jmethodID _MID_getTextFromClipboard;
150 static jmethodID _MID_setTextInClipboard;
151 static jmethodID _MID_isConnectionLimited;
152 static jmethodID _MID_setWindowCaption;
153 static jmethodID _MID_showVirtualKeyboard;
154 static jmethodID _MID_showOnScreenControls;
155 static jmethodID _MID_setTouchMode;
156 static jmethodID _MID_getTouchMode;
157 static jmethodID _MID_setOrientation;
158 static jmethodID _MID_getScummVMBasePath;
159 static jmethodID _MID_getScummVMConfigPath;
160 static jmethodID _MID_getScummVMLogPath;
161 static jmethodID _MID_setCurrentGame;
162 static jmethodID _MID_getSysArchives;
163 static jmethodID _MID_getAllStorageLocations;
164 static jmethodID _MID_initSurface;
165 static jmethodID _MID_deinitSurface;
166 static jmethodID _MID_eglVersion;
167 static jmethodID _MID_getNewSAFTree;
168 static jmethodID _MID_getSAFTrees;
169 static jmethodID _MID_findSAFTree;
171 static jmethodID _MID_EGL10_eglSwapBuffers;
173 static jmethodID _MID_AudioTrack_flush;
174 static jmethodID _MID_AudioTrack_pause;
175 static jmethodID _MID_AudioTrack_play;
176 static jmethodID _MID_AudioTrack_stop;
177 static jmethodID _MID_AudioTrack_write;
179 static const JNINativeMethod _natives[];
181 static void throwByName(JNIEnv *env,
const char *name,
const char *msg);
182 static void throwRuntimeException(JNIEnv *env,
const char *msg);
185 static void create(JNIEnv *env, jobject
self, jobject asset_manager,
186 jobject egl, jobject egl_display,
187 jobject at, jint audio_sample_rate,
188 jint audio_buffer_size,
189 jboolean assets_updated_);
190 static void destroy(JNIEnv *env, jobject
self);
192 static void setSurface(JNIEnv *env, jobject
self, jint width, jint height, jint bpp);
193 static jint main(JNIEnv *env, jobject
self, jobjectArray args);
195 static void pushEvent(JNIEnv *env, jobject
self,
int type,
int arg1,
196 int arg2,
int arg3,
int arg4,
int arg5,
int arg6);
197 static void updateTouch(JNIEnv *env, jobject
self,
int action,
int ptr,
int x,
int y);
198 static void setupTouchMode(JNIEnv *env, jobject
self, jint oldValue, jint newValue);
199 static void syncVirtkeyboardState(JNIEnv *env, jobject
self, jboolean newState);
200 static void setPause(JNIEnv *env, jobject
self, jboolean value);
202 static void systemInsetsUpdated(JNIEnv *env, jobject
self, jintArray gestureInsets, jintArray systemInsets, jintArray cutoutInsets);
204 static jstring getNativeVersionInfo(JNIEnv *env, jobject
self);
210 static JNIEnv *fetchEnv();
211 static int fetchEGLVersion();
214 inline bool JNI::haveSurface() {
215 return _jobj_egl_surface != 0;
218 inline bool JNI::swapBuffers() {
219 JNIEnv *env = JNI::getEnv();
221 return env->CallBooleanMethod(_jobj_egl, _MID_EGL10_eglSwapBuffers,
222 _jobj_egl_display, _jobj_egl_surface);
225 inline int JNI::writeAudio(JNIEnv *env, jbyteArray &data,
int offset,
int size) {
226 return env->CallIntMethod(_jobj_audio_track, _MID_AudioTrack_write, data,
Definition: archive.h:141
Definition: archive.h:312
Definition: jni-android.h:41
Definition: formatinfo.h:28