diff --git a/src/java/org/lwjgl/opengl/BufferObjectTracker.java b/src/java/org/lwjgl/opengl/BufferObjectTracker.java index 09804df0..d0ba3fa6 100644 --- a/src/java/org/lwjgl/opengl/BufferObjectTracker.java +++ b/src/java/org/lwjgl/opengl/BufferObjectTracker.java @@ -61,6 +61,26 @@ final class BufferObjectTracker { attrib_stack = new StateStack(stack_size, 0); } + static void popAttrib() { + if ((getClientAttribStack().popState() & GL11.GL_CLIENT_VERTEX_ARRAY_BIT) != 0) { + getVBOArrayStack().popState(); + getVBOElementStack().popState(); + getPBOPackStack().popState(); + getPBOUnpackStack().popState(); + } + } + + static void pushAttrib(int mask) { + getClientAttribStack().pushState(); + getClientAttribStack().setState(mask); + if ((mask & GL11.GL_CLIENT_VERTEX_ARRAY_BIT) != 0) { + getVBOArrayStack().pushState(); + getVBOElementStack().pushState(); + getPBOPackStack().pushState(); + getPBOUnpackStack().pushState(); + } + } + static StateStack getVBOArrayStack() { return current_tracker.vbo_array_stack; } diff --git a/src/java/org/lwjgl/opengl/GL11.java b/src/java/org/lwjgl/opengl/GL11.java index 0e02696b..80265459 100644 --- a/src/java/org/lwjgl/opengl/GL11.java +++ b/src/java/org/lwjgl/opengl/GL11.java @@ -1426,25 +1426,13 @@ public final class GL11 { public static native void glPopMatrix(); public static void glPushClientAttrib(int mask) { - BufferObjectTracker.getClientAttribStack().pushState(); - BufferObjectTracker.getClientAttribStack().setState(mask); - if ((mask & GL_CLIENT_VERTEX_ARRAY_BIT) != 0) { - BufferObjectTracker.getVBOArrayStack().pushState(); - BufferObjectTracker.getVBOElementStack().pushState(); - BufferObjectTracker.getPBOPackStack().pushState(); - BufferObjectTracker.getPBOUnpackStack().pushState(); - } + BufferObjectTracker.pushAttrib(mask); nglPushClientAttrib(mask); } private static native void nglPushClientAttrib(int mask); public static void glPopClientAttrib() { - if ((BufferObjectTracker.getClientAttribStack().popState() & GL_CLIENT_VERTEX_ARRAY_BIT) != 0) { - BufferObjectTracker.getVBOArrayStack().popState(); - BufferObjectTracker.getVBOElementStack().popState(); - BufferObjectTracker.getPBOPackStack().popState(); - BufferObjectTracker.getPBOUnpackStack().popState(); - } + BufferObjectTracker.popAttrib(); nglPopClientAttrib(); } private static native void nglPopClientAttrib(); @@ -1675,4 +1663,4 @@ public final class GL11 { public static native void glStencilOp(int fail, int zfail, int zpass); public static native void glStencilMask(int mask); public static native void glViewport(int x, int y, int width, int height); -} \ No newline at end of file +}