Code for Peer Review

classic Classic list List threaded Threaded
14 messages Options
Reply | Threaded
Open this post in threaded view
|

Code for Peer Review

Pixelapp
Please review this code. I got it straight from the Google's Android Website.
If you find any poor programming techniques please feel free to let me know.

If you want to take for a spin right away, please import this source code https://dl.dropbox.com/u/60452878/TestCase.zip from my drop box account.

Also, I'm stress testing this code as of this writing.

If afterwards this code looks healthy to you guys I'll incorporate it to my application once and for all.

package pixelapp.testcase;

import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import java.nio.ShortBuffer;

import javax.media.opengl.GL2;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.GLProfile;
import javax.media.opengl.glu.GLU;

import com.jogamp.newt.event.WindowAdapter;
import com.jogamp.newt.event.WindowEvent;
import com.jogamp.newt.opengl.GLWindow;
import com.jogamp.opengl.util.FPSAnimator;
import com.jogamp.opengl.util.texture.Texture;
import com.jogamp.opengl.util.texture.TextureIO;

public class MyRenderer implements GLEventListener
{
    private FloatBuffer mFVertexBuffer;
    private FloatBuffer mTexBuffer;
    private ShortBuffer mIndexBuffer;
   
    private FloatBuffer mFVertexBuffer2;
    private FloatBuffer mTexBuffer2;
    private ShortBuffer mIndexBuffer2;
   
    private FloatBuffer mFVertexBuffer3;
    private FloatBuffer mTexBuffer3;
    private ShortBuffer mIndexBuffer3;
   
    private FloatBuffer mFVertexBuffer4;
    private FloatBuffer mTexBuffer4;
    private ShortBuffer mIndexBuffer4;
   
    private FloatBuffer mFVertexBuffer5;
    private FloatBuffer mTexBuffer5;
    private ShortBuffer mIndexBuffer5;
   
    private FloatBuffer mFVertexBuffer6;
    private FloatBuffer mTexBuffer6;
    private ShortBuffer mIndexBuffer6;
       
        private Texture tex;
        private static ClassLoader cl;
        private GLU glu = new GLU();
       
        private int count = 0; // Used for animation
       
        private FPSAnimator animator;
       
    private float[] coords =
    {
            // X, Y, Z
    0.741524f, 0.997209f, -0.542264f,
    0.360065f, 0.995797f, -0.542264f,
    0.358783f, 0.649583f, -0.542264f,
    0.741524f, 0.649583f, -0.542264f,
    };
   
   
    private short[] indices =
    {
    0, 1, 2, 3, 0, 2,
    };
   
   
    private float[] textureCoords =
    {
    1, 1, 0, 1,
    0, 0, 1, 0,
    };
   
   
    private float[] coords2 =
    {
            // X, Y, Z
    -0.610267f, 0.000745f, -0.542264f,
    -0.991726f, -0.000666f, -0.542264f,
    -0.993008f, -0.346880f, -0.542264f,
    -0.610267f, -0.346880f, -0.542264f,
    };
   

    private short[] indices2 =
    {
    0, 1, 2,
    3, 0, 2,
    };
   
   
    private float[] textureCoords2 =
    {
    1, 1, 0, 1,
    0, 0, 1, 0,
    };
   
   
    private float[] coords3 =
    {
            // X, Y, Z
    0.077216f, 0.997209f, -0.542264f,
    -0.304243f, 0.995797f, -0.542264f,
    -0.305526f, 0.649583f, -0.542264f,
    0.077216f, 0.649583f, -0.542264f,
    };
   
   
    private short[] indices3 =
    {
    0, 1, 2,
    3, 0, 2,
    };
   
   
    private float[] textureCoords3 =
    {
    1, 1, 0, 1,
    0, 0, 1, 0,
    };
   
   
    private float[] coords4 =
    {
            // X, Y, Z
    0.108114f, 0.000745f, -0.542264f,
    -0.273345f, -0.000666f, -0.542264f,
    -0.274628f, -0.346880f, -0.542264f,
    0.108114f, -0.346880f, -0.542264f,
    };
   
    private short[] indices4 =
    {
    0, 1, 2,
    3, 0, 2,
    };
   
   
    private float[] textureCoords4 =
    {
    1, 1, 0, 1,
    0, 0, 1, 0,
    };
   
   
    private float[] coords5 =
    {
            // X, Y, Z
    0.746427f, 0.000745f, -0.542264f,
    0.364968f, -0.000666f, -0.542264f,
    0.363685f, -0.346880f, -0.542264f,
    0.746427f, -0.346880f, -0.542264f,
    };
   
    private short[] indices5 =
    {
    0, 1, 2,
    3, 0, 2,
    };
   
   
    private float[] textureCoords5 =
    {
    1, 1, 0, 1, 0, 0, 1, 0,
    };
   
   
    private float[] coords6 =
    {
            // X, Y, Z
    -0.602542f, 0.997209f, -0.542264f,
    -0.984001f, 0.995797f, -0.542264f,
    -0.985284f, 0.649583f, -0.542264f,
    -0.602542f, 0.649583f, -0.542264f,
    };
   
   
    private short[] indices6 =
    {
    0, 1, 2,
    3, 0, 2,
    };
   
   
    private float[] textureCoords6 =
    {
    1, 1, 0, 1,
    0, 0, 1, 0,
    };
   
       
        public MyRenderer()
        {
                cl = this.getClass().getClassLoader();
               
        // Buffers to be passed to gl*Pointer() functions
        // must be direct, i.e., they must be placed on the
        // native heap where the garbage collector cannot
        // move them.
        //
        // Buffers with multi-byte datatypes (e.g., short, int, float)
        // must have their byte order set to native order

        ByteBuffer vbb = ByteBuffer.allocateDirect(coords.length * 4);
        vbb.order(ByteOrder.nativeOrder());
        mFVertexBuffer = vbb.asFloatBuffer();

        ByteBuffer tbb = ByteBuffer.allocateDirect(textureCoords.length * 4);
        tbb.order(ByteOrder.nativeOrder());
        mTexBuffer = tbb.asFloatBuffer();

        ByteBuffer ibb = ByteBuffer.allocateDirect(indices.length * 2);
        ibb.order(ByteOrder.nativeOrder());
        mIndexBuffer = ibb.asShortBuffer();
       
       
       


        ByteBuffer vbb2 = ByteBuffer.allocateDirect(coords2.length * 4);
        vbb2.order(ByteOrder.nativeOrder());
        mFVertexBuffer2 = vbb2.asFloatBuffer();

        ByteBuffer tbb2 = ByteBuffer.allocateDirect(textureCoords2.length * 4);
        tbb2.order(ByteOrder.nativeOrder());
        mTexBuffer2 = tbb2.asFloatBuffer();

        ByteBuffer ibb2 = ByteBuffer.allocateDirect(indices2.length * 2);
        ibb2.order(ByteOrder.nativeOrder());
        mIndexBuffer2 = ibb2.asShortBuffer();
       
       
       
       
        ByteBuffer vbb3 = ByteBuffer.allocateDirect(coords3.length * 4);
        vbb3.order(ByteOrder.nativeOrder());
        mFVertexBuffer3 = vbb3.asFloatBuffer();

        ByteBuffer tbb3 = ByteBuffer.allocateDirect(textureCoords3.length * 4);
        tbb3.order(ByteOrder.nativeOrder());
        mTexBuffer3 = tbb3.asFloatBuffer();

        ByteBuffer ibb3 = ByteBuffer.allocateDirect(indices3.length * 2);
        ibb3.order(ByteOrder.nativeOrder());
        mIndexBuffer3 = ibb3.asShortBuffer();
       
       
       
       
        ByteBuffer vbb4 = ByteBuffer.allocateDirect(coords4.length * 4);
        vbb4.order(ByteOrder.nativeOrder());
        mFVertexBuffer4 = vbb4.asFloatBuffer();

        ByteBuffer tbb4 = ByteBuffer.allocateDirect(textureCoords4.length * 4);
        tbb4.order(ByteOrder.nativeOrder());
        mTexBuffer4 = tbb4.asFloatBuffer();

        ByteBuffer ibb4 = ByteBuffer.allocateDirect(indices4.length * 2);
        ibb4.order(ByteOrder.nativeOrder());
        mIndexBuffer4 = ibb4.asShortBuffer();
       
       
       
       
        ByteBuffer vbb5 = ByteBuffer.allocateDirect(coords5.length * 4);
        vbb5.order(ByteOrder.nativeOrder());
        mFVertexBuffer5 = vbb5.asFloatBuffer();

        ByteBuffer tbb5 = ByteBuffer.allocateDirect(textureCoords5.length * 4);
        tbb5.order(ByteOrder.nativeOrder());
        mTexBuffer5 = tbb5.asFloatBuffer();

        ByteBuffer ibb5 = ByteBuffer.allocateDirect(indices5.length * 2);
        ibb5.order(ByteOrder.nativeOrder());
        mIndexBuffer5 = ibb5.asShortBuffer();
       
       
       
       
       
        ByteBuffer vbb6 = ByteBuffer.allocateDirect(coords6.length * 4);
        vbb6.order(ByteOrder.nativeOrder());
        mFVertexBuffer6 = vbb6.asFloatBuffer();

        ByteBuffer tbb6 = ByteBuffer.allocateDirect(textureCoords6.length * 4);
        tbb6.order(ByteOrder.nativeOrder());
        mTexBuffer6 = tbb6.asFloatBuffer();

        ByteBuffer ibb6 = ByteBuffer.allocateDirect(indices6.length * 2);
        ibb6.order(ByteOrder.nativeOrder());
        mIndexBuffer6 = ibb6.asShortBuffer();

       
                GLProfile glp = GLProfile.getDefault();
                GLCapabilities caps = new GLCapabilities(glp);
                GLWindow miCanvas = GLWindow.create(caps);
               
        miCanvas.setTitle("Test Case");
       
        miCanvas.setPointerVisible(false);
       
        miCanvas.addWindowListener(new WindowAdapter() {
            public void windowDestroyNotify(WindowEvent arg0) {
                System.exit(0);
            };
        });
               
       
                // Indicate Canvas to detect the events of OpenGL in this Class.
                miCanvas.addGLEventListener(this);
               
                // Add a key listener to this program.
                //miCanvas.addFocusListener(new MyFocusListener());

                //miCanvas.setFocusable(true); // To receive key event
                miCanvas.requestFocus();



       

       

                // Size of the window
                miCanvas.setSize(600, 600);

                // Eliminates the windows frames look.
                miCanvas.setUndecorated(true);



                miCanvas.setFullscreen(true);

                // Renders continuously JOGL2.
                animator = new FPSAnimator(miCanvas, 60);
                animator.add(miCanvas);
                animator.start();
               


                // Make visible the object of most weight
                miCanvas.setVisible(true);
        }

        /**
         * @param args
         */
        public static void main(String[] args)
        {
                new MyRenderer();
        }

        public void display(GLAutoDrawable drawable)
        {
                GL2 gl = drawable.getGL().getGL2(); // Initialize the variable GL
               
        /*
         * By default, OpenGL enables features that improve quality
         * but reduce performance. One might want to tweak that
         * especially on software renderer.
         */
        gl.glDisable(GL2.GL_DITHER);

        gl.glTexEnvf(GL2.GL_TEXTURE_ENV, GL2.GL_TEXTURE_ENV_MODE,
                GL2.GL_MODULATE);

        /*
         * Usually, the first thing one might want to do is to clear
         * the screen. The most efficient way of doing this is to use
         * glClear().
         */

        gl.glClear(GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT);

        /*
         * Now we're ready to draw some 3D objects
         */

        gl.glMatrixMode(GL2.GL_MODELVIEW);
        gl.glLoadIdentity();

        glu.gluLookAt( 0, 0, -5, 0f, 0f, 0f, 0f, 1.0f, 0.0f);

        gl.glEnableClientState(GL2.GL_VERTEX_ARRAY);
        gl.glEnableClientState(GL2.GL_TEXTURE_COORD_ARRAY);

        gl.glActiveTexture(GL2.GL_TEXTURE0);
        tex.bind(gl);
       
        // Animation for testing
                count++;
               
                if (count == 5)
                {
                        count = 0;
                }
       
                for (int index = 0; index < coords.length; index += 3)
                {
                        coords[index] -= 0.1;
                       
                        if(count == 0)
                        {
                                coords[index] += 0.5;
                        }
                }
               
               
                for (int index = 0; index < coords2.length; index += 3)
                {
                        coords2[index] -= 0.1;
                       
                        if(count == 0)
                        {
                                coords2[index] += 0.5;
                        }
                }
               
               
                for (int index = 0; index < coords3.length; index += 3)
                {
                        coords3[index] -= 0.1;
                       
                        if(count == 0)
                        {
                                coords3[index] += 0.5;
                        }
                }
               
                for (int index = 0; index < coords4.length; index += 3)
                {
                        coords4[index] -= 0.1;
                       
                        if(count == 0)
                        {
                                coords4[index] += 0.5;
                        }
                }
               
                for (int index = 0; index < coords5.length; index += 3)
                {
                        coords5[index] -= 0.1;
                       
                        if(count == 0)
                        {
                                coords5[index] += 0.5;
                        }
                }
               
                for (int index = 0; index < coords6.length; index += 3)
                {
                        coords6[index] -= 0.1;
                       
                        if(count == 0)
                        {
                                coords6[index] += 0.5;
                        }
                }
        // End of Animation for testing
               
        mFVertexBuffer.put(coords);

        mTexBuffer.put(textureCoords);

        mIndexBuffer.put(indices);

        mFVertexBuffer.position(0);
        mTexBuffer.position(0);
        mIndexBuffer.position(0);
       
       

        mFVertexBuffer2.put(coords2);

        mTexBuffer2.put(textureCoords2);

        mIndexBuffer2.put(indices2);

        mFVertexBuffer2.position(0);
        mTexBuffer2.position(0);
        mIndexBuffer2.position(0);
       
       
       
        mFVertexBuffer3.put(coords3);

        mTexBuffer3.put(textureCoords3);

        mIndexBuffer3.put(indices3);

        mFVertexBuffer3.position(0);
        mTexBuffer3.position(0);
        mIndexBuffer3.position(0);
       
       
       
        mFVertexBuffer4.put(coords4);

        mTexBuffer4.put(textureCoords4);

        mIndexBuffer4.put(indices4);

        mFVertexBuffer4.position(0);
        mTexBuffer4.position(0);
        mIndexBuffer4.position(0);
       
       
       
       
        mFVertexBuffer5.put(coords5);

        mTexBuffer5.put(textureCoords5);

        mIndexBuffer5.put(indices5);

        mFVertexBuffer5.position(0);
        mTexBuffer5.position(0);
        mIndexBuffer5.position(0);
       
       
       
       
        mFVertexBuffer6.put(coords6);

        mTexBuffer6.put(textureCoords6);

        mIndexBuffer6.put(indices6);

        mFVertexBuffer6.position(0);
        mTexBuffer6.position(0);
        mIndexBuffer6.position(0);
       
        gl.glEnable(GL2.GL_TEXTURE_2D);
       
        gl.glPushMatrix();
        gl.glFrontFace(GL2.GL_CCW);
        gl.glVertexPointer(3, GL2.GL_FLOAT, 0, mFVertexBuffer);
        gl.glTexCoordPointer(2, GL2.GL_FLOAT, 0, mTexBuffer);
        gl.glDrawElements(GL2.GL_TRIANGLE_STRIP, indices.length,
                GL2.GL_UNSIGNED_SHORT, mIndexBuffer);
        gl.glPopMatrix();
       
       
       
        gl.glPushMatrix();
        gl.glFrontFace(GL2.GL_CCW);
        gl.glVertexPointer(3, GL2.GL_FLOAT, 0, mFVertexBuffer2);
        gl.glTexCoordPointer(2, GL2.GL_FLOAT, 0, mTexBuffer2);
        gl.glDrawElements(GL2.GL_TRIANGLE_STRIP, indices2.length,
                GL2.GL_UNSIGNED_SHORT, mIndexBuffer2);
        gl.glPopMatrix();
       
       
       
        gl.glPushMatrix();
        gl.glFrontFace(GL2.GL_CCW);
        gl.glVertexPointer(3, GL2.GL_FLOAT, 0, mFVertexBuffer3);
        gl.glTexCoordPointer(2, GL2.GL_FLOAT, 0, mTexBuffer3);
        gl.glDrawElements(GL2.GL_TRIANGLE_STRIP, indices3.length,
                GL2.GL_UNSIGNED_SHORT, mIndexBuffer3);
        gl.glPopMatrix();
       
       
       
       
        gl.glPushMatrix();
        gl.glFrontFace(GL2.GL_CCW);
        gl.glVertexPointer(3, GL2.GL_FLOAT, 0, mFVertexBuffer4);
        gl.glTexCoordPointer(2, GL2.GL_FLOAT, 0, mTexBuffer4);
        gl.glDrawElements(GL2.GL_TRIANGLE_STRIP, indices4.length,
                GL2.GL_UNSIGNED_SHORT, mIndexBuffer4);
        gl.glPopMatrix();
       
       
       
        gl.glPushMatrix();
        gl.glFrontFace(GL2.GL_CCW);
        gl.glVertexPointer(3, GL2.GL_FLOAT, 0, mFVertexBuffer5);
        gl.glTexCoordPointer(2, GL2.GL_FLOAT, 0, mTexBuffer5);
        gl.glDrawElements(GL2.GL_TRIANGLE_STRIP, indices5.length,
                GL2.GL_UNSIGNED_SHORT, mIndexBuffer5);
        gl.glPopMatrix();
       
       
        gl.glPushMatrix();
        gl.glFrontFace(GL2.GL_CCW);
        gl.glVertexPointer(3, GL2.GL_FLOAT, 0, mFVertexBuffer6);
        gl.glTexCoordPointer(2, GL2.GL_FLOAT, 0, mTexBuffer6);
        gl.glDrawElements(GL2.GL_TRIANGLE_STRIP, indices6.length,
                GL2.GL_UNSIGNED_SHORT, mIndexBuffer6);
        gl.glPopMatrix();
               
        }

        public void dispose(GLAutoDrawable drawable)
        {
               
        }

        public void init(GLAutoDrawable drawable)
        {
                GL2 gl = drawable.getGL().getGL2(); // Initialize the variable GL
               
        /*
         * By default, OpenGL enables features that improve quality
         * but reduce performance. One might want to tweak that
         * especially on software renderer.
         */
        gl.glDisable(GL2.GL_DITHER);

        /*
         * Some one-time OpenGL initialization can be made here
         * probably based on features of this particular context
         */
        gl.glHint(GL2.GL_PERSPECTIVE_CORRECTION_HINT,
                GL2.GL_FASTEST);

        gl.glClearColor(.5f, .5f, .5f, 1);
        gl.glShadeModel(GL2.GL_SMOOTH);
        gl.glEnable(GL2.GL_DEPTH_TEST);
        gl.glEnable(GL2.GL_TEXTURE_2D);
       

    try {
   
    tex = TextureIO.newTexture(
    cl.getResource("pixelapp/testcase/images/boat.jpg"), false, null);
    tex.setTexParameterf(gl, GL2.GL_TEXTURE_MIN_FILTER,
    GL2.GL_LINEAR);
    tex.setTexParameterf(gl, GL2.GL_TEXTURE_MAG_FILTER,
    GL2.GL_LINEAR);
    tex.setTexParameterf(gl,  GL2.GL_TEXTURE_WRAP_S,
                    GL2.GL_REPEAT);
    tex.setTexParameterf(gl,  GL2.GL_TEXTURE_WRAP_S,
                    GL2.GL_REPEAT);
   
    } catch (Exception e) {
    System.out.println("Error loading texture");
    }


   

               
        }

        public void reshape(GLAutoDrawable drawable, int arg1, int arg2, int w,
                        int h)
        {
                GL2 gl = drawable.getGL().getGL2(); // Initialize the variable GL
               
        gl.glViewport(0, 0, w, h);

        /*
        * Set our projection matrix. This doesn't have to be done
        * each time we draw, but usually a new projection needs to
        * be set when the viewport is resized.
        */

        float ratio = (float) w / h;
        gl.glMatrixMode(GL2.GL_PROJECTION);
        gl.glLoadIdentity();
        gl.glFrustumf(-ratio, ratio, -1, 1, 3, 7);
        }

}
Reply | Threaded
Open this post in threaded view
|

Re: Code for Peer Review

gouessej
Administrator
Hi

- disable dithering once for all during the initialization, not each time you update the display
- use the class Buffers
- use Animator and enable v-sync instead of using FPSAnimator, it is more reliable and cross-platform (but someone can still disable v-sync by another mean)
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Code for Peer Review

Pixelapp
In reply to this post by Pixelapp
Hello:

When I use the code below in the display() loop it crashes:

public Texture[] prepareTexture(GL2 gl, String[] fnm, Texture[] pTex )
        {
                String[] fileName = new String[fnm.length];
               


                for (int count = 0; count < fnm.length; count++)
                {
                        fileName[count] = folder + fnm[count];

                        try {
                                pTex[count] = TextureIO.newTexture(
                                                cl.getResource(fileName[count]), false, null);

                                pTex[count].setTexParameterf(gl, GL2.GL_TEXTURE_MIN_FILTER,
                                                GL2.GL_LINEAR);
                                pTex[count].setTexParameterf(gl, GL2.GL_TEXTURE_MAG_FILTER,
                                                GL2.GL_LINEAR);
                               
                        } catch (Exception e) {
                                System.out.println("Error loading texture " + fileName[count]);
                        }

                }

               
                return pTex;

        }
       
        public void deleteTextures(GL2 gl, Texture[] dTex)
        {
                for (int count = 0; count < dTex.length; count++)
                {
                        dTex[count].destroy(gl);
                }
        }




If I use the code prepareTexture() and deleteTextures()  only once in the display() loop, it does't crash.

Any ideas?
Reply | Threaded
Open this post in threaded view
|

Re: Code for Peer Review

Pixelapp
In reply to this post by Pixelapp
Also, I think this is the reason why my application doesn't crash on android. Because, there is no Texture class in android.

Does anyone knows how to fix this? Or an alternative to the Texture class much like in android, which uses glgentextures()?
Reply | Threaded
Open this post in threaded view
|

Re: Code for Peer Review

gouessej
Administrator
In reply to this post by Pixelapp
Please provide the crash logs.

Edit.: You're not forced to use JOGL helper classes but if you don't understand the root cause of your crash, it will happen again without the Texture class and you won't be able to fix that.

Edit.2: You should modify the content of the textures rather than creating them and destroying them during the display (that's what I do in TUER, during the introduction scene, when the continent becomes entirely red). Such cleanup code should be called only when leaving the game and it is even not mandatory.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Code for Peer Review

Pixelapp
Hello:

After testing I found this is the problem. I'll try to fix my whole application now.

"You should modify the content of the textures rather than creating them and destroying them during the display (that's what I do in TUER, during the introduction scene, when the continent becomes entirely red)." You know we do coding as we need it and not before hand. So, Julien could you tell me how to do that? Now is when I happen to need it :). I didn't find any hints in the jogamp docs.

"Edit.2: You should modify the content of the textures rather than creating them and destroying them during the display (that's what I do in TUER, during the introduction scene, when the continent becomes entirely red). Such cleanup code should be called only when leaving the game and it is even not mandatory." That's very true, that's what I'm thinking of doing just now.

Cheers.
Reply | Threaded
Open this post in threaded view
|

Re: Code for Peer Review

gouessej
Administrator
I remind you that the Texture class contains several methods to do that including updateImage(GL gl, TextureData data).
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Code for Peer Review

Pixelapp
My application is up and running again.

Thanks to everyone who took a look at my code, especially Julien.

Cheers.
Reply | Threaded
Open this post in threaded view
|

Re: Code for Peer Review

Pixelapp
In reply to this post by gouessej
Hello:

Don't worry anybody. My application is just fine. What I'm doing here is just maintenance.

So. My application crashed with Texture.updateImage(). This totally seems to be a bug. Also, currently I can not Texture.destroy() nor Texture.updateImage() because it crashes. My only work around right now is to create my textures once and only once.

A little refresher about this problem: if you Texture.updateImage() or Texture.updateImage() continuously (i.e. more than once) it crashes.

Moreover, creating my textures once and only once is fine for me now. However as my application gets bigger and bigger, I need a remedy.

Any ideas?

Geniuses assemble! Please.

This is my most recent crash log (see below). If it is of any help.


#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x1a4f91c0, pid=6080, tid=5044
#
# JRE version: 7.0_05-b05
# Java VM: Java HotSpot(TM) Client VM (23.1-b03 mixed mode windows-x86 )
# Problematic frame:
# C  [ig4icd32.dll+0x1091c0]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

---------------  T H R E A D  ---------------

Current thread (0x193ff800):  JavaThread "Timer-0" [_thread_in_native, id=5044, stack(0x1a7f0000,0x1a840000)]

siginfo: ExceptionCode=0xc0000005, writing address 0x00000000

Registers:
EAX=0x1a60d470, EBX=0x00000000, ECX=0x00000400, EDX=0x00000000
ESP=0x1a83e8f8, EBP=0x00000000, ESI=0x00000004, EDI=0x7eef0024
EIP=0x1a4f91c0, EFLAGS=0x00010246

Top of Stack: (sp=0x1a83e8f8)
0x1a83e8f8:   1b28b8f0 00000000 1b28ea30 00000001
0x1a83e908:   7eef0020 00000000 00000200 00000004
0x1a83e918:   00000004 00000400 1a83e96c 1a65c870
0x1a83e928:   1a83e954 00000400 1b3cc79c 1b28b8f0
0x1a83e938:   1b3cc954 1b3cc790 1b3cc954 1b3cc790
0x1a83e948:   00000000 00200000 00000001 0000008d
0x1a83e958:   00000400 00000200 00001000 00000004
0x1a83e968:   00000000 0000003b 00000400 00000200

Instructions: (pc=0x1a4f91c0)
0x1a4f91a0:   0f af 68 20 0b d5 8b 68 0c 23 ee 8b 74 24 1c d3
0x1a4f91b0:   ed 8b 4c 24 34 03 fe 0f af 68 14 0b d5 0b 50 30
0x1a4f91c0:   89 13 03 5c 24 20 49 89 4c 24 34 75 a3 8b 5c 24
0x1a4f91d0:   14 8b 7c 24 10 8b 74 24 24 8b 54 24 28 8b 4c 24


Register to memory mapping:

EAX=0x1a60d470 is an unknown value
EBX=0x00000000 is an unknown value
ECX=0x00000400 is an unknown value
EDX=0x00000000 is an unknown value
ESP=0x1a83e8f8 is pointing into the stack for thread: 0x193ff800
EBP=0x00000000 is an unknown value
ESI=0x00000004 is an unknown value
EDI=0x7eef0024 is an unknown value


Stack: [0x1a7f0000,0x1a840000],  sp=0x1a83e8f8,  free space=314k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [ig4icd32.dll+0x1091c0]

[error occurred during error reporting (printing native stack), id 0xc0000005]

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  jogamp.opengl.gl4.GL4bcImpl.dispatch_glTexSubImage2D1(IIIIIIIILjava/lang/Object;IZJ)V+0
j  jogamp.opengl.gl4.GL4bcImpl.glTexSubImage2D(IIIIIIIILjava/nio/Buffer;)V+116
j  com.jogamp.opengl.util.texture.Texture.updateSubImageImpl(Ljavax/media/opengl/GL;Lcom/jogamp/opengl/util/texture/TextureData;IIIIIIII)V+715
j  com.jogamp.opengl.util.texture.Texture.updateImage(Ljavax/media/opengl/GL;Lcom/jogamp/opengl/util/texture/TextureData;I)V+1124
j  com.jogamp.opengl.util.texture.Texture.updateImage(Ljavax/media/opengl/GL;Lcom/jogamp/opengl/util/texture/TextureData;)V+4
j  pixelapp.wavelogy.Wavelogy.updateTexture(Ljavax/media/opengl/GL2;[Ljava/lang/String;[Lcom/jogamp/opengl/util/texture/Texture;)[Lcom/jogamp/opengl/util/texture/Texture;+67
J  pixelapp.wavelogy.Wavelogy.display(Ljavax/media/opengl/GLAutoDrawable;)V
J  jogamp.opengl.GLDrawableHelper.displayImpl(Ljavax/media/opengl/GLAutoDrawable;)V
J  com.jogamp.newt.opengl.GLWindow$DisplayAction.run()V
J  jogamp.opengl.GLDrawableHelper.invokeGLImpl(Ljavax/media/opengl/GLDrawable;Ljavax/media/opengl/GLContext;Ljava/lang/Runnable;Ljava/lang/Runnable;Ljavax/media/opengl/GLAutoDrawable;)V
J  jogamp.opengl.GLDrawableHelper.invokeGL(Ljavax/media/opengl/GLDrawable;Ljavax/media/opengl/GLContext;Ljava/lang/Runnable;Ljava/lang/Runnable;)V
J  com.jogamp.newt.opengl.GLWindow.display()V
J  com.jogamp.opengl.util.AWTAnimatorImpl.display(Ljava/util/ArrayList;ZZ)V
J  com.jogamp.opengl.util.FPSAnimator$1.run()V
J  java.util.TimerThread.mainLoop()V
j  java.util.TimerThread.run()V+1
v  ~StubRoutines::call_stub

---------------  P R O C E S S  ---------------

Java Threads: ( => current thread )
  0x1b643400 JavaThread "Thread-117" [_thread_in_Java, id=5388, stack(0x1bff0000,0x1c040000)]
  0x1b642c00 JavaThread "Java Sound Event Dispatcher" daemon [_thread_blocked, id=3288, stack(0x19d10000,0x19d60000)]
  0x008db000 JavaThread "DestroyJavaVM" [_thread_blocked, id=5960, stack(0x00860000,0x008b0000)]
=>0x193ff800 JavaThread "Timer-0" [_thread_in_native, id=5044, stack(0x1a7f0000,0x1a840000)]
  0x193e5000 JavaThread "main-Display-Windows_nil-1-EDT-1" daemon [_thread_blocked, id=4288, stack(0x1bc60000,0x1bcb0000)]
  0x1930e000 JavaThread "main-SharedResourceRunner" daemon [_thread_blocked, id=252, stack(0x1a260000,0x1a2b0000)]
  0x191e0400 JavaThread "Thread-4" daemon [_thread_in_native, id=1176, stack(0x19cb0000,0x19d00000)]
  0x1911ac00 JavaThread "AWT-EventQueue-0" [_thread_blocked, id=1104, stack(0x19b50000,0x19ba0000)]
  0x1908f800 JavaThread "AWT-Windows" daemon [_thread_in_native, id=4960, stack(0x19590000,0x195e0000)]
  0x1908f000 JavaThread "AWT-Shutdown" [_thread_blocked, id=5444, stack(0x18f50000,0x18fa0000)]
  0x185ccc00 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=5812, stack(0x18d50000,0x18da0000)]
  0x184ac400 JavaThread "TimerQueue" daemon [_thread_blocked, id=864, stack(0x19520000,0x19570000)]
  0x18471400 JavaThread "Service Thread" daemon [_thread_blocked, id=4892, stack(0x18e80000,0x18ed0000)]
  0x1846e800 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=4616, stack(0x18db0000,0x18e00000)]
  0x1845f400 JavaThread "JDWP Command Reader" daemon [_thread_in_native, id=6056, stack(0x18f00000,0x18f50000)]
  0x1845e000 JavaThread "JDWP Event Helper Thread" daemon [_thread_blocked, id=5260, stack(0x18e30000,0x18e80000)]
  0x1845cc00 JavaThread "JDWP Transport Listener: dt_socket" daemon [_thread_blocked, id=4104, stack(0x18d00000,0x18d50000)]
  0x1844e800 JavaThread "Attach Listener" daemon [_thread_blocked, id=3996, stack(0x18310000,0x18360000)]
  0x1844b400 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=1876, stack(0x18600000,0x18650000)]
  0x010fec00 JavaThread "Finalizer" daemon [_thread_blocked, id=4620, stack(0x18660000,0x186b0000)]
  0x010fd400 JavaThread "Reference Handler" daemon [_thread_blocked, id=5344, stack(0x18280000,0x182d0000)]

Other Threads:
  0x010f8800 VMThread [stack: 0x183a0000,0x183f0000] [id=4392]
  0x18484c00 WatcherThread [stack: 0x18fb0000,0x19000000] [id=5728]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread: None

Heap
 def new generation   total 5120K, used 3147K [0x04260000, 0x047e0000, 0x097b0000)
  eden space 4608K,  67% used [0x04260000, 0x0456ebb0, 0x046e0000)
  from space 512K,   3% used [0x046e0000, 0x046e4068, 0x04760000)
  to   space 512K,   0% used [0x04760000, 0x04760000, 0x047e0000)
 tenured generation   total 11176K, used 6450K [0x097b0000, 0x0a29a000, 0x14260000)
   the space 11176K,  57% used [0x097b0000, 0x09dfcb08, 0x09dfcc00, 0x0a29a000)
 compacting perm gen  total 12288K, used 12042K [0x14260000, 0x14e60000, 0x18260000)
   the space 12288K,  98% used [0x14260000, 0x14e22a60, 0x14e22c00, 0x14e60000)
No shared spaces configured.

Code Cache  [0x02260000, 0x02578000, 0x04260000)
 total_blobs=1402 nmethods=1021 adapters=324 free_code_cache=29624Kb largest_free_block=30335488

Compilation events (10 events):
Event: 1399.977 Thread 0x1846e800 1008             com.jogamp.opengl.util.texture.spi.DDSImage::isDDSImage (94 bytes)
Event: 1399.977 Thread 0x1846e800 nmethod 1008 0x0256ca48 code [0x0256cbc0, 0x0256ce54]
Event: 1913.101 Thread 0x1846e800 1009             javax.imageio.stream.ImageInputStreamImpl::readFully (73 bytes)
Event: 1913.121 Thread 0x1846e800 nmethod 1009 0x0256d048 code [0x0256d190, 0x0256d3a4]
Event: 2060.744 Thread 0x1846e800 1010             java.awt.image.ComponentSampleModel::getSampleSize (35 bytes)
Event: 2060.744 Thread 0x1846e800 nmethod 1010 0x0256d588 code [0x0256d690, 0x0256d7ec]
Event: 2060.873 Thread 0x1846e800 1011             java.awt.image.BufferedImage::<init> (955 bytes)
Event: 2061.030 Thread 0x1846e800 nmethod 1011 0x0256d8c8 code [0x0256dcd0, 0x0256f324]
Event: 2061.274 Thread 0x1846e800 1012             java.awt.image.ComponentColorModel::isCompatibleRaster (77 bytes)
Event: 2061.275 Thread 0x1846e800 nmethod 1012 0x02571948 code [0x02571a70, 0x02571c38]

GC Heap History (10 events):
Event: 2317.637 GC heap before
{Heap before GC invocations=2014 (full 106):
 def new generation   total 5120K, used 4608K [0x04260000, 0x047e0000, 0x097b0000)
  eden space 4608K, 100% used [0x04260000, 0x046e0000, 0x046e0000)
  from space 512K,   0% used [0x04760000, 0x04760000, 0x047e0000)
  to   space 512K,   0% used [0x046e0000, 0x046e0000, 0x04760000)
 tenured generation   total 11176K, used 6450K [0x097b0000, 0x0a29a000, 0x14260000)
   the space 11176K,  57% used [0x097b0000, 0x09dfcb08, 0x09dfcc00, 0x0a29a000)
 compacting perm gen  total 12288K, used 12042K [0x14260000, 0x14e60000, 0x18260000)
   the space 12288K,  98% used [0x14260000, 0x14e22a60, 0x14e22c00, 0x14e60000)
No shared spaces configured.
Event: 2317.638 GC heap after
Heap after GC invocations=2015 (full 106):
 def new generation   total 5120K, used 0K [0x04260000, 0x047e0000, 0x097b0000)
  eden space 4608K,   0% used [0x04260000, 0x04260000, 0x046e0000)
  from space 512K,   0% used [0x046e0000, 0x046e0000, 0x04760000)
  to   space 512K,   0% used [0x04760000, 0x04760000, 0x047e0000)
 tenured generation   total 11176K, used 6450K [0x097b0000, 0x0a29a000, 0x14260000)
   the space 11176K,  57% used [0x097b0000, 0x09dfcb08, 0x09dfcc00, 0x0a29a000)
 compacting perm gen  total 12288K, used 12042K [0x14260000, 0x14e60000, 0x18260000)
   the space 12288K,  98% used [0x14260000, 0x14e22a60, 0x14e22c00, 0x14e60000)
No shared spaces configured.
}
Event: 2317.924 GC heap before
{Heap before GC invocations=2015 (full 106):
 def new generation   total 5120K, used 4608K [0x04260000, 0x047e0000, 0x097b0000)
  eden space 4608K, 100% used [0x04260000, 0x046e0000, 0x046e0000)
  from space 512K,   0% used [0x046e0000, 0x046e0000, 0x04760000)
  to   space 512K,   0% used [0x04760000, 0x04760000, 0x047e0000)
 tenured generation   total 11176K, used 6450K [0x097b0000, 0x0a29a000, 0x14260000)
   the space 11176K,  57% used [0x097b0000, 0x09dfcb08, 0x09dfcc00, 0x0a29a000)
 compacting perm gen  total 12288K, used 12042K [0x14260000, 0x14e60000, 0x18260000)
   the space 12288K,  98% used [0x14260000, 0x14e22a60, 0x14e22c00, 0x14e60000)
No shared spaces configured.
Event: 2317.925 GC heap after
Heap after GC invocations=2016 (full 106):
 def new generation   total 5120K, used 16K [0x04260000, 0x047e0000, 0x097b0000)
  eden space 4608K,   0% used [0x04260000, 0x04260000, 0x046e0000)
  from space 512K,   3% used [0x04760000, 0x04764068, 0x047e0000)
  to   space 512K,   0% used [0x046e0000, 0x046e0000, 0x04760000)
 tenured generation   total 11176K, used 6450K [0x097b0000, 0x0a29a000, 0x14260000)
   the space 11176K,  57% used [0x097b0000, 0x09dfcb08, 0x09dfcc00, 0x0a29a000)
 compacting perm gen  total 12288K, used 12042K [0x14260000, 0x14e60000, 0x18260000)
   the space 12288K,  98% used [0x14260000, 0x14e22a60, 0x14e22c00, 0x14e60000)
No shared spaces configured.
}
Event: 2318.162 GC heap before
{Heap before GC invocations=2016 (full 106):
 def new generation   total 5120K, used 4624K [0x04260000, 0x047e0000, 0x097b0000)
  eden space 4608K, 100% used [0x04260000, 0x046e0000, 0x046e0000)
  from space 512K,   3% used [0x04760000, 0x04764068, 0x047e0000)
  to   space 512K,   0% used [0x046e0000, 0x046e0000, 0x04760000)
 tenured generation   total 11176K, used 6450K [0x097b0000, 0x0a29a000, 0x14260000)
   the space 11176K,  57% used [0x097b0000, 0x09dfcb08, 0x09dfcc00, 0x0a29a000)
 compacting perm gen  total 12288K, used 12042K [0x14260000, 0x14e60000, 0x18260000)
   the space 12288K,  98% used [0x14260000, 0x14e22a60, 0x14e22c00, 0x14e60000)
No shared spaces configured.
Event: 2318.163 GC heap after
Heap after GC invocations=2017 (full 106):
 def new generation   total 5120K, used 16K [0x04260000, 0x047e0000, 0x097b0000)
  eden space 4608K,   0% used [0x04260000, 0x04260000, 0x046e0000)
  from space 512K,   3% used [0x046e0000, 0x046e4068, 0x04760000)
  to   space 512K,   0% used [0x04760000, 0x04760000, 0x047e0000)
 tenured generation   total 11176K, used 6450K [0x097b0000, 0x0a29a000, 0x14260000)
   the space 11176K,  57% used [0x097b0000, 0x09dfcb08, 0x09dfcc00, 0x0a29a000)
 compacting perm gen  total 12288K, used 12042K [0x14260000, 0x14e60000, 0x18260000)
   the space 12288K,  98% used [0x14260000, 0x14e22a60, 0x14e22c00, 0x14e60000)
No shared spaces configured.
}
Event: 2318.428 GC heap before
{Heap before GC invocations=2017 (full 106):
 def new generation   total 5120K, used 4624K [0x04260000, 0x047e0000, 0x097b0000)
  eden space 4608K, 100% used [0x04260000, 0x046e0000, 0x046e0000)
  from space 512K,   3% used [0x046e0000, 0x046e4068, 0x04760000)
  to   space 512K,   0% used [0x04760000, 0x04760000, 0x047e0000)
 tenured generation   total 11176K, used 6450K [0x097b0000, 0x0a29a000, 0x14260000)
   the space 11176K,  57% used [0x097b0000, 0x09dfcb08, 0x09dfcc00, 0x0a29a000)
 compacting perm gen  total 12288K, used 12042K [0x14260000, 0x14e60000, 0x18260000)
   the space 12288K,  98% used [0x14260000, 0x14e22a60, 0x14e22c00, 0x14e60000)
No shared spaces configured.
Event: 2318.429 GC heap after
Heap after GC invocations=2018 (full 106):
 def new generation   total 5120K, used 16K [0x04260000, 0x047e0000, 0x097b0000)
  eden space 4608K,   0% used [0x04260000, 0x04260000, 0x046e0000)
  from space 512K,   3% used [0x04760000, 0x04764068, 0x047e0000)
  to   space 512K,   0% used [0x046e0000, 0x046e0000, 0x04760000)
 tenured generation   total 11176K, used 6450K [0x097b0000, 0x0a29a000, 0x14260000)
   the space 11176K,  57% used [0x097b0000, 0x09dfcb08, 0x09dfcc00, 0x0a29a000)
 compacting perm gen  total 12288K, used 12042K [0x14260000, 0x14e60000, 0x18260000)
   the space 12288K,  98% used [0x14260000, 0x14e22a60, 0x14e22c00, 0x14e60000)
No shared spaces configured.
}
Event: 2318.759 GC heap before
{Heap before GC invocations=2018 (full 106):
 def new generation   total 5120K, used 4624K [0x04260000, 0x047e0000, 0x097b0000)
  eden space 4608K, 100% used [0x04260000, 0x046e0000, 0x046e0000)
  from space 512K,   3% used [0x04760000, 0x04764068, 0x047e0000)
  to   space 512K,   0% used [0x046e0000, 0x046e0000, 0x04760000)
 tenured generation   total 11176K, used 6450K [0x097b0000, 0x0a29a000, 0x14260000)
   the space 11176K,  57% used [0x097b0000, 0x09dfcb08, 0x09dfcc00, 0x0a29a000)
 compacting perm gen  total 12288K, used 12042K [0x14260000, 0x14e60000, 0x18260000)
   the space 12288K,  98% used [0x14260000, 0x14e22a60, 0x14e22c00, 0x14e60000)
No shared spaces configured.
Event: 2318.761 GC heap after
Heap after GC invocations=2019 (full 106):
 def new generation   total 5120K, used 16K [0x04260000, 0x047e0000, 0x097b0000)
  eden space 4608K,   0% used [0x04260000, 0x04260000, 0x046e0000)
  from space 512K,   3% used [0x046e0000, 0x046e4068, 0x04760000)
  to   space 512K,   0% used [0x04760000, 0x04760000, 0x047e0000)
 tenured generation   total 11176K, used 6450K [0x097b0000, 0x0a29a000, 0x14260000)
   the space 11176K,  57% used [0x097b0000, 0x09dfcb08, 0x09dfcc00, 0x0a29a000)
 compacting perm gen  total 12288K, used 12042K [0x14260000, 0x14e60000, 0x18260000)
   the space 12288K,  98% used [0x14260000, 0x14e22a60, 0x14e22c00, 0x14e60000)
No shared spaces configured.
}

Deoptimization events (0 events):
No events

Internal exceptions (10 events):
Event: 7.922 Thread 0x192a5800 Threw 0x045c8238 at C:\jdk7u5_32P\jdk7u5\hotspot\src\share\vm\prims\jvm.cpp:1166
Event: 7.923 Thread 0x192a5800 Threw 0x045c95b8 at C:\jdk7u5_32P\jdk7u5\hotspot\src\share\vm\prims\jvm.cpp:1166
Event: 7.924 Thread 0x192a5800 Threw 0x045cd140 at C:\jdk7u5_32P\jdk7u5\hotspot\src\share\vm\prims\jvm.cpp:1166
Event: 7.925 Thread 0x192a5800 Threw 0x045d0090 at C:\jdk7u5_32P\jdk7u5\hotspot\src\share\vm\prims\jvm.cpp:1166
Event: 7.926 Thread 0x192a5800 Threw 0x045d1f70 at C:\jdk7u5_32P\jdk7u5\hotspot\src\share\vm\prims\jvm.cpp:1166
Event: 7.931 Thread 0x192a5800 Threw 0x045e4b58 at C:\jdk7u5_32P\jdk7u5\hotspot\src\share\vm\prims\jvm.cpp:1166
Event: 7.932 Thread 0x192a5800 Threw 0x045e6ce8 at C:\jdk7u5_32P\jdk7u5\hotspot\src\share\vm\prims\jvm.cpp:1166
Event: 7.942 Thread 0x192a5800 Threw 0x04679b78 at C:\jdk7u5_32P\jdk7u5\hotspot\src\share\vm\prims\jvm.cpp:1166
Event: 7.943 Thread 0x192a5800 Threw 0x0467b610 at C:\jdk7u5_32P\jdk7u5\hotspot\src\share\vm\prims\jvm.cpp:1166
Event: 7.943 Thread 0x192a5800 Threw 0x0467d4a0 at C:\jdk7u5_32P\jdk7u5\hotspot\src\share\vm\prims\jvm.cpp:1166

Events (10 events):
Event: 2317.636 Executing VM operation: GenCollectForAllocation
Event: 2317.638 Executing VM operation: GenCollectForAllocation done
Event: 2317.924 Executing VM operation: GenCollectForAllocation
Event: 2317.925 Executing VM operation: GenCollectForAllocation done
Event: 2318.162 Executing VM operation: GenCollectForAllocation
Event: 2318.163 Executing VM operation: GenCollectForAllocation done
Event: 2318.427 Executing VM operation: GenCollectForAllocation
Event: 2318.429 Executing VM operation: GenCollectForAllocation done
Event: 2318.759 Executing VM operation: GenCollectForAllocation
Event: 2318.761 Executing VM operation: GenCollectForAllocation done


Dynamic libraries:
0x01230000 - 0x0125f000 C:\Program Files\Java\jdk1.7.0_05\bin\javaw.exe
0x77c00000 - 0x77d28000 C:\Windows\system32\ntdll.dll
0x767a0000 - 0x7687c000 C:\Windows\system32\kernel32.dll
0x76560000 - 0x76626000 C:\Windows\system32\ADVAPI32.dll
0x77d90000 - 0x77e52000 C:\Windows\system32\RPCRT4.dll
0x766b0000 - 0x7674d000 C:\Windows\system32\USER32.dll
0x76f10000 - 0x76f5b000 C:\Windows\system32\GDI32.dll
0x751c0000 - 0x7535e000 C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.6001.18523_none_5cdd65e20837faf2\COMCTL32.dll
0x76960000 - 0x76a0a000 C:\Windows\system32\msvcrt.dll
0x76b70000 - 0x76bc8000 C:\Windows\system32\SHLWAPI.dll
0x77d70000 - 0x77d8e000 C:\Windows\system32\IMM32.DLL
0x76bd0000 - 0x76c98000 C:\Windows\system32\MSCTF.dll
0x77d30000 - 0x77d39000 C:\Windows\system32\LPK.DLL
0x768e0000 - 0x7695d000 C:\Windows\system32\USP10.dll
0x6ac00000 - 0x6acbe000 C:\Program Files\Java\jdk1.7.0_05\jre\bin\msvcr100.dll
0x6a480000 - 0x6a7ca000 C:\Program Files\Java\jdk1.7.0_05\jre\bin\client\jvm.dll
0x72e90000 - 0x72e97000 C:\Windows\system32\WSOCK32.dll
0x77d40000 - 0x77d6d000 C:\Windows\system32\WS2_32.dll
0x76470000 - 0x76476000 C:\Windows\system32\NSI.dll
0x735c0000 - 0x735f2000 C:\Windows\system32\WINMM.dll
0x76ca0000 - 0x76de4000 C:\Windows\system32\ole32.dll
0x76df0000 - 0x76e7d000 C:\Windows\system32\OLEAUT32.dll
0x74720000 - 0x74759000 C:\Windows\system32\OLEACC.dll
0x763d0000 - 0x763d7000 C:\Windows\system32\PSAPI.DLL
0x72970000 - 0x7297c000 C:\Program Files\Java\jdk1.7.0_05\jre\bin\verify.dll
0x6b1f0000 - 0x6b210000 C:\Program Files\Java\jdk1.7.0_05\jre\bin\java.dll
0x6b020000 - 0x6b04a000 C:\Program Files\Java\jdk1.7.0_05\jre\bin\jdwp.dll
0x74de0000 - 0x74de7000 C:\Program Files\Java\jdk1.7.0_05\jre\bin\npt.dll
0x6b240000 - 0x6b253000 C:\Program Files\Java\jdk1.7.0_05\jre\bin\zip.dll
0x74e00000 - 0x74e08000 C:\Program Files\Java\jdk1.7.0_05\jre\bin\dt_socket.dll
0x753d0000 - 0x753df000 C:\Windows\system32\NLAapi.dll
0x75d00000 - 0x75d19000 C:\Windows\system32\IPHLPAPI.DLL
0x75cc0000 - 0x75cf5000 C:\Windows\system32\dhcpcsvc.DLL
0x75f50000 - 0x75f7c000 C:\Windows\system32\DNSAPI.dll
0x76300000 - 0x76314000 C:\Windows\system32\Secur32.dll
0x75cb0000 - 0x75cb7000 C:\Windows\system32\WINNSI.DLL
0x75c80000 - 0x75ca1000 C:\Windows\system32\dhcpcsvc6.DLL
0x72c80000 - 0x72c8f000 C:\Windows\system32\napinsp.dll
0x72b90000 - 0x72ba2000 C:\Windows\system32\pnrpnsp.dll
0x72bc0000 - 0x72bcc000 C:\Windows\system32\wshbth.dll
0x76f60000 - 0x770ea000 C:\Windows\system32\SETUPAPI.dll
0x75ac0000 - 0x75afb000 C:\Windows\System32\mswsock.dll
0x72bb0000 - 0x72bb8000 C:\Windows\System32\winrnr.dll
0x76750000 - 0x7679a000 C:\Windows\system32\WLDAP32.dll
0x72c60000 - 0x72c66000 C:\Windows\system32\rasadhlp.dll
0x75750000 - 0x75755000 C:\Windows\System32\wshtcpip.dll
0x6a940000 - 0x6aa82000 C:\Program Files\Java\jdk1.7.0_05\jre\bin\awt.dll
0x754c0000 - 0x754ff000 C:\Windows\system32\uxtheme.dll
0x770f0000 - 0x77c00000 C:\Windows\system32\SHELL32.dll
0x72ae0000 - 0x72aec000 C:\Windows\system32\DWMAPI.DLL
0x6b260000 - 0x6b28a000 C:\Program Files\Java\jdk1.7.0_05\jre\bin\fontmanager.dll
0x011f0000 - 0x01225000 C:\Windows\system32\btmmhook.dll
0x6b1b0000 - 0x6b1c4000 C:\Program Files\Java\jdk1.7.0_05\jre\bin\net.dll
0x75ab0000 - 0x75ab5000 C:\Windows\System32\wship6.dll
0x72d20000 - 0x72d2f000 C:\Program Files\Java\jdk1.7.0_05\jre\bin\nio.dll
0x6a900000 - 0x6a931000 C:\Program Files\Java\jdk1.7.0_05\jre\bin\t2k.dll
0x008b0000 - 0x008c3000 C:\Users\Main\Pictures\jinput_nightly_20120506\dist\jinput-dx8.dll
0x6a8c0000 - 0x6a8f3000 C:\Windows\system32\DINPUT8.dll
0x75370000 - 0x75379000 C:\Windows\system32\HID.DLL
0x755c0000 - 0x755ed000 C:\Windows\system32\WINTRUST.dll
0x75da0000 - 0x75e91000 C:\Windows\system32\CRYPT32.dll
0x75f10000 - 0x75f22000 C:\Windows\system32\MSASN1.dll
0x76320000 - 0x7633e000 C:\Windows\system32\USERENV.dll
0x76b40000 - 0x76b69000 C:\Windows\system32\imagehlp.dll
0x00d60000 - 0x00d72000 C:\Users\Main\Pictures\jinput_nightly_20120506\dist\jinput-raw.dll
0x75830000 - 0x7586b000 C:\Windows\system32\rsaenh.dll
0x637c0000 - 0x637ca000 C:\Users\Main\AppData\Local\Temp\jogamp\file_cache\jln6259860360008740800\jln2087029543530373118\gluegen-rt.dll
0x74d90000 - 0x74d96000 C:\Program Files\Java\jdk1.7.0_05\jre\bin\jawt.dll
0x6a440000 - 0x6a44a000 C:\Users\Main\AppData\Local\Temp\jogamp\file_cache\jln6259860360008740800\jln2087029543530373118\nativewindow_awt.dll
0x6c100000 - 0x6c110000 C:\Users\Main\AppData\Local\Temp\jogamp\file_cache\jln6259860360008740800\jln2087029543530373118\nativewindow_win32.dll
0x6a7f0000 - 0x6a8bb000 C:\Windows\system32\OpenGL32.dll
0x6aff0000 - 0x6b013000 C:\Windows\system32\GLU32.dll
0x6f780000 - 0x6f865000 C:\Windows\system32\DDRAW.dll
0x73610000 - 0x73616000 C:\Windows\system32\DCIMAN32.dll
0x64500000 - 0x6456b000 C:\Users\Main\AppData\Local\Temp\jogamp\file_cache\jln6259860360008740800\jln2087029543530373118\jogl_desktop.dll
0x1a3f0000 - 0x1a63b000 C:\Windows\system32\ig4icd32.dll
0x1a640000 - 0x1a7cb000 C:\Windows\system32\ig4dev32.dll
0x6cbc0000 - 0x6cbd1000 C:\Users\Main\AppData\Local\Temp\jogamp\file_cache\jln6259860360008740800\jln2087029543530373118\newt.dll
0x6acf0000 - 0x6ad15000 C:\Program Files\Java\jdk1.7.0_05\jre\bin\jpeg.dll
0x72960000 - 0x7296a000 C:\Program Files\Java\jdk1.7.0_05\jre\bin\jsound.dll
0x72920000 - 0x72929000 C:\Program Files\Java\jdk1.7.0_05\jre\bin\jsoundds.dll
0x6a1e0000 - 0x6a250000 C:\Windows\system32\DSOUND.dll
0x75770000 - 0x7578a000 C:\Windows\system32\POWRPROF.dll
0x73530000 - 0x7355f000 C:\Windows\system32\wdmaud.drv
0x735b0000 - 0x735b4000 C:\Windows\system32\ksuser.dll
0x75460000 - 0x75487000 C:\Windows\system32\MMDevAPI.DLL
0x75680000 - 0x75687000 C:\Windows\system32\AVRT.dll
0x73500000 - 0x73521000 C:\Windows\system32\AUDIOSES.DLL
0x73490000 - 0x734f6000 C:\Windows\system32\audioeng.dll
0x735a0000 - 0x735a9000 C:\Windows\system32\msacm32.drv
0x73470000 - 0x73484000 C:\Windows\system32\MSACM32.dll
0x73460000 - 0x73467000 C:\Windows\system32\midimap.dll
0x76e80000 - 0x76f04000 C:\Windows\system32\CLBCatQ.DLL
0x18bd0000 - 0x18bf1000 C:\Program Files\WIDCOMM\Bluetooth Software\btkeyind.dll

VM Arguments:
jvm_args: -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:55199 -Djava.library.path=C:\Users\Main\Pictures\jinput_nightly_20120506\dist -Dfile.encoding=Cp1252
java_command: pixelapp.wavelogy.Wavelogy
Launcher Type: SUN_STANDARD

Environment Variables:
JAVA_HOME=C:\Program Files\Java\jdk1.7.0_05;
PATH=C:\Program Files\Java\jdk1.7.0_05\jre\bin;C:/Program Files/Java/jdk1.7.0_05/bin/../jre/bin/client;C:/Program Files/Java/jdk1.7.0_05/bin/../jre/bin;C:/Program Files/Java/jdk1.7.0_05/bin/../jre/lib/i386;C:\Program Files\Java\jdk1.7.0_05\bin;C:\Program Files\Java\jdk1.7.0_05\lib;C:\Users\Main\Pictures\apache-ant-1.8.4\bin;C:\Program Files\MinGW\bin;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files\Autodesk\Backburner\;C:\Program Files\Common Files\Autodesk Shared\;C:\Program Files\Java\jre7\bin;C:\Users\Main\Desktop\eclipse;
USERNAME=Main
OS=Windows_NT
PROCESSOR_IDENTIFIER=x86 Family 6 Model 15 Stepping 13, GenuineIntel



---------------  S Y S T E M  ---------------

OS: Windows Vista Build 6001 Service Pack 1

CPU:total 2 (2 cores per cpu, 1 threads per core) family 6 model 15 stepping 13, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, tsc

Memory: 4k page, physical 2086592k(124876k free), swap 4418208k(810812k free)

vm_info: Java HotSpot(TM) Client VM (23.1-b03) for windows-x86 JRE (1.7.0_05-b05), built on May 15 2012 18:11:27 by "java_re" with unknown MS VC++:1600

time: Mon Aug 06 19:39:21 2012
elapsed time: 2325 seconds
Reply | Threaded
Open this post in threaded view
|

Re: Code for Peer Review

gouessej
Administrator
Please provide a tiny test case so that we can easily reproduce your bug or find what is wrong in your code. I don't use this method but I use a feature relying on a similar source code than the one used in this helper class..
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Code for Peer Review

Pixelapp
It's the same code as the first post. Just Texture.destroy() the texture that was created infinitely in a loop (i.e. Texture.updateImage() then Texture.destroy()) and you get the bug.

It's just the same as the code above.
Reply | Threaded
Open this post in threaded view
|

Re: Code for Peer Review

Pixelapp
In reply to this post by gouessej
Alright, I'll give you a test case. Wait for it, I'll post it in a couple of minutes.
Reply | Threaded
Open this post in threaded view
|

Re: Code for Peer Review

Pixelapp
In reply to this post by gouessej
I'll post it when I have it.
Reply | Threaded
Open this post in threaded view
|

Re: Code for Peer Review

Pixelapp
In reply to this post by gouessej
Feel free to debug the $@%\# out of this code.

https://dl.dropbox.com/u/60452878/TestCase.zip

Instructions: Just run it and it should crash.

Edit: This code takes up to 8 hours to crash. In average it takes about 15 minutes to crash, though.