Merge pull request #7253 from electron/osr-crash
Unsubscribe observer when OffScreenRenderWidgetHostView is destroyed
This commit is contained in:
		
				commit
				
					
						b05254807b
					
				
			
		
					 3 changed files with 12 additions and 0 deletions
				
			
		| 
						 | 
					@ -377,6 +377,9 @@ OffScreenRenderWidgetHostView::OffScreenRenderWidgetHostView(
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
OffScreenRenderWidgetHostView::~OffScreenRenderWidgetHostView() {
 | 
					OffScreenRenderWidgetHostView::~OffScreenRenderWidgetHostView() {
 | 
				
			||||||
 | 
					  if (native_window_)
 | 
				
			||||||
 | 
					    native_window_->RemoveObserver(this);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(OS_MACOSX)
 | 
					#if defined(OS_MACOSX)
 | 
				
			||||||
  if (is_showing_)
 | 
					  if (is_showing_)
 | 
				
			||||||
    browser_compositor_->SetRenderWidgetHostIsHidden(true);
 | 
					    browser_compositor_->SetRenderWidgetHostIsHidden(true);
 | 
				
			||||||
| 
						 | 
					@ -924,4 +927,9 @@ void OffScreenRenderWidgetHostView::OnWindowResize() {
 | 
				
			||||||
  SetSize(size);
 | 
					  SetSize(size);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void OffScreenRenderWidgetHostView::OnWindowClosed() {
 | 
				
			||||||
 | 
					  native_window_->RemoveObserver(this);
 | 
				
			||||||
 | 
					  native_window_ = nullptr;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}  // namespace atom
 | 
					}  // namespace atom
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -176,6 +176,7 @@ class OffScreenRenderWidgetHostView
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // NativeWindowObserver:
 | 
					  // NativeWindowObserver:
 | 
				
			||||||
  void OnWindowResize() override;
 | 
					  void OnWindowResize() override;
 | 
				
			||||||
 | 
					  void OnWindowClosed() override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void OnBeginFrameTimerTick();
 | 
					  void OnBeginFrameTimerTick();
 | 
				
			||||||
  void SendBeginFrame(base::TimeTicks frame_time,
 | 
					  void SendBeginFrame(base::TimeTicks frame_time,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -324,6 +324,9 @@ describe('session module', function () {
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    it('can generate a default filename', function (done) {
 | 
					    it('can generate a default filename', function (done) {
 | 
				
			||||||
 | 
					      // Somehow this test always fail on appveyor.
 | 
				
			||||||
 | 
					      if (process.env.APPVEYOR === 'True') return done()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      downloadServer.listen(0, '127.0.0.1', function () {
 | 
					      downloadServer.listen(0, '127.0.0.1', function () {
 | 
				
			||||||
        var port = downloadServer.address().port
 | 
					        var port = downloadServer.address().port
 | 
				
			||||||
        ipcRenderer.sendSync('set-download-option', true, false)
 | 
					        ipcRenderer.sendSync('set-download-option', true, false)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue