diff options
-rw-r--r-- | android/Bootstrap/src/org/libreoffice/android/Bootstrap.java | 2 | ||||
-rw-r--r-- | android/Bootstrap/src/org/libreoffice/android/LibreOfficeKit.java | 2 | ||||
-rw-r--r-- | android/experimental/LOAndroid3/Makefile | 2 | ||||
-rw-r--r-- | android/experimental/LOAndroid3/src/java/org/libreoffice/LibreOfficeMainActivity.java | 13 | ||||
-rw-r--r-- | sal/android/libreofficekit-jni.c | 29 | ||||
-rw-r--r-- | sal/android/lo-bootstrap.c | 30 | ||||
-rwxr-xr-x | solenv/bin/native-code.py | 5 |
7 files changed, 55 insertions, 28 deletions
diff --git a/android/Bootstrap/src/org/libreoffice/android/Bootstrap.java b/android/Bootstrap/src/org/libreoffice/android/Bootstrap.java index 9d3bc89f9bed..13d1a23fdfa9 100644 --- a/android/Bootstrap/src/org/libreoffice/android/Bootstrap.java +++ b/android/Bootstrap/src/org/libreoffice/android/Bootstrap.java @@ -60,7 +60,7 @@ public final class Bootstrap // A method that starts a thread to redirect stdout and stderr writes to // the Android logging mechanism, or stops the redirection. - public static native boolean redirect_stdio(boolean state); + public static native void redirect_stdio(boolean state); // The DIB returned by css.awt.XBitmap.getDIB is in BGR_888 form, at least // for Writer documents. We need it in Android's Bitmap.Config.ARGB_888 diff --git a/android/Bootstrap/src/org/libreoffice/android/LibreOfficeKit.java b/android/Bootstrap/src/org/libreoffice/android/LibreOfficeKit.java index 82b889e2548f..e7507d5a1dcf 100644 --- a/android/Bootstrap/src/org/libreoffice/android/LibreOfficeKit.java +++ b/android/Bootstrap/src/org/libreoffice/android/LibreOfficeKit.java @@ -61,7 +61,7 @@ public final class LibreOfficeKit */ // A method that starts a thread to redirect stdout and stderr writes to // the Android logging mechanism, or stops the redirection. - public static native boolean redirect_stdio(boolean state); + public static native void redirect_stdio(boolean state); /* // The DIB returned by css.awt.XBitmap.getDIB is in BGR_888 form, at least // for Writer documents. We need it in Android's Bitmap.Config.ARGB_888 diff --git a/android/experimental/LOAndroid3/Makefile b/android/experimental/LOAndroid3/Makefile index 4db011f13616..5169b2d4eb35 100644 --- a/android/experimental/LOAndroid3/Makefile +++ b/android/experimental/LOAndroid3/Makefile @@ -13,7 +13,7 @@ BOOTSTRAPDIR=../../Bootstrap include $(BOOTSTRAPDIR)/Makefile.shared native-code.cxx: $(SRCDIR)/solenv/bin/native-code.py - $< -g core -g writer > $@ + $< -j -g core -g writer > $@ copy-stuff: # Then "assets". Let the directory structure under assets mimic diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LibreOfficeMainActivity.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LibreOfficeMainActivity.java index d4758443bf13..3d30dcc8e80e 100644 --- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LibreOfficeMainActivity.java +++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LibreOfficeMainActivity.java @@ -16,7 +16,7 @@ import org.mozilla.gecko.gfx.GeckoSoftwareLayerClient; import org.mozilla.gecko.gfx.LayerController; import org.mozilla.gecko.gfx.LayerView; -import org.libreoffice.android.Bootstrap; +import org.libreoffice.android.LibreOfficeKit; import com.sun.star.frame.XComponentLoader; import com.sun.star.lang.XMultiComponentFactory; @@ -74,18 +74,19 @@ public class LibreOfficeMainActivity extends Activity { super.onCreate(savedInstanceState); try { - Bootstrap.setup(this); - Bootstrap.putenv("SAL_LOG=+WARN+INFO-INFO.legacy.osl"); + LibreOfficeKit.init(this); + LibreOfficeKit.putenv("SAL_LOG=+WARN+INFO-INFO.legacy.osl"); setContentView(R.layout.activity_main); Log.w(LOGTAG, "zerdatime " + SystemClock.uptimeMillis() + " - onCreate"); + /* String input = "/assets/test1.odt"; String[] argv = { "lo-document-loader", input }; - Bootstrap.setCommandArgs(argv); + LibreOfficeKit.setCommandArgs(argv); Bootstrap.initVCL(); @@ -102,7 +103,7 @@ public class LibreOfficeMainActivity extends Activity { componentLoader = (XComponentLoader) UnoRuntime.queryInterface(XComponentLoader.class, desktop); Log.i(LOGTAG, "componentLoader is" + (componentLoader!=null ? " not" : "") + " null"); - + */ } catch (Exception e) { e.printStackTrace(System.err); //finish(); @@ -143,3 +144,5 @@ public class LibreOfficeMainActivity extends Activity { return mLayerController; } } + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sal/android/libreofficekit-jni.c b/sal/android/libreofficekit-jni.c index 3563d5b7891e..cf8308afa01b 100644 --- a/sal/android/libreofficekit-jni.c +++ b/sal/android/libreofficekit-jni.c @@ -24,7 +24,9 @@ #include <osl/detail/android-bootstrap.h> -//#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "LibreOfficeKit", __VA_ARGS__)) +#include <LibreOfficeKit/LibreOfficeKit.h> + +#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "LibreOfficeKit", __VA_ARGS__)) #define LOGE(...) ((void)__android_log_print(ANDROID_LOG_ERROR, "LibreOfficeKit", __VA_ARGS__)) /* These are valid / used in all apps. */ @@ -34,9 +36,13 @@ extern void *apk_file; extern int apk_file_size; extern void Java_org_libreoffice_android_Bootstrap_putenv(JNIEnv* env, jobject clazz, jstring string); -extern jboolean Java_org_libreoffice_android_Bootstrap_redirect_1stdio(JNIEnv* env, jobject clazz, jboolean state); +extern void Java_org_libreoffice_android_Bootstrap_redirect_1stdio(JNIEnv* env, jobject clazz, jboolean state); extern void Java_org_libreoffice_android_Bootstrap_extract_1files(JNIEnv* env, jobject clazz); +extern LibreOfficeKit *libreofficekit_hook(const char* install_path); + +static LibreOfficeKit* pOffice; + /// Call the same method from Bootstrap. __attribute__ ((visibility("default"))) void @@ -49,12 +55,12 @@ Java_org_libreoffice_android_LibreOfficeKit_putenv(JNIEnv* env, /// Call the same method from Bootstrap. __attribute__ ((visibility("default"))) -jboolean +void Java_org_libreoffice_android_LibreOfficeKit_redirect_1stdio(JNIEnv* env, jobject clazz, jboolean state) { - return Java_org_libreoffice_android_Bootstrap_redirect_1stdio(env, clazz, state); + Java_org_libreoffice_android_Bootstrap_redirect_1stdio(env, clazz, state); } /// Call the same method from Bootstrap. @@ -119,10 +125,25 @@ Java_org_libreoffice_android_LibreOfficeKit_init__Ljava_lang_String_2Ljava_lang_ (*env)->ReleaseStringUTFChars(env, apkFile, apkFilePath); if (!setup_cdir()) + { + LOGE("setup_cdir failed"); return JNI_FALSE; + } if (!setup_assets_tree()) + { + LOGE("setup_assets_tree failed"); return JNI_FALSE; + } + + pOffice = libreofficekit_hook(data_dir); + if (!pOffice) + { + LOGE("libreofficekit_hook returned null"); + return JNI_FALSE; + } + + LOGI("LibreOfficeKit successfully initialized"); return JNI_TRUE; } diff --git a/sal/android/lo-bootstrap.c b/sal/android/lo-bootstrap.c index 973c1b25116a..a7765bed563e 100644 --- a/sal/android/lo-bootstrap.c +++ b/sal/android/lo-bootstrap.c @@ -42,11 +42,11 @@ struct engine { }; /* These are valid / used in all apps. */ -static const char *data_dir; -static const char *cache_dir; -static void *apk_file; -static int apk_file_size; -static JavaVM *the_java_vm; +const char *data_dir; +const char *cache_dir; +void *apk_file; +int apk_file_size; +JavaVM *the_java_vm; /* Zip data structures */ @@ -1019,7 +1019,7 @@ redirect_to_null(void) } __attribute__ ((visibility("default"))) -jboolean +void Java_org_libreoffice_android_Bootstrap_redirect_1stdio(JNIEnv* env, jobject clazz, jboolean state) @@ -1031,22 +1031,22 @@ Java_org_libreoffice_android_Bootstrap_redirect_1stdio(JNIEnv* env, (void) env; (void) clazz; - if (state == current) - return current; + if (state == current) + return; if (state == JNI_FALSE) { if (!redirect_to_null()) - return current; + return; } else { if (pipe(stdout_pipe) == -1) { LOGE("redirect_stdio: Could not create pipes: %s", strerror(errno)); - return current; + return; } if (pipe(stderr_pipe) == -1) { LOGE("redirect_stdio: Could not create pipes: %s", strerror(errno)); close(stdout_pipe[0]); close(stdout_pipe[1]); - return current; + return; } LOGI("redirect_stdio: stdout pipe: [%d,%d], stderr pipe: [%d,%d]", stdout_pipe[0], stdout_pipe[1], stderr_pipe[0], stderr_pipe[1]); @@ -1057,7 +1057,7 @@ Java_org_libreoffice_android_Bootstrap_redirect_1stdio(JNIEnv* env, close(stdout_pipe[1]); close(stderr_pipe[0]); close(stderr_pipe[1]); - return current; + return; } if (dup2(stderr_pipe[1], 2) == -1) { @@ -1070,7 +1070,7 @@ Java_org_libreoffice_android_Bootstrap_redirect_1stdio(JNIEnv* env, close(stdout_pipe[1]); close(stderr_pipe[0]); close(stderr_pipe[1]); - return current; + return; } close(stdout_pipe[1]); close(stderr_pipe[1]); @@ -1082,11 +1082,11 @@ Java_org_libreoffice_android_Bootstrap_redirect_1stdio(JNIEnv* env, redirect_to_null(); close(stdout_pipe[0]); close(stderr_pipe[0]); - return current; + return; } } current = state; - return current; + return; } __attribute__ ((visibility("default"))) diff --git a/solenv/bin/native-code.py b/solenv/bin/native-code.py index 59cde03ba1e3..0de8ed3ce62d 100755 --- a/solenv/bin/native-code.py +++ b/solenv/bin/native-code.py @@ -228,7 +228,10 @@ if options.java: volatile void *p = (void *) Java_org_libreoffice_android_AppSupport_runMain; extern void Java_org_libreoffice_android_AppSupport_renderVCL(); - p = (void *) Java_org_libreoffice_android_AppSupport_renderVCL;""") + p = (void *) Java_org_libreoffice_android_AppSupport_renderVCL; + + extern void Java_org_libreoffice_android_LibreOfficeKit_init__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2(); + p = (void *) Java_org_libreoffice_android_LibreOfficeKit_init__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2;""") print (""" return map; |