From: Axel Davy <[email protected]>
Cc: "10.4" <[email protected]>
Tested-by: David Heidelberg <[email protected]>
Signed-off-by: Axel Davy <[email protected]>
---
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
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev