From: Axel Davy <axel.d...@ens.fr> Cc: "10.4" <mesa-sta...@lists.freedesktop.org> Tested-by: David Heidelberg <da...@ixit.cz> Signed-off-by: Axel Davy <axel.d...@ens.fr> --- src/gallium/state_trackers/nine/query9.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/src/gallium/state_trackers/nine/query9.c b/src/gallium/state_trackers/nine/query9.c index e44eb11..761f02e 100644 --- a/src/gallium/state_trackers/nine/query9.c +++ b/src/gallium/state_trackers/nine/query9.c @@ -196,7 +196,7 @@ NineQuery9_GetData( struct NineQuery9 *This, DWORD dwGetDataFlags ) { struct pipe_context *pipe = This->base.device->pipe; - boolean ok; + boolean ok, flush_if_needed; unsigned i; union pipe_query_result presult; union nine_query_result nresult; @@ -212,16 +212,18 @@ NineQuery9_GetData( struct NineQuery9 *This, if (This->state == NINE_QUERY_STATE_FRESH) return S_OK; + flush_if_needed = dwGetDataFlags && + This->state != NINE_QUERY_STATE_FLUSHED; + ok = pipe->get_query_result(pipe, This->pq, FALSE, &presult); - if (!ok) { - if (dwGetDataFlags) { - if (This->state != NINE_QUERY_STATE_FLUSHED) - pipe->flush(pipe, NULL, 0); - This->state = NINE_QUERY_STATE_FLUSHED; - } - return S_FALSE; + if (!ok && flush_if_needed) { + pipe->flush(pipe, NULL, 0); + ok = pipe->get_query_result(pipe, This->pq, FALSE, &presult); + This->state = NINE_QUERY_STATE_FLUSHED; } + if (!ok) return S_FALSE; + if (!dwSize) return S_OK; -- 2.1.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev