From 87ff90fb03216737df70ff83246664b7fba2663e Mon Sep 17 00:00:00 2001
From: Sven Gothel <sgothel@jausoft.com>
Date: Mon, 22 Aug 2011 16:38:45 +0200
Subject: Fix regression of commit 6c346d98f04e2355210960fe9ffde47432f04d62,
 where VBO/attribute binding wasn't updated (VBO data written, shader
 change/switch attribute on same location) ; Optimized interleaved GLSL VBO
 binding, hence split up GLArrayHandler syncData/enableState

---
 .../opengl/util/GLFixedArrayHandlerInterleaved.java    | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

(limited to 'src/jogl/classes/jogamp/opengl/util/GLFixedArrayHandlerInterleaved.java')

diff --git a/src/jogl/classes/jogamp/opengl/util/GLFixedArrayHandlerInterleaved.java b/src/jogl/classes/jogamp/opengl/util/GLFixedArrayHandlerInterleaved.java
index 838032646..4bac20217 100644
--- a/src/jogl/classes/jogamp/opengl/util/GLFixedArrayHandlerInterleaved.java
+++ b/src/jogl/classes/jogamp/opengl/util/GLFixedArrayHandlerInterleaved.java
@@ -54,15 +54,15 @@ public class GLFixedArrayHandlerInterleaved implements GLArrayHandler {
       subArrays.add(handler);
   }
 
-  private final void enableSubBuffer(GL gl, boolean enable) {
+  private final void syncSubData(GL gl, boolean enable) {
       for(int i=0; i<subArrays.size(); i++) {
-          subArrays.get(i).enableBuffer(gl, enable);
+          subArrays.get(i).syncData(gl, enable);
       }      
   }
   
-  public final void enableBuffer(GL gl, boolean enable) {
+  public final void syncData(GL gl, boolean enable) {
     if(enable) {
-        Buffer buffer = ad.getBuffer();
+        final Buffer buffer = ad.getBuffer();
 
         if(ad.isVBO()) {
             // always bind and refresh the VBO mgr, 
@@ -75,13 +75,19 @@ public class GLFixedArrayHandlerInterleaved implements GLArrayHandler {
                 ad.setVBOWritten(true);
             }
         }
-        enableSubBuffer(gl, true);
+        syncSubData(gl, true);
     } else {
-        enableSubBuffer(gl, false);
+        syncSubData(gl, false);
         if(ad.isVBO()) {
             gl.glBindBuffer(ad.getVBOTarget(), 0);
         }
     }
   }
+  
+  public final void enableState(GL gl, boolean enable) {
+    for(int i=0; i<subArrays.size(); i++) {
+        subArrays.get(i).enableState(gl, enable);
+    }      
+  }
 }
 
-- 
cgit v1.2.3