summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/llvmpipe/lp_setup.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers/llvmpipe/lp_setup.c')
-rw-r--r--src/gallium/drivers/llvmpipe/lp_setup.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_setup.c b/src/gallium/drivers/llvmpipe/lp_setup.c
index f52dce65d7..d4a4724ad1 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup.c
+++ b/src/gallium/drivers/llvmpipe/lp_setup.c
@@ -57,8 +57,11 @@ struct lp_scene *
lp_setup_get_current_scene(struct setup_context *setup)
{
if (!setup->scene) {
- /* wait for a free/empty bin */
- setup->scene = lp_scene_dequeue(setup->empty_scenes);
+
+ /* wait for a free/empty scene
+ */
+ setup->scene = lp_scene_dequeue(setup->empty_scenes, TRUE);
+
if(0)lp_scene_reset( setup->scene ); /* XXX temporary? */
lp_scene_set_framebuffer_size(setup->scene,
@@ -651,8 +654,8 @@ lp_setup_destroy( struct setup_context *setup )
pipe_buffer_reference(&setup->constants.current, NULL);
/* free the scenes in the 'empty' queue */
- while (lp_scene_queue_count(setup->empty_scenes) > 0) {
- struct lp_scene *scene = lp_scene_dequeue(setup->empty_scenes);
+ while (1) {
+ struct lp_scene *scene = lp_scene_dequeue(setup->empty_scenes, FALSE);
if (!scene)
break;
lp_scene_destroy(scene);