fix: ElementLayers, make sure setFrom() clears previous items
This commit is contained in:
parent
c24b4addfa
commit
5a55e33f76
@ -147,6 +147,9 @@ public class ElementLayers {
|
|||||||
return textLayer;
|
return textLayer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set new Base-Layers and clear previous.
|
||||||
|
*/
|
||||||
public void setBaseLayers(RenderElement layers) {
|
public void setBaseLayers(RenderElement layers) {
|
||||||
for (RenderElement l = baseLayers; l != null; l = l.next)
|
for (RenderElement l = baseLayers; l != null; l = l.next)
|
||||||
l.clear();
|
l.clear();
|
||||||
@ -158,6 +161,9 @@ public class ElementLayers {
|
|||||||
return baseLayers;
|
return baseLayers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set new TextureLayers and clear previous.
|
||||||
|
*/
|
||||||
public void setTextureLayers(TextureLayer tl) {
|
public void setTextureLayers(TextureLayer tl) {
|
||||||
for (RenderElement l = textureLayers; l != null; l = l.next)
|
for (RenderElement l = textureLayers; l != null; l = l.next)
|
||||||
l.clear();
|
l.clear();
|
||||||
@ -169,6 +175,9 @@ public class ElementLayers {
|
|||||||
return textureLayers;
|
return textureLayers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set new ExtrusionLayers and clear previous.
|
||||||
|
*/
|
||||||
public void setExtrusionLayers(ExtrusionLayer el) {
|
public void setExtrusionLayers(ExtrusionLayer el) {
|
||||||
for (RenderElement l = extrusionLayers; l != null; l = l.next)
|
for (RenderElement l = extrusionLayers; l != null; l = l.next)
|
||||||
l.clear();
|
l.clear();
|
||||||
@ -180,17 +189,6 @@ public class ElementLayers {
|
|||||||
return (ExtrusionLayer) extrusionLayers;
|
return (ExtrusionLayer) extrusionLayers;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** cleanup only when layers are not used by tile or overlay anymore! */
|
|
||||||
public void clear() {
|
|
||||||
setBaseLayers(null);
|
|
||||||
setTextureLayers(null);
|
|
||||||
setExtrusionLayers(null);
|
|
||||||
mCurLayer = null;
|
|
||||||
|
|
||||||
if (vbo != null)
|
|
||||||
vbo = BufferObject.release(vbo);
|
|
||||||
}
|
|
||||||
|
|
||||||
private RenderElement getLayer(int level, int type) {
|
private RenderElement getLayer(int level, int type) {
|
||||||
RenderElement layer = null;
|
RenderElement layer = null;
|
||||||
|
|
||||||
@ -364,15 +362,28 @@ public class ElementLayers {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setFrom(ElementLayers layers) {
|
public void setFrom(ElementLayers layers) {
|
||||||
baseLayers = layers.baseLayers;
|
setBaseLayers(layers.baseLayers);
|
||||||
textureLayers = layers.textureLayers;
|
setTextureLayers((TextureLayer) layers.textureLayers);
|
||||||
extrusionLayers = layers.extrusionLayers;
|
setExtrusionLayers((ExtrusionLayer) layers.extrusionLayers);
|
||||||
mCurLayer = null;
|
|
||||||
|
|
||||||
|
mCurLayer = null;
|
||||||
layers.baseLayers = null;
|
layers.baseLayers = null;
|
||||||
layers.textureLayers = null;
|
layers.textureLayers = null;
|
||||||
layers.extrusionLayers = null;
|
layers.extrusionLayers = null;
|
||||||
layers.mCurLayer = null;
|
layers.mCurLayer = null;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** cleanup only when layers are not used by tile or layer anymore! */
|
||||||
|
public void clear() {
|
||||||
|
/* NB: set null calls clear() on each layer! */
|
||||||
|
setBaseLayers(null);
|
||||||
|
setTextureLayers(null);
|
||||||
|
setExtrusionLayers(null);
|
||||||
|
mCurLayer = null;
|
||||||
|
|
||||||
|
if (vbo != null)
|
||||||
|
vbo = BufferObject.release(vbo);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user