summaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2014-12-17 18:45:57 +0900
committerTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2014-12-17 19:03:21 +0900
commit3df95150c1ab65b5d2dc1ed2bd2e2010e6132d32 (patch)
tree1bba60886dce769a41e5e9cfa2cc9e7de26b1579 /android
parent33e53de6ca2253ebfc1bc0501ab992cb915e16df (diff)
android: support to handle events with prioritization
Low-res tiles should be handleded before normal tiles so for this add priority to tiles and store in a with priority queue. Change-Id: I8d36c14503d9b684816d99f577198ac34b729d15
Diffstat (limited to 'android')
-rw-r--r--android/experimental/LOAndroid3/src/java/org/libreoffice/LOEvent.java8
-rw-r--r--android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java9
-rw-r--r--android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/ComposedTileLayer.java7
-rw-r--r--android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/DynamicTileLayer.java5
-rw-r--r--android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/FixedZoomTileLayer.java5
5 files changed, 25 insertions, 9 deletions
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOEvent.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOEvent.java
index ade57c782efc..ced5ebd49daf 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOEvent.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOEvent.java
@@ -3,7 +3,7 @@ package org.libreoffice;
import org.mozilla.gecko.gfx.ComposedTileLayer;
import org.mozilla.gecko.gfx.IntSize;
-public class LOEvent {
+public class LOEvent implements Comparable<LOEvent> {
public static final int SIZE_CHANGED = 1;
public static final int TILE_SIZE = 2;
@@ -14,6 +14,7 @@ public class LOEvent {
public static final int TILE_REQUEST = 7;
public final int mType;
+ public int mPriority = 0;
public String mTypeString;
public int mPartIndex;
@@ -60,4 +61,9 @@ public class LOEvent {
}
return mTypeString;
}
+
+ @Override
+ public int compareTo(LOEvent another) {
+ return mPriority - another.mPriority;
+ }
}
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
index 7888095e8352..8bf82392e19e 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
@@ -1,22 +1,17 @@
package org.libreoffice;
-import android.graphics.Bitmap;
-import android.graphics.RectF;
-import android.util.DisplayMetrics;
-import android.util.Log;
-
import org.mozilla.gecko.gfx.CairoImage;
import org.mozilla.gecko.gfx.ComposedTileLayer;
import org.mozilla.gecko.gfx.GeckoLayerClient;
import org.mozilla.gecko.gfx.ImmutableViewportMetrics;
import org.mozilla.gecko.gfx.SubTile;
-import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.PriorityBlockingQueue;
public class LOKitThread extends Thread {
private static final String LOGTAG = LOKitThread.class.getSimpleName();
- private LinkedBlockingQueue<LOEvent> mEventQueue = new LinkedBlockingQueue<LOEvent>();
+ private PriorityBlockingQueue<LOEvent> mEventQueue = new PriorityBlockingQueue<LOEvent>();
private LibreOfficeMainActivity mApplication;
private TileProvider mTileProvider;
private ImmutableViewportMetrics mViewportMetrics;
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 7c41db1df294..cb924e355186 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
@@ -4,6 +4,7 @@ import android.graphics.RectF;
import android.graphics.Region;
import android.util.Log;
+import org.libreoffice.LOEvent;
import org.libreoffice.LOEventFactory;
import org.libreoffice.LOKitShell;
import org.libreoffice.TileIdentifier;
@@ -143,6 +144,8 @@ public abstract class ComposedTileLayer extends Layer {
protected abstract float getZoom(ImmutableViewportMetrics viewportMetrics);
+ protected abstract int getTilePriority();
+
private void addNewTiles(ImmutableViewportMetrics viewportMetrics) {
float zoom = getZoom(viewportMetrics);
@@ -161,7 +164,9 @@ public abstract class ComposedTileLayer extends Layer {
}
}
if (!contains) {
- LOKitShell.sendEvent(LOEventFactory.tileRequest(this, new TileIdentifier((int) x, (int) y, zoom, tileSize)));
+ LOEvent event = LOEventFactory.tileRequest(this, new TileIdentifier((int) x, (int) y, zoom, tileSize));
+ event.mPriority = getTilePriority();
+ LOKitShell.sendEvent(event);
}
}
}
diff --git a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/DynamicTileLayer.java b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/DynamicTileLayer.java
index 82d9928836c8..12ff72389667 100644
--- a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/DynamicTileLayer.java
+++ b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/DynamicTileLayer.java
@@ -14,6 +14,11 @@ public class DynamicTileLayer extends ComposedTileLayer {
return viewportMetrics.zoomFactor;
}
+ @Override
+ protected int getTilePriority() {
+ return 0;
+ }
+
protected IntSize getInflateFactor() {
return tileSize;
}
diff --git a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/FixedZoomTileLayer.java b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/FixedZoomTileLayer.java
index 7b669167fecb..52a26f60fd01 100644
--- a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/FixedZoomTileLayer.java
+++ b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/FixedZoomTileLayer.java
@@ -15,6 +15,11 @@ public class FixedZoomTileLayer extends ComposedTileLayer {
return 1.0f / 32.0f;
}
+ @Override
+ protected int getTilePriority() {
+ return -1;
+ }
+
private IntSize getInflateFactor() {
return tileSize.scale(3);
}