Punted until Win32 can SMP.
x11graph.scm:264: (without-interrupts
+ Caller: x-graphics/close-display
x11graph.scm:344: (without-interrupts
+ Caller: process-event
x11graph.scm:449: (without-interrupts
+ Caller: x-graphics/close-window
+
+ Used the display-finalizer's mutex to serialize the callers.
display)))))
(define (x-graphics/close-display display)
- (without-interrupts
- (lambda ()
- (if (x-display/xd display)
- (begin
- (remove-all-from-gc-finalizer! (x-display/window-finalizer display))
- (remove-from-gc-finalizer! display-finalizer display))))))
+ (with-gc-finalizer-locked display-finalizer
+ (lambda ()
+ (if (x-display/xd display)
+ (without-interruption
+ (lambda ()
+ (remove-all-from-gc-finalizer! (x-display/window-finalizer
+ display))
+ (remove-from-locked-gc-finalizer! display-finalizer display)))))))
(define (x-graphics/open-display? display)
(if (x-display/xd display) #t #f))
(with-thread-events-blocked loop)))
\f
(define (process-event display event)
- (without-interrupts
+ (with-gc-finalizer-locked display-finalizer
(lambda ()
(let ((window
(search-gc-finalizer (x-display/window-finalizer display)
(if (x-graphics-device/xw device) #t #f))
(define (x-graphics/close-window device)
- (without-interrupts
+ (with-gc-finalizer-locked display-finalizer
(lambda ()
(close-x-window (graphics-device/descriptor device)))))