summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2013-01-21 15:48:55 +0100
committerMarek Olšák <[email protected]>2013-01-24 18:22:14 +0100
commitfffe3e090878175269af8672d20c14a0ccab78a9 (patch)
treee91ab971c4ac55297ce59cf13a4d97ee1bf20d5f
parent0261b4ecdb80973b3a00cbe6a9a77c6085ef3dff (diff)
st/dri: add null-pointer check, remove duplicated local variable
Reviewed-by: Michel Dänzer <[email protected]> Tested-by: Michel Dänzer <[email protected]>
-rw-r--r--src/gallium/state_trackers/dri/common/dri_drawable.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/gallium/state_trackers/dri/common/dri_drawable.c b/src/gallium/state_trackers/dri/common/dri_drawable.c
index 2ea54781d17..d817a8c2178 100644
--- a/src/gallium/state_trackers/dri/common/dri_drawable.c
+++ b/src/gallium/state_trackers/dri/common/dri_drawable.c
@@ -446,6 +446,7 @@ dri_flush(__DRIcontext *cPriv,
/* Flush the context and throttle if needed. */
if (dri_screen(ctx->sPriv)->throttling_enabled &&
+ drawable &&
(reason == __DRI2_THROTTLE_SWAPBUFFER ||
reason == __DRI2_THROTTLE_FLUSHFRONT)) {
/* Throttle.
@@ -458,19 +459,19 @@ dri_flush(__DRIcontext *cPriv,
* pushes that fence on the queue. This requires that the st_context_iface
* flush method returns a fence even if there are no commands to flush.
*/
- struct dri_drawable *draw = dri_drawable(dPriv);
- struct pipe_screen *screen = draw->screen->base.screen;
+ struct pipe_screen *screen = drawable->screen->base.screen;
struct pipe_fence_handle *fence;
- fence = swap_fences_pop_front(draw);
+ fence = swap_fences_pop_front(drawable);
if (fence) {
(void) screen->fence_finish(screen, fence, PIPE_TIMEOUT_INFINITE);
screen->fence_reference(screen, &fence, NULL);
}
ctx->st->flush(ctx->st, flush_flags, &fence);
+
if (fence) {
- swap_fences_push_back(draw, fence);
+ swap_fences_push_back(drawable, fence);
screen->fence_reference(screen, &fence, NULL);
}
}