41 lines
1.1 KiB
Racket
41 lines
1.1 KiB
Racket
#lang racket
|
|
|
|
(require racket-upnp)
|
|
|
|
(provide check-dlna-players)
|
|
|
|
(define running-sem (make-semaphore 1))
|
|
(define running #f)
|
|
|
|
(define (check-dlna-players gui)
|
|
(let ((can-check (begin
|
|
(semaphore-wait running-sem)
|
|
(let ((rng running))
|
|
(if rng
|
|
(begin
|
|
(semaphore-post running-sem)
|
|
#f)
|
|
(begin
|
|
(set! running #t)
|
|
(semaphore-post running-sem)
|
|
#t))))))
|
|
(if can-check
|
|
(void
|
|
(thread
|
|
(λ ()
|
|
(let ((r (query-media-renderers)))
|
|
(let ((r* (map (λ (r)
|
|
(list (media-renderer-name r)
|
|
r))
|
|
r)))
|
|
(send gui set-dlna-renderers! r*)
|
|
(semaphore-wait running-sem)
|
|
(set! running #f)
|
|
(semaphore-post running-sem)
|
|
)))))
|
|
(void
|
|
(send gui dlna-query-busy))
|
|
)
|
|
)
|
|
)
|