Index: content/browser/media/capture/desktop_capture_device.cc |
diff --git a/content/browser/media/capture/desktop_capture_device.cc b/content/browser/media/capture/desktop_capture_device.cc |
index 0ddcf2698cae148732a85b5eaa26fb190d661869..bb546c2d1f47f03b0fa91199990d933ad0e9a03a 100644 |
--- a/content/browser/media/capture/desktop_capture_device.cc |
+++ b/content/browser/media/capture/desktop_capture_device.cc |
@@ -451,7 +451,7 @@ DesktopCaptureDevice::~DesktopCaptureDevice() { |
void DesktopCaptureDevice::AllocateAndStart( |
const media::VideoCaptureParams& params, |
scoped_ptr<Client> client) { |
- thread_.message_loop_proxy()->PostTask( |
+ thread_.task_runner()->PostTask( |
FROM_HERE, |
base::Bind(&Core::AllocateAndStart, base::Unretained(core_.get()), params, |
base::Passed(&client))); |
@@ -459,16 +459,20 @@ void DesktopCaptureDevice::AllocateAndStart( |
void DesktopCaptureDevice::StopAndDeAllocate() { |
if (core_) { |
- thread_.message_loop_proxy()->DeleteSoon(FROM_HERE, core_.release()); |
+ thread_.task_runner()->DeleteSoon(FROM_HERE, core_.release()); |
thread_.Stop(); |
} |
} |
void DesktopCaptureDevice::SetNotificationWindowId( |
gfx::NativeViewId window_id) { |
- thread_.message_loop_proxy()->PostTask( |
+ // This may be called after the capturer has been stopped. |
+ if (!core_) |
+ return; |
+ thread_.task_runner()->PostTask( |
FROM_HERE, |
- base::Bind(&Core::SetNotificationWindowId, base::Unretained(core_.get()), |
+ base::Bind(&Core::SetNotificationWindowId, |
+ base::Unretained(core_.get()), |
window_id)); |
} |
@@ -485,7 +489,7 @@ DesktopCaptureDevice::DesktopCaptureDevice( |
thread_.StartWithOptions(base::Thread::Options(thread_type, 0)); |
- core_.reset(new Core(thread_.message_loop_proxy(), capturer.Pass(), type)); |
+ core_.reset(new Core(thread_.task_runner(), capturer.Pass(), type)); |
} |
} // namespace content |