summaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
authorJacobo Aragunde Pérez <jaragunde@igalia.com>2014-07-15 20:43:22 +0200
committerJacobo Aragunde Pérez <jaragunde@igalia.com>2014-07-16 10:21:56 +0200
commit9a6cf48618fcf586cd6c1e390cd49bc1f5d4631d (patch)
treec798595d56aa373f6a80876caa0f4865df7e84ee /android
parent0a6d7d6ef2cd1032ffad06210f843c9240d4b944 (diff)
LOAndroid3: Prevent crash when opening a nonexistent file
Change-Id: Ic0fbe955dfdb8f044d7bf0f45215a632a111eae2
Diffstat (limited to 'android')
-rw-r--r--android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java20
-rw-r--r--android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java5
-rw-r--r--android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java5
-rw-r--r--android/experimental/LOAndroid3/src/java/org/libreoffice/TileProvider.java2
4 files changed, 23 insertions, 9 deletions
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
index 2db5c0d5dea7..456f7b73199f 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
@@ -86,22 +86,24 @@ public class LOKitThread extends Thread {
return true;
}
- private void initialize() {
+ private boolean initialize() {
mApplication = LibreOfficeMainActivity.mAppContext;
mTileProvider = new LOKitTileProvider(mApplication.getLayerController(), mInputFile);
+ return mTileProvider.isReady();
}
public void run() {
- initialize();
- try {
- boolean drawn = false;
- while (true) {
- if (!mEvents.isEmpty()) {
- processEvent(mEvents.poll());
+ if (initialize()) {
+ try {
+ boolean drawn = false;
+ while (true) {
+ if (!mEvents.isEmpty()) {
+ processEvent(mEvents.poll());
+ }
+ Thread.sleep(100L);
}
- Thread.sleep(100L);
+ } catch (InterruptedException ex) {
}
- } catch (InterruptedException ex) {
}
}
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java
index fd1979b41559..f5b44f773040 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java
@@ -56,6 +56,11 @@ public class LOKitTileProvider implements TileProvider {
return (int) twipToPixel(mDocument.getDocumentHeight(), mDPI);
}
+ @Override
+ public boolean isReady() {
+ return mDocument != null;
+ }
+
public SubTile createTile(int x, int y) {
ByteBuffer buffer = ByteBuffer.allocateDirect(TILE_SIZE * TILE_SIZE * 4);
Bitmap bitmap = Bitmap.createBitmap(TILE_SIZE, TILE_SIZE, Bitmap.Config.ARGB_8888);
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java
index 9dd39e45d1d4..d3b86641bbe0 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java
@@ -26,6 +26,11 @@ public class MockTileProvider implements TileProvider {
}
@Override
+ public boolean isReady() {
+ return true;
+ }
+
+ @Override
public SubTile createTile(int x, int y) {
int tiles = (getPageWidth() / TILE_SIZE) + 1;
int tileNumber = (y / TILE_SIZE) * tiles + (x / TILE_SIZE);
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/TileProvider.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/TileProvider.java
index 296bf033b043..6743e0c4082e 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/TileProvider.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/TileProvider.java
@@ -7,5 +7,7 @@ public interface TileProvider {
int getPageWidth();
int getPageHeight();
+ boolean isReady();
+
SubTile createTile(int x, int y);
}