| Index: gpu/command_buffer/service/command_buffer_service.cc
 | 
| diff --git a/gpu/command_buffer/service/command_buffer_service.cc b/gpu/command_buffer/service/command_buffer_service.cc
 | 
| index ec9facb23331dd123e3ee2b831af4ed4e288293d..3e6a92c320b62c1c85c411cccfb0833bdcf6a92a 100644
 | 
| --- a/gpu/command_buffer/service/command_buffer_service.cc
 | 
| +++ b/gpu/command_buffer/service/command_buffer_service.cc
 | 
| @@ -42,24 +42,24 @@ class MemoryBufferBacking : public BufferBacking {
 | 
|  CommandBufferService::CommandBufferService(
 | 
|      TransferBufferManagerInterface* transfer_buffer_manager)
 | 
|      : ring_buffer_id_(-1),
 | 
| -      shared_state_(NULL),
 | 
| +      shared_state_(nullptr),
 | 
|        num_entries_(0),
 | 
|        get_offset_(0),
 | 
|        put_offset_(0),
 | 
|        transfer_buffer_manager_(transfer_buffer_manager),
 | 
|        token_(0),
 | 
| +      release_count_(0),
 | 
|        generation_(0),
 | 
|        error_(error::kNoError),
 | 
| -      context_lost_reason_(error::kUnknown) {
 | 
| -}
 | 
| +      context_lost_reason_(error::kUnknown) {}
 | 
|  
 | 
| -CommandBufferService::~CommandBufferService() {
 | 
| -}
 | 
| +CommandBufferService::~CommandBufferService() {}
 | 
|  
 | 
|  CommandBufferService::State CommandBufferService::GetLastState() {
 | 
|    State state;
 | 
|    state.get_offset = get_offset_;
 | 
|    state.token = token_;
 | 
| +  state.release_count = release_count_;
 | 
|    state.error = error_;
 | 
|    state.context_lost_reason = context_lost_reason_;
 | 
|    state.generation = ++generation_;
 | 
| @@ -67,10 +67,6 @@ CommandBufferService::State CommandBufferService::GetLastState() {
 | 
|    return state;
 | 
|  }
 | 
|  
 | 
| -int32_t CommandBufferService::GetLastToken() {
 | 
| -  return GetLastState().token;
 | 
| -}
 | 
| -
 | 
|  void CommandBufferService::UpdateState() {
 | 
|    if (shared_state_) {
 | 
|      CommandBufferService::State state = GetLastState();
 | 
| @@ -78,12 +74,17 @@ void CommandBufferService::UpdateState() {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -void CommandBufferService::WaitForTokenInRange(int32_t start, int32_t end) {
 | 
| +CommandBuffer::State CommandBufferService::WaitForTokenInRange(int32_t start,
 | 
| +                                                               int32_t end) {
 | 
|    DCHECK(error_ != error::kNoError || InRange(start, end, token_));
 | 
| +  return GetLastState();
 | 
|  }
 | 
|  
 | 
| -void CommandBufferService::WaitForGetOffsetInRange(int32_t start, int32_t end) {
 | 
| +CommandBuffer::State CommandBufferService::WaitForGetOffsetInRange(
 | 
| +    int32_t start,
 | 
| +    int32_t end) {
 | 
|    DCHECK(error_ != error::kNoError || InRange(start, end, get_offset_));
 | 
| +  return GetLastState();
 | 
|  }
 | 
|  
 | 
|  void CommandBufferService::Flush(int32_t put_offset) {
 | 
| @@ -136,6 +137,12 @@ void CommandBufferService::SetGetOffset(int32_t get_offset) {
 | 
|    get_offset_ = get_offset;
 | 
|  }
 | 
|  
 | 
| +void CommandBufferService::SetReleaseCount(uint64_t release_count) {
 | 
| +  DCHECK(release_count >= release_count_);
 | 
| +  release_count_ = release_count;
 | 
| +  UpdateState();
 | 
| +}
 | 
| +
 | 
|  scoped_refptr<Buffer> CommandBufferService::CreateTransferBuffer(size_t size,
 | 
|                                                                   int32_t* id) {
 | 
|    static int32_t next_id = 1;
 | 
| @@ -181,7 +188,6 @@ scoped_refptr<Buffer> CommandBufferService::CreateTransferBufferWithId(
 | 
|    return GetTransferBuffer(id);
 | 
|  }
 | 
|  
 | 
| -
 | 
|  void CommandBufferService::SetToken(int32_t token) {
 | 
|    token_ = token;
 | 
|    UpdateState();
 | 
| 
 |