From 31a45b046858c7944f65c91260e18bf7607f3944 Mon Sep 17 00:00:00 2001 From: Hannes Janetzek Date: Thu, 4 Sep 2014 16:51:57 +0200 Subject: [PATCH] add ElementLayer/RenderElement prepare() - used to prepare for compile() when all layer data is added --- vtm/src/org/oscim/layers/marker/MarkerRenderer.java | 2 +- .../org/oscim/layers/tile/vector/VectorTileLoader.java | 4 ++++ vtm/src/org/oscim/renderer/elements/BitmapLayer.java | 5 ----- vtm/src/org/oscim/renderer/elements/ElementLayers.java | 8 ++++++++ vtm/src/org/oscim/renderer/elements/RenderElement.java | 10 +++++++++- vtm/src/org/oscim/renderer/elements/SymbolLayer.java | 5 ----- vtm/src/org/oscim/renderer/elements/TextLayer.java | 4 +--- vtm/src/org/oscim/renderer/elements/TextureLayer.java | 1 - 8 files changed, 23 insertions(+), 16 deletions(-) diff --git a/vtm/src/org/oscim/layers/marker/MarkerRenderer.java b/vtm/src/org/oscim/layers/marker/MarkerRenderer.java index 90c0fe05..eab5bcd6 100644 --- a/vtm/src/org/oscim/layers/marker/MarkerRenderer.java +++ b/vtm/src/org/oscim/layers/marker/MarkerRenderer.java @@ -162,8 +162,8 @@ public class MarkerRenderer extends ElementRenderer { mSymbolLayer.pushSymbol(s); } - mSymbolLayer.prepare(); layers.setTextureLayers(mSymbolLayer); + layers.prepare(); compile(); } diff --git a/vtm/src/org/oscim/layers/tile/vector/VectorTileLoader.java b/vtm/src/org/oscim/layers/tile/vector/VectorTileLoader.java index b9f4cdd6..6b5462b1 100644 --- a/vtm/src/org/oscim/layers/tile/vector/VectorTileLoader.java +++ b/vtm/src/org/oscim/layers/tile/vector/VectorTileLoader.java @@ -130,7 +130,11 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac public void completed(QueryResult result) { mTileLayer.callHooksComplete(mTile, result == QueryResult.SUCCESS); + /* finish layers - tessellate and cleanup on worker-thread */ + mLayers.prepare(); + super.completed(result); + clearState(); } diff --git a/vtm/src/org/oscim/renderer/elements/BitmapLayer.java b/vtm/src/org/oscim/renderer/elements/BitmapLayer.java index 6f180a0f..9189d1b2 100644 --- a/vtm/src/org/oscim/renderer/elements/BitmapLayer.java +++ b/vtm/src/org/oscim/renderer/elements/BitmapLayer.java @@ -122,11 +122,6 @@ public class BitmapLayer extends TextureLayer { sbuf.put(buf); } - @Override - public boolean prepare() { - return false; - } - @Override protected void compile(ShortBuffer sbuf) { diff --git a/vtm/src/org/oscim/renderer/elements/ElementLayers.java b/vtm/src/org/oscim/renderer/elements/ElementLayers.java index 0083f4df..4f22f8e7 100644 --- a/vtm/src/org/oscim/renderer/elements/ElementLayers.java +++ b/vtm/src/org/oscim/renderer/elements/ElementLayers.java @@ -365,4 +365,12 @@ public class ElementLayers extends TileData { TextureItem.init(gl); } + + public void prepare() { + for (RenderElement l = baseLayers; l != null; l = l.next) + l.prepare(); + + for (RenderElement l = textureLayers; l != null; l = l.next) + l.prepare(); + } } diff --git a/vtm/src/org/oscim/renderer/elements/RenderElement.java b/vtm/src/org/oscim/renderer/elements/RenderElement.java index bfbfd688..651e5760 100644 --- a/vtm/src/org/oscim/renderer/elements/RenderElement.java +++ b/vtm/src/org/oscim/renderer/elements/RenderElement.java @@ -54,7 +54,15 @@ public abstract class RenderElement extends Inlist { numVertices = 0; } - /** compile vertex data to vbo. */ + /** + * Final preparation of content before compilation + * for stuff that should not be done on render-thread. + */ + protected void prepare() { + + } + + /** Compile vertex data to vbo. */ protected void compile(ShortBuffer sbuf) { compileVertexItems(sbuf); } diff --git a/vtm/src/org/oscim/renderer/elements/SymbolLayer.java b/vtm/src/org/oscim/renderer/elements/SymbolLayer.java index 1f7271e6..1a43364c 100644 --- a/vtm/src/org/oscim/renderer/elements/SymbolLayer.java +++ b/vtm/src/org/oscim/renderer/elements/SymbolLayer.java @@ -196,9 +196,4 @@ public final class SymbolLayer extends TextureLayer { super.clear(); clearItems(); } - - @Override - public boolean prepare() { - return true; - } } diff --git a/vtm/src/org/oscim/renderer/elements/TextLayer.java b/vtm/src/org/oscim/renderer/elements/TextLayer.java index c08acb36..71b4d281 100644 --- a/vtm/src/org/oscim/renderer/elements/TextLayer.java +++ b/vtm/src/org/oscim/renderer/elements/TextLayer.java @@ -79,7 +79,7 @@ public class TextLayer extends TextureLayer { } @Override - public boolean prepare() { + public void prepare() { short numIndices = 0; short offsetIndices = 0; numVertices = 0; @@ -158,8 +158,6 @@ public class TextLayer extends TextureLayer { t.offset = offsetIndices; t.indices = (short) (numIndices - offsetIndices); - - return true; } protected void addItem(TextItem it, diff --git a/vtm/src/org/oscim/renderer/elements/TextureLayer.java b/vtm/src/org/oscim/renderer/elements/TextureLayer.java index 1ffe3bbb..76b85067 100644 --- a/vtm/src/org/oscim/renderer/elements/TextureLayer.java +++ b/vtm/src/org/oscim/renderer/elements/TextureLayer.java @@ -66,7 +66,6 @@ public abstract class TextureLayer extends RenderElement { compileVertexItems(sbuf); } - abstract public boolean prepare(); protected void clear() { while (textures != null)