From ffa8ea5542404b7f80d6ac669605e0ab6f0c8a9b Mon Sep 17 00:00:00 2001 From: David Thompson Date: Wed, 11 Jan 2017 21:48:00 -0500 Subject: render: sprite: Don't reset batch if batching is already active. * chickadee/render/sprite.scm (with-batched-sprites): Test if *batch?* is false before resetting state. --- chickadee/render/sprite.scm | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/chickadee/render/sprite.scm b/chickadee/render/sprite.scm index 11b8724..7e87494 100644 --- a/chickadee/render/sprite.scm +++ b/chickadee/render/sprite.scm @@ -263,15 +263,17 @@ void main (void) { texture-rect)) (define-syntax-rule (with-batched-sprites body ...) - (dynamic-wind - (lambda () - (set! *batch?* #t)) - (lambda () - (sprite-batch-reset! (force %batch)) - body ... - (sprite-batch-flush! (force %batch))) - (lambda () - (set! *batch?* #f)))) + (if *batch?* + (begin body ...) + (dynamic-wind + (lambda () + (set! *batch?* #t)) + (lambda () + (sprite-batch-reset! (force %batch)) + body ... + (sprite-batch-flush! (force %batch))) + (lambda () + (set! *batch?* #f))))) (define draw-sprite (let ((rect (make-rect 0.0 0.0 0.0 0.0)) -- cgit v1.2.3