Chromium Code Reviews| Index: gpu/ipc/service/gpu_channel.cc |
| diff --git a/gpu/ipc/service/gpu_channel.cc b/gpu/ipc/service/gpu_channel.cc |
| index 8ed788a38174e3cf06d81a61d7c6181fe5a81986..4a99a6db4b61768d87a49d4c5452f94f12d56ad1 100644 |
| --- a/gpu/ipc/service/gpu_channel.cc |
| +++ b/gpu/ipc/service/gpu_channel.cc |
| @@ -701,7 +701,11 @@ void GpuChannel::OnStreamRescheduled(int32_t stream_id, bool scheduled) { |
| } |
| GpuCommandBufferStub* GpuChannel::LookupCommandBuffer(int32_t route_id) { |
| - return stubs_.get(route_id); |
| + auto it = stubs_.find(route_id); |
| + if (it == stubs_.end()) |
| + return nullptr; |
| + |
| + return it->second.get(); |
| } |
| void GpuChannel::LoseAllContexts() { |
| @@ -772,7 +776,7 @@ void GpuChannel::HandleMessage( |
| const IPC::Message& msg = channel_msg->message; |
| int32_t routing_id = msg.routing_id(); |
| - GpuCommandBufferStub* stub = stubs_.get(routing_id); |
| + GpuCommandBufferStub* stub = LookupCommandBuffer(routing_id); |
| DCHECK(!stub || stub->IsScheduled()); |
| @@ -873,7 +877,7 @@ void GpuChannel::RemoveRouteFromStream(int32_t route_id) { |
| #if defined(OS_ANDROID) |
| const GpuCommandBufferStub* GpuChannel::GetOneStub() const { |
| for (const auto& kv : stubs_) { |
| - const GpuCommandBufferStub* stub = kv.second; |
| + const GpuCommandBufferStub* stub = kv.second.get(); |
| if (stub->decoder() && !stub->decoder()->WasContextLost()) |
| return stub; |
| } |
| @@ -896,7 +900,7 @@ void GpuChannel::OnCreateCommandBuffer( |
| if (stub) { |
| *result = true; |
| *capabilities = stub->decoder()->GetCapabilities(); |
| - stubs_.set(route_id, std::move(stub)); |
| + stubs_[route_id] = std::move(stub); |
|
Ken Russell (switch to Gerrit)
2016/12/29 05:41:15
I confirmed that forgetting the std::move here is
Avi (use Gerrit)
2016/12/29 15:18:02
Acknowledged.
|
| } else { |
| *result = false; |
| *capabilities = gpu::Capabilities(); |
| @@ -915,7 +919,7 @@ std::unique_ptr<GpuCommandBufferStub> GpuChannel::CreateCommandBuffer( |
| } |
| int32_t share_group_id = init_params.share_group_id; |
| - GpuCommandBufferStub* share_group = stubs_.get(share_group_id); |
| + GpuCommandBufferStub* share_group = LookupCommandBuffer(share_group_id); |
| if (!share_group && share_group_id != MSG_ROUTING_NONE) { |
| DLOG(ERROR) |
| @@ -977,7 +981,12 @@ void GpuChannel::OnDestroyCommandBuffer(int32_t route_id) { |
| TRACE_EVENT1("gpu", "GpuChannel::OnDestroyCommandBuffer", |
| "route_id", route_id); |
| - std::unique_ptr<GpuCommandBufferStub> stub = stubs_.take_and_erase(route_id); |
| + std::unique_ptr<GpuCommandBufferStub> stub; |
| + auto it = stubs_.find(route_id); |
| + if (it != stubs_.end()) { |
| + stub = std::move(it->second); |
| + stubs_.erase(it); |
| + } |
| // In case the renderer is currently blocked waiting for a sync reply from the |
| // stub, we need to make sure to reschedule the correct stream here. |
| if (stub && !stub->IsScheduled()) { |