Properly export gobject:disconnect-signal
[cl-gtk2.git] / gtk / gtk.main_loop_events.lisp
index a98262c..d2809bc 100644 (file)
 
 (gtk-init)
 
-(defcfun gtk-test-register-all-types :void)
+(defcfun gtk-main :void)
 
-(gtk-test-register-all-types)
+#+thread-support
+(defvar *main-thread* nil)
 
-(defcfun gtk-events-pending :boolean)
+#+thread-support
+(defun ensure-gtk-main ()
+  (when (and *main-thread* (not (bt:thread-alive-p *main-thread*)))
+    (setf *main-thread* nil))
+  (unless *main-thread*
+    (setf *main-thread* (bt:make-thread (lambda () (gtk:gtk-main)) :name "cl-gtk2 main thread"))))
 
-(defcfun gtk-main :void)
+#+thread-support
+(defun join-main-thread ()
+  (when *main-thread*
+    (bt:join-thread *main-thread*)))
 
 #+thread-support
-(defun ensure-gtk-main ()
-  (unless (find "gtk main thread" (bt:all-threads) :test 'string= :key 'bt:thread-name)
-    (bt:make-thread (lambda () (gtk:gtk-main)) :name "gtk main thread")))
+(export 'join-main-thread)
 
 #-thread-support
 (defun ensure-gtk-main ()
 
 (defcfun gtk-main-quit :void)
 
-(defcfun gtk-main-iteration :boolean)
-
-(defcfun gtk-main-iteration-do :boolean
-  (blocking :boolean))
-
 (defcfun gtk-grab-add :void
   (widget g-object))