| Index: content/browser/renderer_host/media/desktop_capture_device_ash.cc
|
| diff --git a/content/browser/renderer_host/media/desktop_capture_device_ash.cc b/content/browser/renderer_host/media/desktop_capture_device_ash.cc
|
| index 8fd7cfa9ad4fad39ea248e24043ec3fa1580792d..b720f38ece2ed9c6eb52abc2663c8d4f04dfdf45 100644
|
| --- a/content/browser/renderer_host/media/desktop_capture_device_ash.cc
|
| +++ b/content/browser/renderer_host/media/desktop_capture_device_ash.cc
|
| @@ -83,7 +83,7 @@ class DesktopVideoCaptureMachine
|
| base::Timer timer_;
|
|
|
| // The id of the window being captured.
|
| - const DesktopMediaID& window_id_;
|
| + DesktopMediaID window_id_;
|
|
|
| // Makes all the decisions about which frames to copy, and how.
|
| scoped_refptr<ThreadSafeCaptureOracle> oracle_proxy_;
|
| @@ -145,14 +145,17 @@ void DesktopVideoCaptureMachine::Stop() {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
|
|
| // Stop observing window events.
|
| - if (desktop_window_)
|
| + if (desktop_window_) {
|
| desktop_window_->RemoveObserver(this);
|
| + desktop_window_ = NULL;
|
| + }
|
|
|
| // Stop observing compositor updates.
|
| if (desktop_layer_) {
|
| ui::Compositor* compositor = desktop_layer_->GetCompositor();
|
| if (compositor)
|
| compositor->RemoveObserver(this);
|
| + desktop_layer_ = NULL;
|
| }
|
|
|
| // Stop timer.
|
| @@ -275,13 +278,11 @@ void DesktopVideoCaptureMachine::OnWindowBoundsChanged(
|
| }
|
|
|
| void DesktopVideoCaptureMachine::OnWindowDestroyed(aura::Window* window) {
|
| - DCHECK(desktop_window_ && window == desktop_window_);
|
| - desktop_window_ = NULL;
|
| - desktop_layer_ = NULL;
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
|
|
| - // Post task to stop capture on UI thread.
|
| - BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, base::Bind(
|
| - &DesktopVideoCaptureMachine::Stop, AsWeakPtr()));
|
| + Stop();
|
| +
|
| + oracle_proxy_->ReportError();
|
| }
|
|
|
| void DesktopVideoCaptureMachine::OnCompositingEnded(
|
|
|