[cl-cairo2-cvs] r14 - tutorial

tpapp at common-lisp.net tpapp at common-lisp.net
Sat Aug 25 12:34:49 UTC 2007


Author: tpapp
Date: Sat Aug 25 08:34:48 2007
New Revision: 14

Modified:
   context.lisp
   package.lisp
   tutorial/x11-example.lisp
Log:
with-sync-lock added, x11-example.lisp fixed

Modified: context.lisp
==============================================================================
--- context.lisp	(original)
+++ context.lisp	Sat Aug 25 08:34:48 2007
@@ -67,6 +67,15 @@
 (defmethod sync-unlock ((object context)))
 (defmethod sync-reset ((object context)))
 
+(defmacro with-sync-lock ((context) &body body)
+  "Lock sync for context for the duration of body.  Protected against
+nonlocal exits."
+  (once-only (context)
+    `(progn
+       (sync-lock ,context)
+       (unwind-protect (progn , at body)
+	 (sync-unlock ,context)))))
+
 ;;;;
 ;;;; default context and convenience macros 
 ;;;;

Modified: package.lisp
==============================================================================
--- package.lisp	(original)
+++ package.lisp	Sat Aug 25 08:34:48 2007
@@ -15,8 +15,8 @@
     
     ;; context
     
-    create-context sync sync-lock sync
-    sync-unlock sync-reset *context* save restore push-group pop-group
+    create-context sync sync-lock sync sync-unlock sync-reset
+    with-sync-lock *context* save restore push-group pop-group
     pop-group-to-source set-source-rgb set-source-rgba clip
     clip-preserve reset-clip copy-page show-page fill-preserve paint
     paint-with-alpha stroke stroke-preserve set-source-color

Modified: tutorial/x11-example.lisp
==============================================================================
--- tutorial/x11-example.lisp	(original)
+++ tutorial/x11-example.lisp	Sat Aug 25 08:34:48 2007
@@ -7,11 +7,9 @@
 (in-package :cairo-xlib-example)
 
 ;; open display
-(defparameter *display* (open-x11-display ":0"))
-
 (let ((width 400)
       (height 300))
-  (setf *context* (create-x11-context width height *display*))
+  (setf *context* (create-xlib-context width height :window-name "diagonal lines"))
   ;; clear the whole canvas with blue
   (rectangle 0 0 width height)
   (set-source-rgb 0.2 0.2 0.5)
@@ -44,7 +42,7 @@
 (defparameter width 800)
 (defparameter height 600)
 (defparameter max-angle 90d0)
-(setf *context* (create-x11-context width height *display*))
+(setf *context* (create-xlib-context width height :window-name "rectangles"))
 ;; fill with white
 (rectangle 0 0 width height)
 (set-source-rgb 1 1 1)
@@ -52,9 +50,9 @@
 ;; draw the rectangles
 (dotimes (i 500)
   (let ((scaling (+ 5d0 (random 40d0))))
-    (reset-matrix)		; reset matrix
+    (reset-trans-matrix)		       ; reset matrix
     (translate (random width) (random height)) ; move the origin
-    (scale scaling scaling)			  ; scale
-    (rotate (deg-to-rad (random max-angle))) ; rotate
+    (scale scaling scaling)		       ; scale
+    (rotate (deg-to-rad (random max-angle)))   ; rotate
     (random-square (+ 0.1 (random 0.4)))))
 ;; need to close window manually



More information about the Cl-cairo2-cvs mailing list