summaryrefslogtreecommitdiff
path: root/sal/android/libreofficekit-jni.c
diff options
context:
space:
mode:
authorChristian Lohmaier <lohmaier+LibreOffice@googlemail.com>2015-10-11 01:52:39 +0200
committerChristian Lohmaier <lohmaier+LibreOffice@googlemail.com>2015-10-11 02:03:43 +0200
commit143fb0a4b5d4ab69d4928299d8112ab95d99870a (patch)
tree094673c521e14d4ba52fd706acba07be96bead49 /sal/android/libreofficekit-jni.c
parentee8257a1c70eadb7330b0ee99ec3b86fe4084bdf (diff)
move extracting assets to Java & use AssetManager to access assets
using AssetsManager in both java as well as native parts allows to handle files both with and without compression transparently Change-Id: If02f1159c498be7ea965fd9c217410722f2dca1f
Diffstat (limited to 'sal/android/libreofficekit-jni.c')
-rw-r--r--sal/android/libreofficekit-jni.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/sal/android/libreofficekit-jni.c b/sal/android/libreofficekit-jni.c
index 41fa97e8273d..c5f53c92bcd5 100644
--- a/sal/android/libreofficekit-jni.c
+++ b/sal/android/libreofficekit-jni.c
@@ -21,6 +21,8 @@
#include <jni.h>
#include <android/log.h>
+#include <android/asset_manager.h>
+#include <android/asset_manager_jni.h>
#include <osl/detail/android-bootstrap.h>
@@ -34,6 +36,7 @@ extern const char* data_dir;
extern const char* cache_dir;
extern void* apk_file;
extern int apk_file_size;
+AAssetManager* native_asset_manager;
extern void Java_org_libreoffice_android_Bootstrap_putenv(JNIEnv* env, jobject clazz, jstring string);
extern void Java_org_libreoffice_android_Bootstrap_redirect_1stdio(JNIEnv* env, jobject clazz, jboolean state);
@@ -63,7 +66,7 @@ void Java_org_libreoffice_kit_LibreOfficeKit_redirectStdio
__attribute__ ((visibility("default")))
jboolean Java_org_libreoffice_kit_LibreOfficeKit_initializeNative
(JNIEnv* env, jobject clazz,
- jstring dataDir, jstring cacheDir, jstring apkFile)
+ jstring dataDir, jstring cacheDir, jstring apkFile, jobject assetManager)
{
struct stat st;
int fd;
@@ -76,6 +79,8 @@ jboolean Java_org_libreoffice_kit_LibreOfficeKit_initializeNative
(void) clazz;
+ native_asset_manager = AAssetManager_fromJava(env, assetManager);
+
dataDirPath = (*env)->GetStringUTFChars(env, dataDir, NULL);
data_dir = strdup(dataDirPath);
(*env)->ReleaseStringUTFChars(env, dataDir, dataDirPath);
@@ -122,10 +127,6 @@ jboolean Java_org_libreoffice_kit_LibreOfficeKit_initializeNative
return JNI_FALSE;
}
- // Extract files from the .apk that can't be used mmapped directly from it
- extract_files(UNPACK_TREE, UNPACK_TREE, 0);
- extract_files(UNPACK_TREE_GZ, UNPACK_TREE_GZ, 1);
-
// LibreOfficeKit expects a path to the program/ directory
free(full_program_dir);
data_dir_len = strlen(data_dir);
@@ -160,4 +161,12 @@ jobject Java_org_libreoffice_kit_LibreOfficeKit_getLibreOfficeKitHandle
return (*env)->NewDirectByteBuffer(env, (void*) aOffice, sizeof(LibreOfficeKit));
}
+__attribute__ ((visibility("default")))
+AAssetManager *
+lo_get_native_assetmgr(void)
+{
+ return native_asset_manager;
+}
+
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */