From 9512c9fa62ece3960472b6ab2cd6ce5244da8501 Mon Sep 17 00:00:00 2001
From: Kenneth Russel <kbrussel@alum.mit.edu>
Date: Thu, 22 Apr 2004 03:37:57 +0000
Subject: Added OpenGL 1.5 support. Updated glext.h, wglext.h, and glxext.h
 from extension registry; these now include only very few changes relative to
 the master version. Fixed bugs in GlueGen and PCPP to make it parse the
 verbatim headers and to emit correct glue code for some newly-exercised
 constructs like char**.

git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@115 232f8b59-042b-4e1e-8c03-345bb8c30851
---
 .../games/gluegen/opengl/CGLPAWrapperEmitter.java  | 32 +++++++++++++---------
 1 file changed, 19 insertions(+), 13 deletions(-)

(limited to 'src/net/java/games/gluegen/opengl/CGLPAWrapperEmitter.java')

diff --git a/src/net/java/games/gluegen/opengl/CGLPAWrapperEmitter.java b/src/net/java/games/gluegen/opengl/CGLPAWrapperEmitter.java
index 2a1559e52..bb80190d3 100644
--- a/src/net/java/games/gluegen/opengl/CGLPAWrapperEmitter.java
+++ b/src/net/java/games/gluegen/opengl/CGLPAWrapperEmitter.java
@@ -113,24 +113,27 @@ public class CGLPAWrapperEmitter extends CMethodBindingEmitter
     super.emitBodyVariableDeclarations(writer);
   }
 
-  protected void emitBodyVariablePreCallSetup(PrintWriter writer)
+  protected void emitBodyVariablePreCallSetup(PrintWriter writer,
+                                              boolean emittingPrimitiveArrayCritical)
   {
-    super.emitBodyVariablePreCallSetup(writer);
+    super.emitBodyVariablePreCallSetup(writer, emittingPrimitiveArrayCritical);
 
-    // set the function pointer to the value of the passed-in glProcAddress
-    FunctionSymbol cSym = getBinding().getCSymbol();
-    String funcPointerTypedefName =
-      GLEmitter.getGLFunctionPointerTypedefName(cSym);
+    if (!emittingPrimitiveArrayCritical) {
+      // set the function pointer to the value of the passed-in glProcAddress
+      FunctionSymbol cSym = getBinding().getCSymbol();
+      String funcPointerTypedefName =
+        GLEmitter.getGLFunctionPointerTypedefName(cSym);
 
-    String ptrVarName = "ptr_" + cSym.getName();
+      String ptrVarName = "ptr_" + cSym.getName();
     
-    writer.print("  ");
-    writer.print(ptrVarName);
-    writer.print(" = (");
-    writer.print(funcPointerTypedefName);
-    writer.println(") (intptr_t) glProcAddress;");
+      writer.print("  ");
+      writer.print(ptrVarName);
+      writer.print(" = (");
+      writer.print(funcPointerTypedefName);
+      writer.println(") (intptr_t) glProcAddress;");
 
-    writer.println("  assert(" + ptrVarName + " != NULL);");
+      writer.println("  assert(" + ptrVarName + " != NULL);");
+    }
   }
 
   // FIXME: refactor this and the superclass version so we don't have to copy
@@ -192,6 +195,9 @@ public class CGLPAWrapperEmitter extends CMethodBindingEmitter
         }
         if (javaType.isArray() || javaType.isNIOBuffer()) {
           writer.print(pointerConversionArgumentName(i));
+          if (javaArgTypeNeedsDataCopy(javaType)) {
+            writer.print("_copy");
+          }
         } else {
           if (javaType.isString()) { writer.print("_UTF8"); }
           writer.print(binding.getArgumentName(i));          
-- 
cgit v1.2.3