(defcfun gdk-threads-leave :void)
(export 'gdk-threads-leave)
+(defmacro with-gdk-threads-lock (&body body)
+ `(progn
+ (gdk-threads-enter)
+ (unwind-protect
+ (progn ,@body)
+ (gdk-threads-leave))))
+(export 'with-gdk-threads-lock)
+
;; ignored:
;; void gdk_threads_set_lock_functions (GCallback enter_fn,
;; GCallback leave_fn);
(at-init () (gtk-init))
-(defcfun gtk-main :void)
+(defcfun (%gtk-main "gtk_main") :void)
+
+#+thread-support
+(defun gtk-main ()
+ (with-gdk-threads-lock (%gtk-main)))
+
+#-thread-support
+(defun gtk-main ()
+ (%gtk-main))
#+thread-support
(defvar *main-thread* nil)