summaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
authorJan Holesovsky <kendy@collabora.com>2015-02-04 23:31:01 +0100
committerMiklos Vajna <vmiklos@collabora.co.uk>2015-02-09 08:12:10 +0100
commit0059a213c1e52911d92702af269a296f5ece913a (patch)
treefa573cd48aaf29fc92ac9446b51f58f02e82061d /android
parent9b482b325baaae4a456073476b5edc68bc62e184 (diff)
android: When loading fails, make sure we don't crash the next time.
Until now, when the loading failed, the next attempt to open a document lead to a crash; fixed. Change-Id: Ibb55b4799169e1521f076cf38380e429a50258a3
Diffstat (limited to 'android')
-rw-r--r--android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java16
-rw-r--r--android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java5
2 files changed, 16 insertions, 5 deletions
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
index 7e99da3caed8..3536256a3e0b 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
@@ -29,6 +29,9 @@ public class LOKitThread extends Thread implements TileProvider.TileInvalidation
}
private void tileRequest(ComposedTileLayer composedTileLayer, TileIdentifier tileId, boolean forceRedraw) {
+ if (mTileProvider == null)
+ return;
+
if (composedTileLayer.isStillValid(tileId)) {
CairoImage image = mTileProvider.createTile(tileId.x, tileId.y, tileId.size, tileId.zoom);
if (image != null) {
@@ -44,6 +47,9 @@ public class LOKitThread extends Thread implements TileProvider.TileInvalidation
}
private void tileRerender(ComposedTileLayer composedTileLayer, SubTile tile) {
+ if (mTileProvider == null)
+ return;
+
if (composedTileLayer.isStillValid(tile.id) && !tile.markedForRemoval) {
mLayerClient.beginDrawing();
mTileProvider.rerenderTile(tile.getImage(), tile.id.x, tile.id.y, tile.id.size, tile.id.zoom);
@@ -102,7 +108,7 @@ public class LOKitThread extends Thread implements TileProvider.TileInvalidation
LOKitShell.hideProgressSpinner();
}
- private boolean loadDocument(String filename) {
+ private void loadDocument(String filename) {
if (mApplication == null) {
mApplication = LibreOfficeMainActivity.mAppContext;
}
@@ -110,19 +116,21 @@ public class LOKitThread extends Thread implements TileProvider.TileInvalidation
mLayerClient = mApplication.getLayerClient();
mTileProvider = TileProviderFactory.create(mLayerClient, filename);
- boolean isReady = mTileProvider.isReady();
- if (isReady) {
+
+ if (mTileProvider.isReady()) {
LOKitShell.showProgressSpinner();
mTileProvider.registerInvalidationCallback(this);
refresh();
LOKitShell.hideProgressSpinner();
+ } else {
+ closeDocument();
}
- return isReady;
}
public void closeDocument() {
if (mTileProvider != null) {
mTileProvider.close();
+ mTileProvider = null;
}
}
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java
index 60e57e6eed91..20fce2711ad9 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java
@@ -78,6 +78,9 @@ public class LOKitTileProvider implements TileProvider, Document.MessageCallback
postLoad();
mIsReady = true;
}
+ else {
+ mIsReady = false;
+ }
}
public void postLoad() {
@@ -152,7 +155,7 @@ public class LOKitTileProvider implements TileProvider, Document.MessageCallback
} else {
ret = resetDocumentSize();
if (!ret) {
- error = "Document returned an invalid size or the document is empty!";
+ error = "Document returned an invalid size or the document is empty.";
}
}