| Index: content/renderer/video_capture_message_filter.cc
|
| diff --git a/content/renderer/video_capture_message_filter.cc b/content/renderer/video_capture_message_filter.cc
|
| index c679e2b83e65442f91fdb6954e532b56c53b3e32..f9db7e51a30b0904cef1538053d594d346afb203 100644
|
| --- a/content/renderer/video_capture_message_filter.cc
|
| +++ b/content/renderer/video_capture_message_filter.cc
|
| @@ -54,6 +54,13 @@ void VideoCaptureMessageFilter::OnFilterAdded(IPC::Channel* channel) {
|
| // 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 @@ void VideoCaptureMessageFilter::OnDeviceInfoReceived(
|
| 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 @@ void VideoCaptureMessageFilter::RemoveDelegate(Delegate* delegate) {
|
| 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() {
|
|
|