[cells-cvs] CVS Celtk

ktilton ktilton at common-lisp.net
Mon Jul 24 05:04:01 UTC 2006


Update of /project/cells/cvsroot/Celtk
In directory clnet:/tmp/cvs-serv25756

Modified Files:
	CELTK.lpr timer.lisp togl.lisp 
Log Message:
Not really changed for the most part.

--- /project/cells/cvsroot/Celtk/CELTK.lpr	2006/06/29 09:54:52	1.17
+++ /project/cells/cvsroot/Celtk/CELTK.lpr	2006/07/24 05:04:01	1.18
@@ -1,4 +1,4 @@
-;; -*- lisp-version: "8.0 [Windows] (Jun 28, 2006 10:53)"; cg: "1.81"; -*-
+;; -*- lisp-version: "8.0 [Windows] (Jul 19, 2006 19:38)"; cg: "1.81"; -*-
 
 (in-package :cg-user)
 
--- /project/cells/cvsroot/Celtk/timer.lisp	2006/07/06 22:10:40	1.9
+++ /project/cells/cvsroot/Celtk/timer.lisp	2006/07/24 05:04:01	1.10
@@ -79,8 +79,8 @@
                      (funcall (^action) self)
                      (setf (^executed) t))))
    (after-factory :reader after-factory
-     :initform (c? (bwhen (rpt (eko (nil ">>> repeat") (when (eq (^state) :on)
-                               (^repeat))))
+     :initform (c? (bwhen (rpt (when (eq (^state) :on)
+                               (^repeat)))
                    (when (or (zerop (^executions)) (^executed)) ;; dispatch initially or after an execution
                      (when (zerop (^executions))
                        (setf (elapsed self) (now)))
@@ -90,19 +90,23 @@
                        (with-integrity (:client `(:fini ,self)) ;; just guessing as to when, not sure it matters
                          (set-timer self (^delay))))))))))
 
+(defobserver state ((self timer))
+  (unless (eq new-value :on)
+    (trc "bingo!!!!!!!!!!!!!!!!!!!!! state takes out timer" self)
+    (cancel-timer self)))
+
 (defun set-timer (self time)
   (let ((callback-id (symbol-name (gentemp "AFTER"))))
     (setf (gethash callback-id (dictionary *tkw*)) self)
     (setf (cancel-id self) (tk-eval "after ~a {do-on-command ~a}" time callback-id))))
 
 (defun cancel-timer (timer)
-  (setf (state timer) :off)
   (when (cancel-id timer)
-      (tk-format-now "after cancel ~a" (cancel-id timer)))) ;; Tk doc says OK if cancelling already executed
+    (tk-format-now "after cancel ~a" (cancel-id timer)))) ;; Tk doc says OK if cancelling already executed
 
 (defobserver timers ((self tk-object) new-value old-value)
   (dolist (k (set-difference old-value new-value))
-    (cancel-timer k)))
+    (setf (state k) :off))) ;; actually could be anything but :on
 
 
     
\ No newline at end of file
--- /project/cells/cvsroot/Celtk/togl.lisp	2006/07/06 22:10:40	1.14
+++ /project/cells/cvsroot/Celtk/togl.lisp	2006/07/24 05:04:01	1.15
@@ -167,11 +167,14 @@
          (callback :pointer))
        (defcallback ,(intern cb$) :void ((,ptr-var :pointer))
          (unless (c-stopped)
-           (let ((,self-var (or (gethash (pointer-address ,ptr-var) (tkwins *tkw*))
-                              (gethash (togl-ident ,ptr-var)(dictionary *tkw*)))))
-             , at preamble
-             (trc nil "selves" ,cb$ (togl-ident ,ptr-var) (gethash (pointer-address ,ptr-var) (tkwins *tkw*))(gethash (togl-ident ,ptr-var)(dictionary *tkw*)))
-             (,(intern uc$) ,self-var))))
+           (bif (,self-var (or (gethash (pointer-address ,ptr-var) (tkwins *tkw*))
+                             (gethash (togl-ident ,ptr-var)(dictionary *tkw*))))
+             (progn
+               , at preamble
+               (trc nil "selves" ,cb$ (togl-ident ,ptr-var) (gethash (pointer-address ,ptr-var) (tkwins *tkw*))(gethash (togl-ident ,ptr-var)(dictionary *tkw*)))
+               (,(intern uc$) ,self-var))
+             (trc "WARNING: Togl callback ~a sees unknown togl pointer ~a :address ~a :ident ~a"
+               ,cb$ ,ptr-var (pointer-address ,ptr-var) (togl-ident ,ptr-var)))))
        (defmethod ,(intern uc$) :around ((self togl))
          (if (,(intern cb-slot$) self)
                (funcall (,(intern cb-slot$) self) self)




More information about the Cells-cvs mailing list