Index: components/mus/gles2/command_buffer_local.cc |
diff --git a/components/mus/gles2/command_buffer_local.cc b/components/mus/gles2/command_buffer_local.cc |
index 0615e7643bc5c67deafa62cb3cc5a28eee178840..9d2deab8c8e17c06e1a514e7ce39236e420cfa3d 100644 |
--- a/components/mus/gles2/command_buffer_local.cc |
+++ b/components/mus/gles2/command_buffer_local.cc |
@@ -62,6 +62,10 @@ bool CreateMapAndDupSharedBuffer(size_t size, |
return true; |
} |
+void PostTask(const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
+ const base::Closure& callback) { |
+ task_runner->PostTask(FROM_HERE, callback); |
+} |
} |
const unsigned int GL_READ_WRITE_CHROMIUM = 0x78F2; |
@@ -308,11 +312,13 @@ void CommandBufferLocal::SignalSyncPoint(uint32_t sync_point, |
NOTREACHED(); |
} |
-void CommandBufferLocal::SignalQuery(uint32_t query, |
+void CommandBufferLocal::SignalQuery(uint32_t query_id, |
const base::Closure& callback) { |
DCHECK(CalledOnValidThread()); |
- // TODO(piman) |
- NOTIMPLEMENTED(); |
+ |
+ gpu_state_->command_buffer_task_runner()->PostTask( |
+ driver_.get(), base::Bind(&CommandBufferLocal::SignalQueryOnGpuThread, |
+ base::Unretained(this), query_id, callback)); |
} |
void CommandBufferLocal::SetLock(base::Lock* lock) { |
@@ -524,6 +530,14 @@ bool CommandBufferLocal::DeleteOnGpuThread() { |
return true; |
} |
+bool CommandBufferLocal::SignalQueryOnGpuThread(uint32_t query_id, |
+ const base::Closure& callback) { |
+ // |callback| should run on the client thread. |
+ driver_->SignalQuery( |
+ query_id, base::Bind(&PostTask, client_thread_task_runner_, callback)); |
+ return true; |
+} |
+ |
void CommandBufferLocal::DidLoseContextOnClientThread(uint32_t reason) { |
if (client_) |
client_->DidLoseContext(); |