Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2017 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2017 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/renderer/media/webrtc/webrtc_media_stream_track_adapter_map.h" | 5 #include "content/renderer/media/webrtc/webrtc_media_stream_track_adapter_map.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "content/renderer/media/webrtc/peer_connection_dependency_factory.h" | 9 #include "content/renderer/media/webrtc/peer_connection_dependency_factory.h" |
| 10 | 10 |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 40 if (entry()->adapter->HasOneRef()) { | 40 if (entry()->adapter->HasOneRef()) { |
| 41 entry()->adapter->Dispose(); | 41 entry()->adapter->Dispose(); |
| 42 if (type_ == Type::kLocal) | 42 if (type_ == Type::kLocal) |
| 43 map_->local_track_adapters_.erase(it_); | 43 map_->local_track_adapters_.erase(it_); |
| 44 else | 44 else |
| 45 map_->remote_track_adapters_.erase(it_); | 45 map_->remote_track_adapters_.erase(it_); |
| 46 } | 46 } |
| 47 } | 47 } |
| 48 | 48 |
| 49 WebRtcMediaStreamTrackAdapterMap::WebRtcMediaStreamTrackAdapterMap( | 49 WebRtcMediaStreamTrackAdapterMap::WebRtcMediaStreamTrackAdapterMap( |
| 50 PeerConnectionDependencyFactory* const factory, | 50 PeerConnectionDependencyFactory* const factory) |
| 51 const scoped_refptr<base::SingleThreadTaskRunner>& main_thread) | 51 : factory_(factory), main_thread_(base::ThreadTaskRunnerHandle::Get()) { |
|
Guido Urdaneta
2017/06/12 14:25:29
How do you know this is the main thread?
Shouldn't
hbos_chromium
2017/06/12 15:05:21
It has to be the main thread since it is used by W
Guido Urdaneta
2017/06/12 15:18:35
It's fine this way then. Just add a comment saying
| |
| 52 : factory_(factory), main_thread_(main_thread) { | |
| 53 DCHECK(factory_); | 52 DCHECK(factory_); |
| 54 DCHECK(main_thread_); | 53 DCHECK(main_thread_); |
| 55 } | 54 } |
| 56 | 55 |
| 57 WebRtcMediaStreamTrackAdapterMap::~WebRtcMediaStreamTrackAdapterMap() { | 56 WebRtcMediaStreamTrackAdapterMap::~WebRtcMediaStreamTrackAdapterMap() { |
| 58 DCHECK(local_track_adapters_.empty()); | 57 DCHECK(local_track_adapters_.empty()); |
| 59 DCHECK(remote_track_adapters_.empty()); | 58 DCHECK(remote_track_adapters_.empty()); |
| 60 } | 59 } |
| 61 | 60 |
| 62 std::unique_ptr<WebRtcMediaStreamTrackAdapterMap::AdapterRef> | 61 std::unique_ptr<WebRtcMediaStreamTrackAdapterMap::AdapterRef> |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 83 | 82 |
| 84 std::unique_ptr<WebRtcMediaStreamTrackAdapterMap::AdapterRef> | 83 std::unique_ptr<WebRtcMediaStreamTrackAdapterMap::AdapterRef> |
| 85 WebRtcMediaStreamTrackAdapterMap::GetRemoteTrackAdapter(const std::string& id) { | 84 WebRtcMediaStreamTrackAdapterMap::GetRemoteTrackAdapter(const std::string& id) { |
| 86 return GetTrackAdapter(AdapterRef::Type::kRemote, id); | 85 return GetTrackAdapter(AdapterRef::Type::kRemote, id); |
| 87 } | 86 } |
| 88 | 87 |
| 89 std::unique_ptr<WebRtcMediaStreamTrackAdapterMap::AdapterRef> | 88 std::unique_ptr<WebRtcMediaStreamTrackAdapterMap::AdapterRef> |
| 90 WebRtcMediaStreamTrackAdapterMap::GetOrCreateRemoteTrackAdapter( | 89 WebRtcMediaStreamTrackAdapterMap::GetOrCreateRemoteTrackAdapter( |
| 91 webrtc::MediaStreamTrackInterface* webrtc_track) { | 90 webrtc::MediaStreamTrackInterface* webrtc_track) { |
| 92 DCHECK(webrtc_track); | 91 DCHECK(webrtc_track); |
| 93 DCHECK(factory_->GetWebRtcSignalingThread()->BelongsToCurrentThread()); | 92 DCHECK(!main_thread_->BelongsToCurrentThread()); |
| 94 return GetOrCreateTrackAdapter( | 93 return GetOrCreateTrackAdapter( |
|
Guido Urdaneta
2017/06/12 14:25:29
What happens if there are concurrent calls to this
hbos_chromium
2017/06/12 15:05:21
This is thread safe thanks to use of lock_.
hbos_chromium
2017/06/12 15:07:51
But the WebRtcMediaStreamTrackAdapter needs this t
Guido Urdaneta
2017/06/12 15:18:35
Acknowledged.
| |
| 95 AdapterRef::Type::kRemote, | 94 AdapterRef::Type::kRemote, |
| 96 base::Bind(&WebRtcMediaStreamTrackAdapter::CreateRemoteTrackAdapter, | 95 base::Bind(&WebRtcMediaStreamTrackAdapter::CreateRemoteTrackAdapter, |
| 97 factory_, main_thread_, webrtc_track), | 96 factory_, main_thread_, webrtc_track), |
| 98 webrtc_track->id()); | 97 webrtc_track->id()); |
| 99 } | 98 } |
| 100 | 99 |
| 101 size_t WebRtcMediaStreamTrackAdapterMap::GetRemoteTrackCount() const { | 100 size_t WebRtcMediaStreamTrackAdapterMap::GetRemoteTrackCount() const { |
| 102 base::AutoLock scoped_lock(lock_); | 101 base::AutoLock scoped_lock(lock_); |
| 103 return remote_track_adapters_.size(); | 102 return remote_track_adapters_.size(); |
| 104 } | 103 } |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 131 if (it == track_adapters->end()) { | 130 if (it == track_adapters->end()) { |
| 132 scoped_refptr<WebRtcMediaStreamTrackAdapter> adapter = | 131 scoped_refptr<WebRtcMediaStreamTrackAdapter> adapter = |
| 133 create_adapter_callback.Run(); | 132 create_adapter_callback.Run(); |
| 134 it = | 133 it = |
| 135 track_adapters->insert(std::make_pair(id, AdapterEntry(adapter))).first; | 134 track_adapters->insert(std::make_pair(id, AdapterEntry(adapter))).first; |
| 136 } | 135 } |
| 137 return base::WrapUnique(new AdapterRef(this, type, it)); | 136 return base::WrapUnique(new AdapterRef(this, type, it)); |
| 138 } | 137 } |
| 139 | 138 |
| 140 } // namespace content | 139 } // namespace content |
| OLD | NEW |