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 c0cf2150bcdd69d23d04b73376b6682ec6abcc49..550c17433f05f26415d07ccc53718e2c66d05563 100644 |
--- a/content/common/gpu/gpu_command_buffer_stub.cc |
+++ b/content/common/gpu/gpu_command_buffer_stub.cc |
@@ -161,8 +161,7 @@ bool GpuCommandBufferStub::OnMessageReceived(const IPC::Message& message) { |
// Echo, RetireSyncPoint, or WaitSyncPoint). |
if (decoder_.get() && |
message.type() != GpuCommandBufferMsg_Echo::ID && |
- message.type() != GpuCommandBufferMsg_RetireSyncPoint::ID && |
- message.type() != GpuCommandBufferMsg_WaitSyncPoint::ID) { |
+ message.type() != GpuCommandBufferMsg_RetireSyncPoint::ID) { |
if (!MakeCurrent()) |
return false; |
} |
@@ -201,8 +200,6 @@ bool GpuCommandBufferStub::OnMessageReceived(const IPC::Message& message) { |
OnEnsureBackbuffer) |
IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_RetireSyncPoint, |
OnRetireSyncPoint) |
- IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_WaitSyncPoint, |
- OnWaitSyncPoint) |
IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_SignalSyncPoint, |
OnSignalSyncPoint) |
IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_SendClientManagedMemoryStats, |
@@ -225,8 +222,7 @@ bool GpuCommandBufferStub::Send(IPC::Message* message) { |
} |
bool GpuCommandBufferStub::IsScheduled() { |
- return sync_point_wait_count_ == 0 && |
- (!scheduler_.get() || scheduler_->IsScheduled()); |
+ return (!scheduler_.get() || scheduler_->IsScheduled()); |
} |
bool GpuCommandBufferStub::HasMoreWork() { |
@@ -478,6 +474,9 @@ void GpuCommandBufferStub::OnInitialize( |
decoder_->SetMsgCallback( |
base::Bind(&GpuCommandBufferStub::SendConsoleMessage, |
base::Unretained(this))); |
+ decoder_->SetWaitSyncPointCallback( |
+ base::Bind(&GpuCommandBufferStub::OnWaitSyncPoint, |
+ base::Unretained(this))); |
command_buffer_->SetPutOffsetChangeCallback( |
base::Bind(&GpuCommandBufferStub::PutChanged, base::Unretained(this))); |
@@ -758,17 +757,19 @@ void GpuCommandBufferStub::OnRetireSyncPoint(uint32 sync_point) { |
manager->sync_point_manager()->RetireSyncPoint(sync_point); |
} |
-void GpuCommandBufferStub::OnWaitSyncPoint(uint32 sync_point) { |
+bool GpuCommandBufferStub::OnWaitSyncPoint(uint32 sync_point) { |
if (sync_point_wait_count_ == 0) { |
TRACE_EVENT_ASYNC_BEGIN1("gpu", "WaitSyncPoint", this, |
"GpuCommandBufferStub", this); |
} |
+ scheduler_->SetScheduled(false); |
++sync_point_wait_count_; |
GpuChannelManager* manager = channel_->gpu_channel_manager(); |
manager->sync_point_manager()->AddSyncPointCallback( |
sync_point, |
base::Bind(&GpuCommandBufferStub::OnSyncPointRetired, |
this->AsWeakPtr())); |
+ return scheduler_->IsScheduled(); |
} |
void GpuCommandBufferStub::OnSyncPointRetired() { |
@@ -777,7 +778,7 @@ void GpuCommandBufferStub::OnSyncPointRetired() { |
TRACE_EVENT_ASYNC_END1("gpu", "WaitSyncPoint", this, |
"GpuCommandBufferStub", this); |
} |
- OnReschedule(); |
+ scheduler_->SetScheduled(true); |
} |
void GpuCommandBufferStub::OnSignalSyncPoint(uint32 sync_point, uint32 id) { |