From 8b4f68a3a014c3ae62a64def3011ccc43e8c41c9 Mon Sep 17 00:00:00 2001
From: Sven Gothel <sgothel@jausoft.com>
Date: Wed, 26 Aug 2015 04:15:27 +0200
Subject: GLContextImpl.setRendererQuirks(..): Reduce duplicated code of adding
 quirks

---
 src/jogl/classes/jogamp/opengl/GLContextImpl.java | 76 +++++++++--------------
 1 file changed, 31 insertions(+), 45 deletions(-)

(limited to 'src/jogl/classes/jogamp')

diff --git a/src/jogl/classes/jogamp/opengl/GLContextImpl.java b/src/jogl/classes/jogamp/opengl/GLContextImpl.java
index 8f4105f98..fa7aeaff8 100644
--- a/src/jogl/classes/jogamp/opengl/GLContextImpl.java
+++ b/src/jogl/classes/jogamp/opengl/GLContextImpl.java
@@ -1813,6 +1813,31 @@ public abstract class GLContextImpl extends GLContext {
     return true;
   }
 
+  private static final void addStickyQuirkAlways(final AbstractGraphicsDevice adevice,
+                                                 final GLRendererQuirks quirks,
+                                                 final int quirk,
+                                                 final boolean withinGLVersionsMapping) {
+        quirks.addQuirk( quirk );
+        if( withinGLVersionsMapping ) {
+            // Thread safe due to single threaded initialization!
+            GLRendererQuirks.addStickyDeviceQuirk(adevice, quirk);
+        } else {
+            // FIXME: Remove when moving EGL/ES to ARB ctx creation
+            synchronized(GLContextImpl.class) {
+                GLRendererQuirks.addStickyDeviceQuirk(adevice, quirk);
+            }
+        }
+  }
+  private static final void addStickyQuirkAtMapping(final AbstractGraphicsDevice adevice,
+                                                    final GLRendererQuirks quirks,
+                                                    final int quirk,
+                                                    final boolean withinGLVersionsMapping) {
+        quirks.addQuirk( quirk );
+        if( withinGLVersionsMapping ) {
+            // Thread safe due to single threaded initialization!
+            GLRendererQuirks.addStickyDeviceQuirk(adevice, quirk);
+        }
+  }
   private final void setRendererQuirks(final AbstractGraphicsDevice adevice, final GLDrawableFactoryImpl factory,
                                        final int reqMajor, final int reqMinor, final int reqCTP,
                                        final int major, final int minor, final int ctp, final VersionNumberString vendorVersion,
@@ -1851,16 +1876,7 @@ public abstract class GLContextImpl extends GLContext {
             if(DEBUG) {
                 System.err.println("Quirk: "+GLRendererQuirks.toString(quirk)+": cause: ES req "+reqMajor+" and 2 < "+major);
             }
-            quirks.addQuirk( quirk );
-            if( withinGLVersionsMapping ) {
-                // Thread safe due to single threaded initialization!
-                GLRendererQuirks.addStickyDeviceQuirk(adevice, quirk);
-            } else {
-                // FIXME: Remove when moving EGL/ES to ARB ctx creation
-                synchronized(GLContextImpl.class) {
-                    GLRendererQuirks.addStickyDeviceQuirk(adevice, quirk);
-                }
-            }
+            addStickyQuirkAlways(adevice, quirks, quirk, withinGLVersionsMapping);
         }
     }
     if( GLProfile.disableSurfacelessContext ) {
@@ -1868,32 +1884,14 @@ public abstract class GLContextImpl extends GLContext {
         if(DEBUG) {
             System.err.println("Quirk: "+GLRendererQuirks.toString(quirk)+": cause: disabled");
         }
-        quirks.addQuirk( quirk );
-        if( withinGLVersionsMapping ) {
-            // Thread safe due to single threaded initialization!
-            GLRendererQuirks.addStickyDeviceQuirk(adevice, quirk);
-        } else {
-            // FIXME: Remove when moving EGL/ES to ARB ctx creation
-            synchronized(GLContextImpl.class) {
-                GLRendererQuirks.addStickyDeviceQuirk(adevice, quirk);
-            }
-        }
+        addStickyQuirkAlways(adevice, quirks, quirk, withinGLVersionsMapping);
     }
     if( GLProfile.disableOpenGLARBContext ) {
         final int quirk = GLRendererQuirks.NoARBCreateContext;
         if(DEBUG) {
             System.err.println("Quirk: "+GLRendererQuirks.toString(quirk)+": cause: disabled");
         }
-        quirks.addQuirk( quirk );
-        if( withinGLVersionsMapping ) {
-            // Thread safe due to single threaded initialization!
-            GLRendererQuirks.addStickyDeviceQuirk(adevice, quirk);
-        } else {
-            // FIXME: Remove when moving EGL/ES to ARB ctx creation
-            synchronized(GLContextImpl.class) {
-                GLRendererQuirks.addStickyDeviceQuirk(adevice, quirk);
-            }
-        }
+        addStickyQuirkAlways(adevice, quirks, quirk, withinGLVersionsMapping);
     }
 
     //
@@ -1922,11 +1920,7 @@ public abstract class GLContextImpl extends GLContext {
             if(DEBUG) {
                 System.err.println("Quirk: "+GLRendererQuirks.toString(quirk)+": cause: OS "+Platform.getOSType()+", OS Version "+Platform.getOSVersionNumber()+", req "+reqMajor+"."+reqMinor);
             }
-            quirks.addQuirk( quirk );
-            if( withinGLVersionsMapping ) {
-                // Thread safe due to single threaded initialization!
-                GLRendererQuirks.addStickyDeviceQuirk(adevice, quirk);
-            }
+            addStickyQuirkAtMapping(adevice, quirks, quirk, withinGLVersionsMapping);
         }
         if( isDriverNVIDIAGeForce ) {
             final VersionNumber osxVersionNVFlushClean = new VersionNumber(10,7,3); // < OSX 10.7.3 w/ NV needs glFlush
@@ -1984,11 +1978,7 @@ public abstract class GLContextImpl extends GLContext {
                     if(DEBUG) {
                         System.err.println("Quirk: "+GLRendererQuirks.toString(quirk)+": cause: OS "+Platform.getOSType()+", [Vendor "+glVendor+", Renderer "+glRenderer+" and Version "+glVersion+"]");
                     }
-                    quirks.addQuirk( quirk );
-                    if( withinGLVersionsMapping ) {
-                        // Thread safe due to single threaded initialization!
-                        GLRendererQuirks.addStickyDeviceQuirk(adevice, quirk);
-                    }
+                    addStickyQuirkAtMapping(adevice, quirks, quirk, withinGLVersionsMapping);
                 }
             }
         } else if( isDriverIntel && glRenderer.equals("Intel Bear Lake B") ) {
@@ -2111,11 +2101,7 @@ public abstract class GLContextImpl extends GLContext {
             if(DEBUG) {
                 System.err.println("Quirk: "+GLRendererQuirks.toString(quirk)+": cause: X11 / Renderer " + glRenderer + " / Vendor "+glVendor);
             }
-            quirks.addQuirk( quirk );
-            if( withinGLVersionsMapping ) {
-                // Thread safe due to single threaded initialization!
-                GLRendererQuirks.addStickyDeviceQuirk(adevice, quirk);
-            }
+            addStickyQuirkAtMapping(adevice, quirks, quirk, withinGLVersionsMapping);
         }
         if( isWindows && glRenderer.contains("SVGA3D") && vendorVersion.compareTo(mesaSafeFBOVersion) < 0 ) {
             final int quirk = GLRendererQuirks.NoFullFBOSupport;
-- 
cgit v1.2.3