diff options
-rw-r--r-- | src/nativewindow/classes/com/jogamp/nativewindow/swt/SWTAccessor.java | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/swt/SWTAccessor.java b/src/nativewindow/classes/com/jogamp/nativewindow/swt/SWTAccessor.java index e6df8289a..48661170c 100644 --- a/src/nativewindow/classes/com/jogamp/nativewindow/swt/SWTAccessor.java +++ b/src/nativewindow/classes/com/jogamp/nativewindow/swt/SWTAccessor.java @@ -178,56 +178,57 @@ public class SWTAccessor { } swt_control_internal_dispose_GC = m; - Class<?> c=null; + Class<?> cGTK=null; VersionNumber _gtk_version = new VersionNumber(0, 0, 0); Method m1=null, m2=null, m3=null, m4=null, m5=null, m6=null, m7=null, m8=null, m9=null, ma=null, mb=null; final Class<?> handleType = swt_uses_long_handles ? long.class : int.class ; if( isX11 ) { // mandatory try { - c = ReflectionUtil.getClass(str_OS_gtk_class, false, SWTAccessor.class.getClassLoader()); + final ClassLoader cl = SWTAccessor.class.getClassLoader(); + cGTK = ReflectionUtil.getClass(str_OS_gtk_class, false, cl); Field field_OS_gtk_version; - Class<?> cGDK=c; // used for newer versions of SWT that have a org.eclipse.swt.internal.gtk.GDK object + Class<?> cGDK=cGTK; // used for newer versions of SWT that have a org.eclipse.swt.internal.gtk.GDK object try { - field_OS_gtk_version = c.getField(str_OS_gtk_version); - } catch (NoSuchFieldException ex) { - // if the GTK_VERSION field didn't exist in org.eclipse.swt.internal.gtk.OS, then look for - // it in org.eclipse.swt.internal.gtk.GTK, where it was moved in later versions of SWT - c = ReflectionUtil.getClass(str_GTK_gtk_class, false, SWTAccessor.class.getClassLoader()); - field_OS_gtk_version = c.getField(str_OS_gtk_version); - cGDK = ReflectionUtil.getClass(str_GDK_gtk_class, false, SWTAccessor.class.getClassLoader()); + field_OS_gtk_version = cGTK.getField(str_OS_gtk_version); + } catch (final NoSuchFieldException ex) { + // if the GTK_VERSION field didn't exist in org.eclipse.swt.internal.gtk.OS, then look for + // it in org.eclipse.swt.internal.gtk.GTK, where it was moved in later versions of SWT + cGTK = ReflectionUtil.getClass(str_GTK_gtk_class, false, cl); + field_OS_gtk_version = cGTK.getField(str_OS_gtk_version); + cGDK = ReflectionUtil.getClass(str_GDK_gtk_class, false, cl); } _gtk_version = GTK_VERSION(field_OS_gtk_version.getInt(null)); - m1 = c.getDeclaredMethod(str_gtk_widget_realize, handleType); + m1 = cGTK.getDeclaredMethod(str_gtk_widget_realize, handleType); if (_gtk_version.compareTo(GTK_VERSION_2_14_0) >= 0) { - m4 = c.getDeclaredMethod(str_gtk_widget_get_window, handleType); + m4 = cGTK.getDeclaredMethod(str_gtk_widget_get_window, handleType); } else { - m3 = c.getDeclaredMethod(str_GTK_WIDGET_WINDOW, handleType); + m3 = cGTK.getDeclaredMethod(str_GTK_WIDGET_WINDOW, handleType); } if (_gtk_version.compareTo(GTK_VERSION_2_24_0) >= 0) { m6 = cGDK.getDeclaredMethod(str_gdk_x11_display_get_xdisplay, handleType); m7 = cGDK.getDeclaredMethod(str_gdk_window_get_display, handleType); } else { - m5 = c.getDeclaredMethod(str_gdk_x11_drawable_get_xdisplay, handleType); + m5 = cGTK.getDeclaredMethod(str_gdk_x11_drawable_get_xdisplay, handleType); } if (_gtk_version.compareTo(GTK_VERSION_3_0_0) >= 0) { m9 = cGDK.getDeclaredMethod(str_gdk_x11_window_get_xid, handleType); } else { - m8 = c.getDeclaredMethod(str_gdk_x11_drawable_get_xid, handleType); + m8 = cGTK.getDeclaredMethod(str_gdk_x11_drawable_get_xid, handleType); } - + if (_gtk_version.compareTo(GTK_VERSION_2_90_0) >= 0) { mb = cGDK.getDeclaredMethod(str_gdk_window_set_background_pattern, handleType, handleType); } else { - ma = c.getDeclaredMethod(str_gdk_window_set_back_pixmap, handleType, handleType, boolean.class); + ma = cGTK.getDeclaredMethod(str_gdk_window_set_back_pixmap, handleType, handleType, boolean.class); } } catch (final Exception ex) { throw new NativeWindowException(ex); } // optional try { - m2 = c.getDeclaredMethod(str_gtk_widget_unrealize, handleType); + m2 = cGTK.getDeclaredMethod(str_gtk_widget_unrealize, handleType); } catch (final Exception ex) { } } - OS_gtk_class = c; + OS_gtk_class = cGTK; OS_gtk_version = _gtk_version; OS_gtk_widget_realize = m1; OS_gtk_widget_unrealize = m2; |