| Index: gpu/command_buffer/service/sync_point_manager.cc
|
| diff --git a/gpu/command_buffer/service/sync_point_manager.cc b/gpu/command_buffer/service/sync_point_manager.cc
|
| index bc73adb2dacc4dd1d84b2ffcd8077e40b67f7da5..49cf6f41e50619457e216ec031482460f3b8462b 100644
|
| --- a/gpu/command_buffer/service/sync_point_manager.cc
|
| +++ b/gpu/command_buffer/service/sync_point_manager.cc
|
| @@ -282,6 +282,33 @@ SyncPointClient::SyncPointClient(SyncPointManager* sync_point_manager,
|
| namespace_id_(namespace_id),
|
| client_id_(client_id) {}
|
|
|
| +SyncPointClientWaiter::SyncPointClientWaiter() {}
|
| +
|
| +SyncPointClientWaiter::~SyncPointClientWaiter() {}
|
| +
|
| +bool SyncPointClientWaiter::Wait(SyncPointClientState* release_state,
|
| + uint64_t release_count,
|
| + const base::Closure& wait_complete_callback) {
|
| + // No order number associated with the current execution context, using
|
| + // UINT32_MAX will just assume the release is in the SyncPointClientState's
|
| + // order numbers to be executed.
|
| + if (!release_state->WaitForRelease(UINT32_MAX, release_count,
|
| + wait_complete_callback)) {
|
| + wait_complete_callback.Run();
|
| + return false;
|
| + }
|
| + return true;
|
| +}
|
| +
|
| +bool SyncPointClientWaiter::WaitNonThreadSafe(
|
| + SyncPointClientState* release_state,
|
| + uint64_t release_count,
|
| + scoped_refptr<base::SingleThreadTaskRunner> runner,
|
| + const base::Closure& wait_complete_callback) {
|
| + return Wait(release_state, release_count,
|
| + base::Bind(&RunOnThread, runner, wait_complete_callback));
|
| +}
|
| +
|
| SyncPointManager::SyncPointManager(bool allow_threaded_wait)
|
| : allow_threaded_wait_(allow_threaded_wait),
|
| // To reduce the risk that a sync point created in a previous GPU process
|
|
|