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

Unified Diff: content/renderer/video_capture_message_filter.cc

Issue 6902166: Add VideoCaptureImpl (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: use correct gyp files Created 9 years, 7 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
Index: content/renderer/video_capture_message_filter.cc
===================================================================
--- content/renderer/video_capture_message_filter.cc (revision 85463)
+++ content/renderer/video_capture_message_filter.cc (working copy)
@@ -54,6 +54,13 @@
// Captures the message loop proxy for IPC.
message_loop_proxy_ = base::MessageLoopProxy::CreateForCurrentThread();
channel_ = channel;
+
+ for (Delegates::iterator it = pending_delegates_.begin();
+ it != pending_delegates_.end(); it++) {
+ it->second->OnDelegateAdded(it->first);
+ delegates_[it->first] = it->second;
+ }
+ pending_delegates_.clear();
}
void VideoCaptureMessageFilter::OnFilterRemoved() {
@@ -114,14 +121,18 @@
delegate->OnDeviceInfoReceived(params);
}
-int32 VideoCaptureMessageFilter::AddDelegate(Delegate* delegate) {
+void VideoCaptureMessageFilter::AddDelegate(Delegate* delegate) {
if (++last_device_id_ <= 0)
last_device_id_ = 1;
while (delegates_.find(last_device_id_) != delegates_.end())
last_device_id_++;
- delegates_[last_device_id_] = delegate;
- return last_device_id_;
+ if (channel_) {
+ delegates_[last_device_id_] = delegate;
+ delegate->OnDelegateAdded(last_device_id_);
+ } else {
+ pending_delegates_[last_device_id_] = delegate;
+ }
}
void VideoCaptureMessageFilter::RemoveDelegate(Delegate* delegate) {
@@ -132,6 +143,13 @@
break;
}
}
+ for (Delegates::iterator it = pending_delegates_.begin();
+ it != pending_delegates_.end(); it++) {
+ if (it->second == delegate) {
+ pending_delegates_.erase(it);
+ break;
+ }
+ }
}
void VideoCaptureMessageFilter::AddFilter() {
« no previous file with comments | « content/renderer/video_capture_message_filter.h ('k') | content/renderer/video_capture_message_filter_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698