Index: content/renderer/media/media_stream_video_capturer_source.cc |
diff --git a/content/renderer/media/media_stream_video_capturer_source.cc b/content/renderer/media/media_stream_video_capturer_source.cc |
index 7dcd92e3739cf489ae30fc508834d41693bf74f5..cbb706d498050cf74dd7b9fd00457dbe840e3a2c 100644 |
--- a/content/renderer/media/media_stream_video_capturer_source.cc |
+++ b/content/renderer/media/media_stream_video_capturer_source.cc |
@@ -41,7 +41,8 @@ VideoCapturerDelegate::VideoCapturerDelegate( |
const StreamDeviceInfo& device_info) |
: session_id_(device_info.session_id), |
is_screen_cast_(device_info.device.type == MEDIA_TAB_VIDEO_CAPTURE || |
- device_info.device.type == MEDIA_DESKTOP_VIDEO_CAPTURE) { |
+ device_info.device.type == MEDIA_DESKTOP_VIDEO_CAPTURE), |
+ weak_factory_(this) { |
DVLOG(3) << "VideoCapturerDelegate::ctor"; |
// NULL in unit test. |
@@ -54,6 +55,7 @@ VideoCapturerDelegate::VideoCapturerDelegate( |
} |
VideoCapturerDelegate::~VideoCapturerDelegate() { |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
DVLOG(3) << "VideoCapturerDelegate::dtor"; |
if (!release_device_cb_.is_null()) |
release_device_cb_.Run(); |
@@ -92,11 +94,13 @@ void VideoCapturerDelegate::GetCurrentSupportedFormats( |
return; |
DCHECK(source_formats_callback_.is_null()); |
source_formats_callback_ = callback; |
+ |
magjed_chromium
2015/01/09 11:15:53
Is this new empty line on purpose?
perkj_chrome
2015/01/09 11:43:59
Done.
|
manager->GetDeviceFormatsInUse( |
session_id_, |
media::BindToCurrentLoop( |
base::Bind( |
- &VideoCapturerDelegate::OnDeviceFormatsInUseReceived, this))); |
+ &VideoCapturerDelegate::OnDeviceFormatsInUseReceived, |
+ weak_factory_.GetWeakPtr()))); |
} |
void VideoCapturerDelegate::StartCapture( |
@@ -119,7 +123,8 @@ void VideoCapturerDelegate::StartCapture( |
session_id_, |
params, |
media::BindToCurrentLoop(base::Bind( |
- &VideoCapturerDelegate::OnStateUpdateOnRenderThread, this)), |
+ &VideoCapturerDelegate::OnStateUpdateOnRenderThread, |
+ weak_factory_.GetWeakPtr())), |
new_frame_callback); |
} |
@@ -171,12 +176,14 @@ void VideoCapturerDelegate::OnDeviceFormatsInUseReceived( |
RenderThreadImpl::current()->video_capture_impl_manager(); |
if (!manager) |
return; |
+ |
magjed_chromium
2015/01/09 11:15:53
Two new empty lines.
perkj_chrome
2015/01/09 11:43:59
Done.
|
+ |
manager->GetDeviceSupportedFormats( |
session_id_, |
media::BindToCurrentLoop( |
base::Bind( |
&VideoCapturerDelegate::OnDeviceSupportedFormatsEnumerated, |
- this))); |
+ weak_factory_.GetWeakPtr()))); |
} |
void VideoCapturerDelegate::OnDeviceSupportedFormatsEnumerated( |
@@ -209,8 +216,8 @@ void VideoCapturerDelegate::OnDeviceSupportedFormatsEnumerated( |
MediaStreamVideoCapturerSource::MediaStreamVideoCapturerSource( |
const StreamDeviceInfo& device_info, |
const SourceStoppedCallback& stop_callback, |
- const scoped_refptr<VideoCapturerDelegate>& delegate) |
- : delegate_(delegate) { |
+ scoped_ptr<VideoCapturerDelegate> delegate) |
+ : delegate_(delegate.Pass()) { |
SetDeviceInfo(device_info); |
SetStopCallback(stop_callback); |
} |