The root cause is when a DxgiContext is reseted, it has not been correctly cleared from DxgiOutputDuplicator. So during next CaptureFrame() function call, DxgiOutputDuplicator will spread the context change to a deleted instance. BUG=741252 Review-Url: https://codereview.webrtc.org/2975103002 Cr-Commit-Position: refs/heads/master@{#18992}
33 lines
1008 B
C++
33 lines
1008 B
C++
/*
|
|
* Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
#include "webrtc/modules/desktop_capture/win/dxgi_context.h"
|
|
#include "webrtc/modules/desktop_capture/win/dxgi_duplicator_controller.h"
|
|
|
|
namespace webrtc {
|
|
|
|
DxgiAdapterContext::DxgiAdapterContext() = default;
|
|
DxgiAdapterContext::DxgiAdapterContext(
|
|
const DxgiAdapterContext& context) = default;
|
|
DxgiAdapterContext::~DxgiAdapterContext() = default;
|
|
|
|
DxgiFrameContext::DxgiFrameContext() = default;
|
|
|
|
DxgiFrameContext::~DxgiFrameContext() {
|
|
Reset();
|
|
}
|
|
|
|
void DxgiFrameContext::Reset() {
|
|
DxgiDuplicatorController::Instance()->Unregister(this);
|
|
controller_id = 0;
|
|
}
|
|
|
|
} // namespace webrtc
|