[Scummvm-git-logs] scummvm master -> a1a53eb2055081d7730ccd6fe1d43e9acf646d6c
phcoder
phcoder at gmail.com
Tue Nov 3 11:36:55 UTC 2020
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
a1a53eb205 ANDROID: Fix android3d compilation (#2594)
Commit: a1a53eb2055081d7730ccd6fe1d43e9acf646d6c
https://github.com/scummvm/scummvm/commit/a1a53eb2055081d7730ccd6fe1d43e9acf646d6c
Author: Vladimir Serbinenko (phcoder at google.com)
Date: 2020-11-03T12:36:51+01:00
Commit Message:
ANDROID: Fix android3d compilation (#2594)
SAF was added to android but not android3d yet it is in both cases
in posifxfs.
Merging android and android3d will be a separate project
Changed paths:
backends/platform/android3d/jni-android.cpp
backends/platform/android3d/jni-android.h
diff --git a/backends/platform/android3d/jni-android.cpp b/backends/platform/android3d/jni-android.cpp
index 9a6b8e71c0..257918c26c 100644
--- a/backends/platform/android3d/jni-android.cpp
+++ b/backends/platform/android3d/jni-android.cpp
@@ -91,6 +91,9 @@ jmethodID JNI::_MID_convertEncoding = 0;
jmethodID JNI::_MID_getAllStorageLocations = 0;
jmethodID JNI::_MID_initSurface = 0;
jmethodID JNI::_MID_deinitSurface = 0;
+jmethodID JNI::_MID_createDirectoryWithSAF = 0;
+jmethodID JNI::_MID_createFileWithSAF = 0;
+jmethodID JNI::_MID_closeFileWithSAF = 0;
jmethodID JNI::_MID_EGL10_eglSwapBuffers = 0;
@@ -570,6 +573,9 @@ void JNI::create(JNIEnv *env, jobject self, jobject asset_manager,
FIND_METHOD(, convertEncoding, "(Ljava/lang/String;Ljava/lang/String;[B)[B");
FIND_METHOD(, initSurface, "()Ljavax/microedition/khronos/egl/EGLSurface;");
FIND_METHOD(, deinitSurface, "()V");
+ FIND_METHOD(, createDirectoryWithSAF, "(Ljava/lang/String;)Z");
+ FIND_METHOD(, createFileWithSAF, "(Ljava/lang/String;)Ljava/lang/String;");
+ FIND_METHOD(, closeFileWithSAF, "(Ljava/lang/String;)V");
_jobj_egl = env->NewGlobalRef(egl);
_jobj_egl_display = env->NewGlobalRef(egl_display);
@@ -788,5 +794,62 @@ Common::Array<Common::String> JNI::getAllStorageLocations() {
return *res;
}
+bool JNI::createDirectoryWithSAF(const Common::String &dirPath) {
+ JNIEnv *env = JNI::getEnv();
+ jstring javaDirPath = env->NewStringUTF(dirPath.c_str());
+
+ bool created = env->CallBooleanMethod(_jobj, _MID_createDirectoryWithSAF, javaDirPath);
+
+ if (env->ExceptionCheck()) {
+ LOGE("JNI - Failed to create directory with SAF enhanced method");
+
+ env->ExceptionDescribe();
+ env->ExceptionClear();
+ created = false;
+ }
+
+ return created;
+
+}
+
+Common::String JNI::createFileWithSAF(const Common::String &filePath) {
+ JNIEnv *env = JNI::getEnv();
+ jstring javaFilePath = env->NewStringUTF(filePath.c_str());
+
+ jstring hackyFilenameJSTR = (jstring)env->CallObjectMethod(_jobj, _MID_createFileWithSAF, javaFilePath);
+
+
+ if (env->ExceptionCheck()) {
+ LOGE("JNI - Failed to create file with SAF enhanced method");
+
+ env->ExceptionDescribe();
+ env->ExceptionClear();
+ hackyFilenameJSTR = env->NewStringUTF("");
+ }
+
+ Common::String hackyFilenameStr = convertFromJString(env, hackyFilenameJSTR, "UTF-8");
+
+ //LOGD("JNI - _MID_createFileWithSAF returned %s", hackyFilenameStr.c_str());
+ env->DeleteLocalRef(hackyFilenameJSTR);
+
+ return hackyFilenameStr;
+
+}
+
+void JNI::closeFileWithSAF(const Common::String &hackyFilename) {
+ JNIEnv *env = JNI::getEnv();
+ jstring javaHackyFilename = env->NewStringUTF(hackyFilename.c_str());
+
+ env->CallVoidMethod(_jobj, _MID_closeFileWithSAF, javaHackyFilename);
+
+ if (env->ExceptionCheck()) {
+ LOGE("JNI - Failed to close file with SAF enhanced method");
+
+ env->ExceptionDescribe();
+ env->ExceptionClear();
+ }
+
+}
+
#endif
diff --git a/backends/platform/android3d/jni-android.h b/backends/platform/android3d/jni-android.h
index a54ba3acf9..393c78ad6c 100644
--- a/backends/platform/android3d/jni-android.h
+++ b/backends/platform/android3d/jni-android.h
@@ -85,6 +85,10 @@ public:
static Common::Array<Common::String> getAllStorageLocations();
+ static bool createDirectoryWithSAF(const Common::String &dirPath);
+ static Common::String createFileWithSAF(const Common::String &filePath);
+ static void closeFileWithSAF(const Common::String &hackyFilename);
+
private:
static JavaVM *_vm;
// back pointer to (java) peer instance
@@ -114,6 +118,9 @@ private:
static jmethodID _MID_getAllStorageLocations;
static jmethodID _MID_initSurface;
static jmethodID _MID_deinitSurface;
+ static jmethodID _MID_createDirectoryWithSAF;
+ static jmethodID _MID_createFileWithSAF;
+ static jmethodID _MID_closeFileWithSAF;
static jmethodID _MID_EGL10_eglSwapBuffers;
More information about the Scummvm-git-logs
mailing list