(in-package :cube-modeller) ;;; this is from beirc (mgr, 20060912) ;;; Here comes the trick: ;;; Although I would pretty much prefer an implementation of CLIM ;;; which is thread safe, I figure we better go through the central ;;; event loop. We define a new event class, subclass of ;;; WINDOW-MANAGER-EVENT, and whenever we want to update the display ;;; we send it to the frame. (defclass redisplay-event (clim:window-manager-event) ((sheet :initarg :sheet :reader event-sheet) (pane :initarg :pane :reader event-pane))) (defun processes-supported-p () (processp (current-process))) (defun queue-toolbox-event (frame event) (if (processes-supported-p) (queue-event (frame-top-level-sheet frame) event) (handle-event frame event)))