- struct r300_screen* r300screen = r300->screen;
- struct r300_query *q = (struct r300_query*)query;
- struct pipe_transfer *transfer;
- unsigned flags = PIPE_TRANSFER_READ;
- uint32_t* map;
- uint32_t temp = 0;
- unsigned i, num_results;
-
- if (q->flushed == FALSE)
- pipe->flush(pipe, 0, NULL);
- if (!wait) {
- flags |= PIPE_TRANSFER_DONTBLOCK;
+ struct r300_query *q = r300_query(query);
+ unsigned i;
+ uint32_t temp, *map;
+
+ if (q->type == PIPE_QUERY_GPU_FINISHED) {
+ if (wait) {
+ r300->rws->buffer_wait(q->buf, PIPE_TIMEOUT_INFINITE,
+ RADEON_USAGE_READWRITE);
+ vresult->b = TRUE;
+ } else {
+ vresult->b = r300->rws->buffer_wait(q->buf, 0, RADEON_USAGE_READWRITE);
+ }
+ return vresult->b;