Update of /cvsroot/jake2/jake2/src/jake2/render/fast
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1718/src/jake2/render/fast
Modified Files:
Tag: render-refactoring
Image.java
Log Message:
use a hash map to find the images by name (faster)
Index: Image.java
===================================================================
RCS file: /cvsroot/jake2/jake2/src/jake2/render/fast/Attic/Image.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -C2 -d -r1.1.2.1 -r1.1.2.2
*** Image.java 15 Nov 2005 00:06:43 -0000 1.1.2.1
--- Image.java 19 Nov 2005 23:46:30 -0000 1.1.2.2
***************
*** 40,44 ****
import java.awt.image.BufferedImage;
import java.nio.*;
! import java.util.Arrays;
/**
--- 40,44 ----
import java.awt.image.BufferedImage;
import java.nio.*;
! import java.util.*;
/**
***************
*** 1457,1460 ****
--- 1457,1462 ----
return image;
}
+
+ Map imageCache = new HashMap(MAX_GLTEXTURES);
/*
***************
*** 1466,1492 ****
*/
image_t GL_FindImage(String name, int type) {
- image_t image = null;
-
- // // TODO loest das grossschreibungs problem
- // name = name.toLowerCase();
- // // bughack for bad strings (fuck \0)
- // int index = name.indexOf('\0');
- // if (index != -1)
- // name = name.substring(0, index);
if (name == null || name.length() < 5)
! return null; // Com.Error (ERR_DROP, "GL_FindImage: NULL name");
! // Com.Error (ERR_DROP, "GL_FindImage: bad name: %s", name);
!
! // look for it
! for (int i = 0; i < numgltextures; i++)
! {
! image = gltextures[i];
! if (name.equals(image.name))
! {
! image.registration_sequence = registration_sequence;
! return image;
! }
! }
//
--- 1468,1481 ----
*/
image_t GL_FindImage(String name, int type) {
if (name == null || name.length() < 5)
! return null;
!
! // look for it
! image_t image = (image_t) imageCache.get(name);
! if (image != null) {
! image.registration_sequence = registration_sequence;
! return image;
! }
//
***************
*** 1520,1524 ****
}
!
return image;
}
--- 1509,1514 ----
}
!
! imageCache.put(image.name, image);
return image;
}
***************
*** 1564,1571 ****
// free it
- // TODO jogl bug
texnumBuffer.clear();
texnumBuffer.put(0,image.texnum);
gl.glDeleteTextures(texnumBuffer);
image.clear();
}
--- 1554,1562 ----
// free it
texnumBuffer.clear();
texnumBuffer.put(0,image.texnum);
gl.glDeleteTextures(texnumBuffer);
+
+ imageCache.remove(image.name);
image.clear();
}
***************
*** 1673,1681 ****
if (image.registration_sequence == 0)
continue; // free image_t slot
// free it
- // TODO jogl bug
texnumBuffer.clear();
texnumBuffer.put(0,image.texnum);
gl.glDeleteTextures(texnumBuffer);
image.clear();
}
--- 1664,1674 ----
if (image.registration_sequence == 0)
continue; // free image_t slot
+
// free it
texnumBuffer.clear();
texnumBuffer.put(0,image.texnum);
gl.glDeleteTextures(texnumBuffer);
+
+ imageCache.remove(image.name);
image.clear();
}
|