summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--android/experimental/LOAndroid3/src/java/org/libreoffice/LOEvent.java7
-rw-r--r--android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitShell.java6
-rw-r--r--android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java11
-rw-r--r--android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/ComposedTileLayer.java11
4 files changed, 19 insertions, 16 deletions
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOEvent.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOEvent.java
index c51b4452f48f..04afd804011f 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOEvent.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOEvent.java
@@ -7,6 +7,7 @@ import android.view.MotionEvent;
import org.mozilla.gecko.gfx.ComposedTileLayer;
import org.mozilla.gecko.gfx.IntSize;
+import org.mozilla.gecko.gfx.SubTile;
public class LOEvent implements Comparable<LOEvent> {
public static final int SIZE_CHANGED = 1;
@@ -28,7 +29,7 @@ public class LOEvent implements Comparable<LOEvent> {
public String mTypeString;
public int mPartIndex;
public String mFilename;
- public TileIdentifier mTileId;
+ public SubTile mTile;
public ComposedTileLayer mComposedTileLayer;
public String mTouchType;
public MotionEvent mMotionEvent;
@@ -46,11 +47,11 @@ public class LOEvent implements Comparable<LOEvent> {
mTypeString = "Size Changed: " + widthPixels + " " + heightPixels;
}
- public LOEvent(int type, ComposedTileLayer composedTileLayer, TileIdentifier tileId) {
+ public LOEvent(int type, ComposedTileLayer composedTileLayer, SubTile tile) {
mType = type;
mTypeString = "Tile Request";
mComposedTileLayer = composedTileLayer;
- mTileId = tileId;
+ mTile = tile;
}
public LOEvent(int type, String filename) {
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitShell.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitShell.java
index fd54bbfb5b09..fab30b2c4813 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitShell.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitShell.java
@@ -11,6 +11,7 @@ import android.view.MotionEvent;
import org.mozilla.gecko.gfx.ComposedTileLayer;
import org.mozilla.gecko.gfx.LayerView;
+import org.mozilla.gecko.gfx.SubTile;
public class LOKitShell {
@@ -122,9 +123,8 @@ public class LOKitShell {
LOKitShell.sendEvent(new LOEvent(LOEvent.REDRAW));
}
- public static void sendTileRequestEvent(ComposedTileLayer composedTileLayer, TileIdentifier tileID, boolean forceRedraw, int priority) {
- LOEvent event = new LOEvent(LOEvent.TILE_REQUEST, composedTileLayer, tileID);
- event.mPriority = priority;
+ public static void sendTileRequestEvent(ComposedTileLayer composedTileLayer, SubTile tile, boolean forceRedraw, int priority) {
+ LOEvent event = new LOEvent(LOEvent.TILE_REQUEST, composedTileLayer, tile);
LOKitShell.sendEvent(event);
}
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
index d5b07815ef00..3265fa7d754e 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
@@ -44,23 +44,20 @@ public class LOKitThread extends Thread implements TileProvider.TileInvalidation
}
}
- private void tileRequest(ComposedTileLayer composedTileLayer, TileIdentifier tileId) {
+ private void tileRequest(ComposedTileLayer composedTileLayer, SubTile tile) {
if (mTileProvider == null) {
return;
}
- if (composedTileLayer.isStillValid(tileId)) {
+ if (composedTileLayer.isStillValid(tile.id)) {
+ TileIdentifier tileId = tile.id;
CairoImage image = mTileProvider.createTile(tileId.x, tileId.y, tileId.size, tileId.zoom);
if (image != null) {
mLayerClient.beginDrawing();
- SubTile tile = new SubTile(tileId);
tile.setImage(image);
- composedTileLayer.addTile(tile);
mLayerClient.endDrawing();
mLayerClient.forceRender();
}
- } else {
- composedTileLayer.cleanupInvalidTile(tileId);
}
}
@@ -174,7 +171,7 @@ public class LOKitThread extends Thread implements TileProvider.TileInvalidation
changePart(event.mPartIndex);
break;
case LOEvent.TILE_REQUEST:
- tileRequest(event.mComposedTileLayer, event.mTileId);
+ tileRequest(event.mComposedTileLayer, event.mTile);
break;
case LOEvent.TILE_INVALIDATION:
tileInvalidation(event.mInvalidationRect);
diff --git a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/ComposedTileLayer.java b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/ComposedTileLayer.java
index 1dee5de1cd34..ae7f98ae45ca 100644
--- a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/ComposedTileLayer.java
+++ b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/ComposedTileLayer.java
@@ -27,7 +27,7 @@ public abstract class ComposedTileLayer extends Layer implements ComponentCallba
protected float currentZoom;
private final ReadWriteLock tilesReadWriteLock = new ReentrantReadWriteLock();
- private final Lock tilesReadLock = tilesReadWriteLock.readLock();
+ private final Lock tilesReadLock = tilesReadWriteLock.readLock();
private final Lock tilesWriteLock = tilesReadWriteLock.writeLock();
public ComposedTileLayer(Context context) {
@@ -177,6 +177,7 @@ public abstract class ComposedTileLayer extends Layer implements ComponentCallba
}
private void addNewTiles(RectF pageRect) {
+ beginTransaction();
for (float y = currentViewport.top; y < currentViewport.bottom; y += tileSize.height) {
if (y > pageRect.height()) {
continue;
@@ -187,10 +188,12 @@ public abstract class ComposedTileLayer extends Layer implements ComponentCallba
}
if (!containsTilesMatching(x, y, currentZoom)) {
TileIdentifier tileId = new TileIdentifier((int) x, (int) y, currentZoom, tileSize);
- LOKitShell.sendTileRequestEvent(this, tileId, true, getTilePriority());
+ SubTile tile = createNewTile(tileId);
+ LOKitShell.sendTileRequestEvent(this, tile, true, getTilePriority());
}
}
}
+ endTransaction();
}
private void clearMarkedTiles() {
@@ -228,11 +231,13 @@ public abstract class ComposedTileLayer extends Layer implements ComponentCallba
currentViewport = new RectF();
}
- public void addTile(SubTile tile) {
+ private SubTile createNewTile(TileIdentifier tileId) {
+ SubTile tile = new SubTile(tileId);
tile.beginTransaction();
tilesWriteLock.lock();
tiles.add(tile);
tilesWriteLock.unlock();
+ return tile;
}
public boolean isStillValid(TileIdentifier tileId) {