diff options
author | Jacobo Aragunde Pérez <jaragunde@igalia.com> | 2014-07-15 20:43:22 +0200 |
---|---|---|
committer | Jacobo Aragunde Pérez <jaragunde@igalia.com> | 2014-07-16 10:21:56 +0200 |
commit | 9a6cf48618fcf586cd6c1e390cd49bc1f5d4631d (patch) | |
tree | c798595d56aa373f6a80876caa0f4865df7e84ee /android | |
parent | 0a6d7d6ef2cd1032ffad06210f843c9240d4b944 (diff) |
LOAndroid3: Prevent crash when opening a nonexistent file
Change-Id: Ic0fbe955dfdb8f044d7bf0f45215a632a111eae2
Diffstat (limited to 'android')
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); } |