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

Unified Diff: content/renderer/media/media_stream_video_capturer_source.cc

Issue 843943002: Refactor VideoCapturerDelegate to use WeakPtr instead of refcount. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix source_formats_callback_.reset Created 5 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
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..e03d440906d21fc26f969a89bcbbbaadcb1e9d73 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();
@@ -96,7 +98,8 @@ void VideoCapturerDelegate::GetCurrentSupportedFormats(
session_id_,
media::BindToCurrentLoop(
base::Bind(
- &VideoCapturerDelegate::OnDeviceFormatsInUseReceived, this)));
+ &VideoCapturerDelegate::OnDeviceFormatsInUseReceived,
+ weak_factory_.GetWeakPtr())));
}
void VideoCapturerDelegate::StartCapture(
@@ -119,7 +122,8 @@ void VideoCapturerDelegate::StartCapture(
session_id_,
params,
media::BindToCurrentLoop(base::Bind(
- &VideoCapturerDelegate::OnStateUpdateOnRenderThread, this)),
+ &VideoCapturerDelegate::OnStateUpdateOnRenderThread,
+ weak_factory_.GetWeakPtr())),
new_frame_callback);
}
@@ -171,12 +175,13 @@ void VideoCapturerDelegate::OnDeviceFormatsInUseReceived(
RenderThreadImpl::current()->video_capture_impl_manager();
if (!manager)
return;
+
manager->GetDeviceSupportedFormats(
session_id_,
media::BindToCurrentLoop(
base::Bind(
&VideoCapturerDelegate::OnDeviceSupportedFormatsEnumerated,
- this)));
+ weak_factory_.GetWeakPtr())));
}
void VideoCapturerDelegate::OnDeviceSupportedFormatsEnumerated(
@@ -189,7 +194,7 @@ void VideoCapturerDelegate::OnDeviceSupportedFormatsEnumerated(
if (source_formats_callback_.is_null())
return;
if (formats.size()) {
- source_formats_callback_.Run(formats);
+ base::ResetAndReturn(&source_formats_callback_).Run(formats);
} else {
// The capture device doesn't seem to support capability enumeration,
// compose a fallback list of capabilities.
@@ -201,16 +206,15 @@ void VideoCapturerDelegate::OnDeviceSupportedFormatsEnumerated(
kVideoFrameRates[j], media::PIXEL_FORMAT_I420));
}
}
- source_formats_callback_.Run(default_formats);
+ base::ResetAndReturn(&source_formats_callback_).Run(default_formats);
}
- source_formats_callback_.Reset();
}
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);
}
« no previous file with comments | « content/renderer/media/media_stream_video_capturer_source.h ('k') | content/renderer/media/user_media_client_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698