aboutsummaryrefslogtreecommitdiffstats
path: root/src/classes
diff options
context:
space:
mode:
Diffstat (limited to 'src/classes')
-rw-r--r--src/classes/share/javax/media/j3d/Canvas3D.java42
-rw-r--r--src/classes/share/javax/media/j3d/Renderer.java29
2 files changed, 28 insertions, 43 deletions
diff --git a/src/classes/share/javax/media/j3d/Canvas3D.java b/src/classes/share/javax/media/j3d/Canvas3D.java
index c32b37e..d4f1ad6 100644
--- a/src/classes/share/javax/media/j3d/Canvas3D.java
+++ b/src/classes/share/javax/media/j3d/Canvas3D.java
@@ -880,10 +880,10 @@ ArrayList<Integer> textureIdResourceFreeList = new ArrayList<Integer>();
Point newPosition = new Point();
Dimension newSize = new Dimension();
- // Remember OGL context resources to free
- // before context is destroy.
- // It is used when sharedCtx = false;
- ArrayList textureIDResourceTable = new ArrayList(5);
+// Remember OGL context resources to free
+// before context is destroy.
+// It is used when sharedCtx = false;
+ArrayList<TextureRetained> textureIDResourceTable = new ArrayList<TextureRetained>(5);
// The following variables are used by the lazy download of
// states code to keep track of the set of current to be update bins
@@ -3919,7 +3919,6 @@ ArrayList<Integer> textureIdResourceFreeList = new ArrayList<Integer>();
// use by D3D only
void resetTextureBin() {
- Object obj;
TextureRetained tex;
// We don't use rdr.objectId for background texture in D3D
@@ -3931,14 +3930,12 @@ ArrayList<Integer> textureIdResourceFreeList = new ArrayList<Integer>();
graphics2D.objectId = -1;
}
- for (int id = textureIDResourceTable.size()-1; id >= 0; id--) {
- obj = textureIDResourceTable.get(id);
- if (obj != null) {
- if (obj instanceof TextureRetained) {
- tex = (TextureRetained) obj;
- tex.resourceCreationMask &= ~canvasBit;
+ for (int id = textureIDResourceTable.size() - 1; id >= 0; id--) {
+ tex = textureIDResourceTable.get(id);
+ if (tex != null) {
+ tex.resourceCreationMask &= ~canvasBit;
+
}
- }
}
}
@@ -4786,7 +4783,7 @@ ArrayList<Integer> textureIdResourceFreeList = new ArrayList<Integer>();
* of texture is -1 one time only.
* This is always call from Renderer thread.
*/
- void addTextureResource(int id, Object obj) {
+void addTextureResource(int id, TextureRetained obj) {
if (id <= 0) {
return;
}
@@ -4839,9 +4836,8 @@ ArrayList<Integer> textureIdResourceFreeList = new ArrayList<Integer>();
textureIDResourceTable.size() +
" val = " + val);
} else {
- Object obj = textureIDResourceTable.get(val);
- if (obj instanceof TextureRetained) {
- TextureRetained tex = (TextureRetained) obj;
+ TextureRetained tex = textureIDResourceTable.get(val);
+ if (tex != null) {
synchronized (tex.resourceLock) {
tex.resourceCreationMask &= ~canvasBit;
if (tex.resourceCreationMask == 0) {
@@ -4860,9 +4856,6 @@ ArrayList<Integer> textureIdResourceFreeList = new ArrayList<Integer>();
void freeContextResources(Renderer rdr, boolean freeBackground,
Context ctx) {
-
-
- Object obj;
TextureRetained tex;
// Just return if we don't have a valid renderer or context
@@ -4878,18 +4871,16 @@ ArrayList<Integer> textureIdResourceFreeList = new ArrayList<Integer>();
}
for (int id = textureIDResourceTable.size()-1; id >= 0; id--) {
- obj = textureIDResourceTable.get(id);
- if (obj == null) {
- continue;
- }
+ tex = textureIDResourceTable.get(id);
+ if (tex == null) {
+ continue;
+ }
// Issue 403 : this assertion doesn't hold in some cases
// TODO KCR : determine why this is the case
// assert id == ((TextureRetained)obj).objectId;
freeTexture(ctx, id);
- if (obj instanceof TextureRetained) {
- tex = (TextureRetained) obj;
synchronized (tex.resourceLock) {
tex.resourceCreationMask &= ~canvasBit;
if (tex.resourceCreationMask == 0) {
@@ -4897,7 +4888,6 @@ ArrayList<Integer> textureIdResourceFreeList = new ArrayList<Integer>();
tex.freeTextureId(id);
}
}
- }
}
textureIDResourceTable.clear();
diff --git a/src/classes/share/javax/media/j3d/Renderer.java b/src/classes/share/javax/media/j3d/Renderer.java
index 5afabdc..d4655a6 100644
--- a/src/classes/share/javax/media/j3d/Renderer.java
+++ b/src/classes/share/javax/media/j3d/Renderer.java
@@ -175,10 +175,10 @@ ArrayList<Integer> displayListResourceFreeList = new ArrayList<Integer>();
// dirtyDlistPerRinfoList, dirtyRenderAtomList size > 0
boolean dirtyDisplayList = false;
- // Remember OGL context resources to free
- // before context is destroy.
- // It is used when sharedCtx = true;
- ArrayList textureIDResourceTable = new ArrayList(5);
+// Remember OGL context resources to free
+// before context is destroy.
+// It is used when sharedCtx = true;
+ArrayList<TextureRetained> textureIDResourceTable = new ArrayList<TextureRetained>(5);
// Instrumentation of Java 3D renderer
private long lastSwapTime = System.nanoTime();
@@ -1651,7 +1651,7 @@ ArrayList<Integer> displayListResourceFreeList = new ArrayList<Integer>();
synchronized (VirtualUniverse.mc.contextCreationLock) {
for (int i=listOfCanvases.size()-1; i >=0; i--) {
- cv = (Canvas3D) listOfCanvases.get(i);
+ cv = listOfCanvases.get(i);
if ((cv.screen != null) && (cv.ctx != null)) {
// Issue 326 : don't check display variable here
@@ -1731,9 +1731,8 @@ ArrayList<Integer> displayListResourceFreeList = new ArrayList<Integer>();
textureIDResourceTable.size() +
" val = " + val);
} else {
- Object obj = textureIDResourceTable.get(val);
- if (obj instanceof TextureRetained) {
- TextureRetained tex = (TextureRetained) obj;
+ TextureRetained tex = textureIDResourceTable.get(val);
+ if (tex != null) {
synchronized (tex.resourceLock) {
tex.resourceCreationMask &= ~rendererBit;
if (tex.resourceCreationMask == 0) {
@@ -1754,7 +1753,7 @@ ArrayList<Integer> displayListResourceFreeList = new ArrayList<Integer>();
}
}
- final void addTextureResource(int id, Object obj) {
+final void addTextureResource(int id, TextureRetained obj) {
if (textureIDResourceTable.size() <= id) {
for (int i=textureIDResourceTable.size();
i < id; i++) {
@@ -1767,24 +1766,20 @@ ArrayList<Integer> displayListResourceFreeList = new ArrayList<Integer>();
}
void freeContextResources() {
- Object obj;
TextureRetained tex;
for (int id = textureIDResourceTable.size()-1; id >= 0; id--) {
- obj = textureIDResourceTable.get(id);
- if (obj == null) {
- continue;
- }
+ tex = textureIDResourceTable.get(id);
+ if (tex == null) {
+ continue;
+ }
Canvas3D.freeTexture(sharedCtx, id);
- if (obj instanceof TextureRetained) {
- tex = (TextureRetained) obj;
synchronized (tex.resourceLock) {
tex.resourceCreationMask &= ~rendererBit;
if (tex.resourceCreationMask == 0) {
tex.freeTextureId(id);
}
}
- }
}
textureIDResourceTable.clear();