summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.com>2014-09-23 22:35:06 +0200
committerTomaž Vajngerl <tomaz.vajngerl@collabora.com>2014-09-24 20:43:03 +0200
commit0aad04016ca567b93e4d85ae79657f0888514a13 (patch)
tree9ee2591b7c164b453bb724084555aaaa0854337a
parent688ff90d32c1b4c56800d242b43b37ed1b990f54 (diff)
android: destroy tiles (free the bitmap) when they are removed
Change-Id: I55959c115467f98d43d471c280bb3a0248b669ec
-rw-r--r--android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java1
-rw-r--r--android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/TileLayer.java11
2 files changed, 12 insertions, 0 deletions
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
index 25a1705d06c1..d11c4c9db390 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
@@ -83,6 +83,7 @@ public class LOKitThread extends Thread {
Rect tileRect = new Rect(tile.x, tile.y, tile.x + TILE_SIZE, tile.y + TILE_SIZE);
if (!Rect.intersects(rect, tileRect)) {
Log.i(LOGTAG, "tilerender delete " + tileRect);
+ tile.destroy();
removeTiles.add(tile);
}
}
diff --git a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/TileLayer.java b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/TileLayer.java
index 4f7ff9df941b..b7ba36acba98 100644
--- a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/TileLayer.java
+++ b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/TileLayer.java
@@ -7,6 +7,7 @@ package org.mozilla.gecko.gfx;
import android.graphics.Rect;
import android.opengl.GLES20;
+import android.util.Log;
import java.nio.ByteBuffer;
@@ -50,6 +51,16 @@ public abstract class TileLayer extends Layer {
}
}
+ public void destroy() {
+ try {
+ if (mImage != null) {
+ mImage.destroy();
+ }
+ } catch (Exception ex) {
+ Log.e(LOGTAG, "error clearing buffers: ", ex);
+ }
+ }
+
public void setPaintMode(PaintMode mode) {
mPaintMode = mode;
}