summaryrefslogtreecommitdiff
path: root/gnu/java/awt
diff options
context:
space:
mode:
authorRoman Kennke <roman@kennke.org>2007-04-03 13:39:38 +0000
committerRoman Kennke <roman@kennke.org>2007-04-03 13:39:38 +0000
commit3d42aa7cc04fa0fbafbb8af294daff10f71fd0db (patch)
treebb2819f68b38bf9d32322c76b56edea86e383a9a /gnu/java/awt
parent591c8432e867bb788ac85a112a1714a87ab5d078 (diff)
downloadclasspath-3d42aa7cc04fa0fbafbb8af294daff10f71fd0db.tar.gz
2007-04-03 Roman Kennke <roman@kennke.org>
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c (global_lock): New global variable that holds the object reference to the global GTK lock. (init_glib_threads): Add lock argument. Use gdk_threads_set_lock_functions to replace GTK's locking function with two callbacks that allow reentrant locking, based on JNI's MonitorEnter() and MonitorExit(). (jni_lock_cb): New callback function for GTK locking. (jni_unlock_cb): New callback function for GTK unlocking. (Java_gnu_java_awt_peer_gtk_GtkToolkit_gtkInit): Add lock argument. Call init_glib_threads() with lock object. * include/gnu_java_awt_peer_gtk_GtkToolkit.h Regenerated. * gnu/java/awt/peer/gtk/GtkToolkit.java (GTK_LOCK): New static field. This is used as the global lock for GTK. (gtkInit): Add lock parameter. (static_init): Initialize global lock and call gtkInit() with that lock.
Diffstat (limited to 'gnu/java/awt')
-rw-r--r--gnu/java/awt/peer/gtk/GtkToolkit.java9
1 files changed, 6 insertions, 3 deletions
diff --git a/gnu/java/awt/peer/gtk/GtkToolkit.java b/gnu/java/awt/peer/gtk/GtkToolkit.java
index d686336dc..1df34fb52 100644
--- a/gnu/java/awt/peer/gtk/GtkToolkit.java
+++ b/gnu/java/awt/peer/gtk/GtkToolkit.java
@@ -134,9 +134,11 @@ import javax.imageio.spi.IIORegistry;
public class GtkToolkit extends gnu.java.awt.ClasspathToolkit
{
+ static final Object GTK_LOCK;
+
private static EventQueue q;
- static native void gtkInit(int portableNativeSync);
+ static native void gtkInit(int portableNativeSync, Object lock);
static native void gtkMain();
@@ -156,8 +158,9 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit
portableNativeSync = 1; // true
else
portableNativeSync = 0; // false
-
- gtkInit(portableNativeSync);
+
+ GTK_LOCK = new String("GTK LOCK");
+ gtkInit(portableNativeSync, GTK_LOCK);
}
public GtkToolkit ()