diff options
author | Jan Holesovsky <kendy@collabora.com> | 2019-04-12 17:50:52 +0200 |
---|---|---|
committer | Jan Holesovsky <kendy@collabora.com> | 2019-06-05 22:19:35 +0200 |
commit | c25b6bc6971564847eb34f4a3165e65eddd24aed (patch) | |
tree | 4b9f6eb28388f9c84894c1b88fc858ea351616aa | |
parent | 3f358c1f29102a6a6e548e555b18086faebb6196 (diff) |
android: Make the tiled rendering from the loolwsd actually work.
Not to break the 'old' Android app, introduce a bool that can indicate
if we are using the LOK from the 'old' (LOK-via-JNI-based) or from the
'new' (loolwsd-based) app.
Change-Id: I38bd665cc1d5bc88018574171443ecabc46763df
Reviewed-on: https://gerrit.libreoffice.org/70678
Reviewed-by: Jan Holesovsky <kendy@collabora.com>
Tested-by: Jan Holesovsky <kendy@collabora.com>
-rw-r--r-- | desktop/source/lib/init.cxx | 18 | ||||
-rw-r--r-- | sal/android/libreofficekit-jni.c | 6 |
2 files changed, 21 insertions, 3 deletions
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index 1360f75d6338..2bafd7dc62e4 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -2563,6 +2563,13 @@ static void doc_setPartMode(LibreOfficeKitDocument* pThis, } } +#if defined(ANDROID) +/// For the distinction if the LOK is used for the 'old' (JNI-based) or the +/// 'new' (loolwsd-based) app. Default to the 'new', ie. not used from JNI as +/// implemented in sal/android/libreofficekit-jni.c. +bool android_lok_from_jni = false; +#endif + static void doc_paintTile(LibreOfficeKitDocument* pThis, unsigned char* pBuffer, const int nCanvasWidth, const int nCanvasHeight, @@ -2606,10 +2613,15 @@ static void doc_paintTile(LibreOfficeKitDocument* pThis, #else ScopedVclPtrInstance< VirtualDevice > pDevice(nullptr, Size(1, 1), DeviceFormat::DEFAULT) ; -#if !defined(ANDROID) - // Set background to transparent by default. - pDevice->SetBackground(Wallpaper(Color(COL_TRANSPARENT))); +#if defined(ANDROID) + if (!android_lok_from_jni) #endif + { + // Set background to transparent by default. + // [Unless it is the 'old' (JNI-based) Android app - no idea why it + // needs avoiding this.] + pDevice->SetBackground(Wallpaper(COL_TRANSPARENT)); + } pDevice->SetOutputSizePixelScaleOffsetAndBuffer( Size(nCanvasWidth, nCanvasHeight), Fraction(1.0), Point(), diff --git a/sal/android/libreofficekit-jni.c b/sal/android/libreofficekit-jni.c index edd56a2fec37..0f66fdc44fe0 100644 --- a/sal/android/libreofficekit-jni.c +++ b/sal/android/libreofficekit-jni.c @@ -37,6 +37,7 @@ extern const char* data_dir; extern const char* cache_dir; extern void* apk_file; extern int apk_file_size; +extern bool android_lok_from_jni; ///< for the distinction if the LOK is used for the 'old' (JNI-based) or the 'new' (loolwsd-based) app AAssetManager* native_asset_manager; extern void Java_org_libreoffice_android_Bootstrap_putenv(JNIEnv* env, jobject clazz, jstring string); @@ -157,6 +158,11 @@ jboolean Java_org_libreoffice_kit_LibreOfficeKit_initializeNative size_t data_dir_len; (void) clazz; + + // the 'old' app needs to avoid setting the virtual device to transparent + // in paintTile(), so indicate we are using the 'old' app + android_lok_from_jni = true; + libreofficekit_initialize(env, dataDir, cacheDir, apkFile, assetManager); // LibreOfficeKit expects a path to the program/ directory |