+ game-loop-flag)
+
+(define (process-game-elements elements)
+ (cond ((not (list? elements))
+ (process-game-elements (list elements)))
+ (else
+ (draw-meshes (filter (lambda (e) (mesh? e)) elements)))))
+
+(define (draw-meshes meshes)
+ (cond ((null? meshes) #t)
+ (else
+ (catch #t
+ (lambda () (mesh-draw (car meshes)))
+ (lambda (key . args) #f))
+ (draw-meshes (cdr meshes)))))
+
+;;; Extensions to main loop
+
+(define extensions '())
+
+(define (add-extension! proc pri)
+ "Add an extension with a priority to the main loop"
+ (set! extensions
+ (sort (assoc-set! extensions proc pri)
+ (lambda (a b)
+ (< (cdr a) (cdr b))))))