diff options
author | Jan Holesovsky <kendy@collabora.com> | 2015-02-04 23:31:01 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2015-02-09 08:12:10 +0100 |
commit | 0059a213c1e52911d92702af269a296f5ece913a (patch) | |
tree | fa573cd48aaf29fc92ac9446b51f58f02e82061d /android | |
parent | 9b482b325baaae4a456073476b5edc68bc62e184 (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.java | 16 | ||||
-rw-r--r-- | android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java | 5 |
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."; } } |