Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1104)

Unified Diff: media/gpu/ipc/service/media_gpu_channel_manager.cc

Issue 2526953003: Add MediaGpuChannelManager::LookupChannel(). (Closed)
Patch Set: Implement MockGpuVideoAcceleratorFactories::GetCommandBufferRouteId(). Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/gpu/ipc/service/media_gpu_channel_manager.h ('k') | media/mojo/clients/mojo_video_decoder.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/gpu/ipc/service/media_gpu_channel_manager.cc
diff --git a/media/gpu/ipc/service/media_gpu_channel_manager.cc b/media/gpu/ipc/service/media_gpu_channel_manager.cc
index 684c05afc54282f0c7efe5c96a835fac1ac9a05f..0a7e7c812e94c80a16e861c9743cfbea256743a9 100644
--- a/media/gpu/ipc/service/media_gpu_channel_manager.cc
+++ b/media/gpu/ipc/service/media_gpu_channel_manager.cc
@@ -26,18 +26,36 @@ MediaGpuChannelManager::~MediaGpuChannelManager() {}
void MediaGpuChannelManager::AddChannel(int32_t client_id) {
gpu::GpuChannel* gpu_channel = channel_manager_->LookupChannel(client_id);
DCHECK(gpu_channel);
+ base::UnguessableToken channel_token = base::UnguessableToken::Create();
std::unique_ptr<MediaGpuChannel> media_gpu_channel(
- new MediaGpuChannel(gpu_channel));
+ new MediaGpuChannel(gpu_channel, channel_token));
gpu_channel->SetUnhandledMessageListener(media_gpu_channel.get());
media_gpu_channels_[client_id] = std::move(media_gpu_channel);
+ channel_to_token_[client_id] = channel_token;
+ token_to_channel_[channel_token] = client_id;
}
void MediaGpuChannelManager::RemoveChannel(int32_t client_id) {
media_gpu_channels_.erase(client_id);
+ const auto it = channel_to_token_.find(client_id);
+ if (it != channel_to_token_.end()) {
+ token_to_channel_.erase(it->second);
+ channel_to_token_.erase(it);
+ }
}
void MediaGpuChannelManager::DestroyAllChannels() {
media_gpu_channels_.clear();
+ token_to_channel_.clear();
+ channel_to_token_.clear();
+}
+
+gpu::GpuChannel* MediaGpuChannelManager::LookupChannel(
+ const base::UnguessableToken& channel_token) {
+ const auto it = token_to_channel_.find(channel_token);
+ if (it == token_to_channel_.end())
+ return nullptr;
+ return channel_manager_->LookupChannel(it->second);
}
} // namespace media
« no previous file with comments | « media/gpu/ipc/service/media_gpu_channel_manager.h ('k') | media/mojo/clients/mojo_video_decoder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698