diff --git a/webrtc/modules/desktop_capture/win/dxgi_context.cc b/webrtc/modules/desktop_capture/win/dxgi_context.cc index dffefc404f..18ca990970 100644 --- a/webrtc/modules/desktop_capture/win/dxgi_context.cc +++ b/webrtc/modules/desktop_capture/win/dxgi_context.cc @@ -21,10 +21,11 @@ DxgiAdapterContext::~DxgiAdapterContext() = default; DxgiFrameContext::DxgiFrameContext() = default; DxgiFrameContext::~DxgiFrameContext() { - DxgiDuplicatorController::Instance()->Unregister(this); + Reset(); } void DxgiFrameContext::Reset() { + DxgiDuplicatorController::Instance()->Unregister(this); controller_id = 0; } diff --git a/webrtc/modules/desktop_capture/win/dxgi_duplicator_controller.h b/webrtc/modules/desktop_capture/win/dxgi_duplicator_controller.h index 41a876b1f3..43768d9899 100644 --- a/webrtc/modules/desktop_capture/win/dxgi_duplicator_controller.h +++ b/webrtc/modules/desktop_capture/win/dxgi_duplicator_controller.h @@ -102,9 +102,8 @@ class DxgiDuplicatorController { int ScreenCount(); private: - // DxgiFrameContext calls private Unregister(Context*) function during - // destructing. - friend DxgiFrameContext::~DxgiFrameContext(); + // DxgiFrameContext calls private Unregister(Context*) function in Reset(). + friend void DxgiFrameContext::Reset(); // scoped_refptr accesses private AddRef() and // Release() functions.