| Index: content/common/gpu/gpu_command_buffer_stub.cc
|
| diff --git a/content/common/gpu/gpu_command_buffer_stub.cc b/content/common/gpu/gpu_command_buffer_stub.cc
|
| index 3db87eb4ac8d88e687568e011f8ab66cbc0f4809..e6260c6919c37a8d921398fac6737ede292bf0a7 100644
|
| --- a/content/common/gpu/gpu_command_buffer_stub.cc
|
| +++ b/content/common/gpu/gpu_command_buffer_stub.cc
|
| @@ -143,6 +143,15 @@ DevToolsChannelData::CreateForChannel(GpuChannel* channel) {
|
| return new DevToolsChannelData(res.release());
|
| }
|
|
|
| +void RunOnThread(scoped_refptr<base::SingleThreadTaskRunner> task_runner,
|
| + const base::Closure& callback) {
|
| + if (task_runner->BelongsToCurrentThread()) {
|
| + callback.Run();
|
| + } else {
|
| + task_runner->PostTask(FROM_HERE, callback);
|
| + }
|
| +}
|
| +
|
| } // namespace
|
|
|
| GpuCommandBufferStub::GpuCommandBufferStub(
|
| @@ -896,8 +905,10 @@ bool GpuCommandBufferStub::OnWaitSyncPoint(uint32 sync_point) {
|
| scheduler_->SetScheduled(false);
|
| ++sync_point_wait_count_;
|
| manager->sync_point_manager()->AddSyncPointCallback(
|
| - sync_point, base::Bind(&GpuCommandBufferStub::OnWaitSyncPointCompleted,
|
| - this->AsWeakPtr(), sync_point));
|
| + sync_point,
|
| + base::Bind(&RunOnThread, base::ThreadTaskRunnerHandle::Get(),
|
| + base::Bind(&GpuCommandBufferStub::OnWaitSyncPointCompleted,
|
| + this->AsWeakPtr(), sync_point)));
|
| return scheduler_->IsScheduled();
|
| }
|
|
|
| @@ -922,9 +933,9 @@ void GpuCommandBufferStub::OnSignalSyncPoint(uint32 sync_point, uint32 id) {
|
| GpuChannelManager* manager = channel_->gpu_channel_manager();
|
| manager->sync_point_manager()->AddSyncPointCallback(
|
| sync_point,
|
| - base::Bind(&GpuCommandBufferStub::OnSignalSyncPointAck,
|
| - this->AsWeakPtr(),
|
| - id));
|
| + base::Bind(&RunOnThread, base::ThreadTaskRunnerHandle::Get(),
|
| + base::Bind(&GpuCommandBufferStub::OnSignalSyncPointAck,
|
| + this->AsWeakPtr(), id)));
|
| }
|
|
|
| void GpuCommandBufferStub::OnSignalSyncPointAck(uint32 id) {
|
|
|