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

Reply via email to