Index: chrome/browser/media/media_stream_capture_indicator.cc |
diff --git a/chrome/browser/media/media_stream_capture_indicator.cc b/chrome/browser/media/media_stream_capture_indicator.cc |
index b5a7bac618ed929a1e23c390362cd6bcf70d1c83..5e0907e3cc761e21d5d3a6ab133a2dc7d14f80f9 100644 |
--- a/chrome/browser/media/media_stream_capture_indicator.cc |
+++ b/chrome/browser/media/media_stream_capture_indicator.cc |
@@ -124,7 +124,8 @@ MediaStreamCaptureIndicator::MediaStreamCaptureIndicator() |
mic_image_(NULL), |
camera_image_(NULL), |
balloon_image_(NULL), |
- request_index_(0) { |
+ request_index_(0), |
+ weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { |
} |
MediaStreamCaptureIndicator::~MediaStreamCaptureIndicator() { |
@@ -175,7 +176,8 @@ void MediaStreamCaptureIndicator::CaptureDevicesOpened( |
BrowserThread::PostTask( |
BrowserThread::UI, FROM_HERE, |
base::Bind(&MediaStreamCaptureIndicator::DoDevicesOpenedOnUIThread, |
- this, render_process_id, render_view_id, devices)); |
+ weak_ptr_factory_.GetWeakPtr(), |
+ render_process_id, render_view_id, devices)); |
} |
void MediaStreamCaptureIndicator::CaptureDevicesClosed( |
@@ -188,7 +190,8 @@ void MediaStreamCaptureIndicator::CaptureDevicesClosed( |
BrowserThread::PostTask( |
BrowserThread::UI, FROM_HERE, |
base::Bind(&MediaStreamCaptureIndicator::DoDevicesClosedOnUIThread, |
- this, render_process_id, render_view_id, devices)); |
+ weak_ptr_factory_.GetWeakPtr(), |
no longer working on chromium
2012/10/23 08:56:53
Do we know that if MediaInternals will always outl
stevenjb
2012/10/23 18:11:31
As a Singleton, yes, it will outlive the UI messag
|
+ render_process_id, render_view_id, devices)); |
} |
void MediaStreamCaptureIndicator::DoDevicesOpenedOnUIThread( |
@@ -451,6 +454,16 @@ void MediaStreamCaptureIndicator::RemoveCaptureDeviceTab( |
UpdateStatusTrayIconContextMenu(); |
} |
+bool MediaStreamCaptureIndicator::IsProcessCapturing(int render_process_id, |
+ int render_view_id) const { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ CaptureDeviceTabs::const_iterator iter = std::find_if( |
+ tabs_.begin(), tabs_.end(), TabEquals(render_process_id, render_view_id)); |
+ if (iter == tabs_.end()) |
+ return false; |
+ return (iter->audio_ref_count > 0 || iter->video_ref_count > 0); |
+} |
+ |
void MediaStreamCaptureIndicator::EnsureImageLoadingTracker() { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
if (tracker_.get()) |