chiark / gitweb /
Added new macro EXPORT-FROM-SYSTEM
[clg] / gdk / gdk.lisp
index a02267e96591cb2c576a38f3c3262bd598375d7c..d44cbfd8d23962c774ec7ee808cc7b4bf2a8d05e 100644 (file)
@@ -20,7 +20,7 @@
 ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
-;; $Id: gdk.lisp,v 1.45 2007-10-17 18:04:47 espen Exp $
+;; $Id: gdk.lisp,v 1.48 2008-01-02 15:26:46 espen Exp $
 
 
 (in-package "GDK")
@@ -999,22 +999,20 @@ (defbinding draw-arc () nil
 
 (defbinding %draw-layout () nil
   (drawable drawable) (gc gc) 
-  (font pango:font)
   (x int) (y int)
   (layout pango:layout))
 
 (defbinding %draw-layout-with-colors () nil
   (drawable drawable) (gc gc) 
-  (font pango:font)
   (x int) (y int)
   (layout pango:layout)
   (foreground (or null color))
   (background (or null color)))
 
-(defun draw-layout (drawable gc font x y layout &optional foreground background)
+(defun draw-layout (drawable gc x y layout &optional foreground background)
   (if (or foreground background)
-      (%draw-layout-with-colors drawable gc font x y layout foreground background)
-    (%draw-layout drawable gc font x y layout)))
+      (%draw-layout-with-colors drawable gc x y layout foreground background)
+    (%draw-layout drawable gc x y layout)))
 
 (defbinding draw-drawable 
     (drawable gc src src-x src-y dest-x dest-y &optional width height) nil
@@ -1049,7 +1047,7 @@ (defbinding drawable-copy-to-image
 
 ;;; Key values
 
-(defbinding keyval-name () string
+(defbinding keyval-name () (static string)
   (keyval unsigned-int))
 
 (defbinding %keyval-from-name () unsigned-int
@@ -1122,25 +1120,26 @@   (defbinding (cairo-surface-get-window "clg_gdk_cairo_surface_get_window") () w
 #+sb-thread
 (progn
   (defvar *global-lock* nil)
+  (defvar *recursion-count* 0)
 
   (defun %global-lock-p ()
-    (eq (car (sb-thread:mutex-value *global-lock*)) sb-thread:*current-thread*))
+    (eq (sb-thread:mutex-value *global-lock*) sb-thread:*current-thread*))
 
   (defun threads-enter ()
     (when *global-lock*
       (if (%global-lock-p)
-         (incf (cdr (sb-thread:mutex-value *global-lock*)))
-       (sb-thread:get-mutex *global-lock* (cons sb-thread:*current-thread* 0)))))
+         (incf *recursion-count*)
+        (sb-thread:get-mutex *global-lock*))))
     
   (defun threads-leave (&optional flush-p)
     (when *global-lock*
       (assert (%global-lock-p))
       (cond
-       ((zerop (cdr (sb-thread:mutex-value *global-lock*)))
+       ((zerop *recursion-count*)
        (when flush-p
          (flush))
        (sb-thread:release-mutex *global-lock*))
-       (t (decf (cdr (sb-thread:mutex-value *global-lock*)))))))
+       (t (decf *recursion-count*)))))
 
   (define-callback %enter-fn nil ()
     (threads-enter))
@@ -1148,7 +1147,7 @@   (define-callback %enter-fn nil ()
   (define-callback %leave-fn nil ()
     (threads-leave))
   
-  (defbinding %threads-set-lock-functions (&optional) nil
+  (defbinding %threads-set-lock-functions (nil) nil
     (%enter-fn callback)
     (%leave-fn callback))