Skip to content

Commit e6e7eb5

Browse files
committed
Дополнение к 0788ed1.
1 parent 06951d2 commit e6e7eb5

File tree

1 file changed

+23
-16
lines changed

1 file changed

+23
-16
lines changed

Source/DX11VideoProcessor.cpp

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1561,21 +1561,25 @@ bool CDX11VideoProcessor::ToggleHDR(const DisplayConfig_t& displayConfig, const
15611561
DLogIf(ERROR_SUCCESS != ret, L"ToggleHDR() : DisplayConfigSetDeviceInfo(DISPLAYCONFIG_SET_ADVANCED_COLOR_STATE) with '{}' failed with error {}", bEnableAdvancedColor, HR2Str(HRESULT_FROM_WIN32(ret)));
15621562
}
15631563

1564-
if (ret == ERROR_SUCCESS && beforeModeOpt.has_value()) {
1565-
auto afterModeOpt = GetCurrentDisplayMode(displayConfig.displayName);
1566-
if (afterModeOpt.has_value()) {
1567-
auto& beforeMode = *beforeModeOpt;
1568-
auto& afterMode = *afterModeOpt;
1569-
if (beforeMode.dmPelsWidth != afterMode.dmPelsWidth || beforeMode.dmPelsHeight != afterMode.dmPelsHeight
1570-
|| beforeMode.dmBitsPerPel != afterMode.dmBitsPerPel || beforeMode.dmDisplayFrequency != afterMode.dmDisplayFrequency) {
1571-
DLog(L"ToggleHDR() : Display mode changed from {}x{}@{} to {}x{}@{}, restoring",
1572-
beforeMode.dmPelsWidth, beforeMode.dmPelsHeight, beforeMode.dmDisplayFrequency,
1573-
afterMode.dmPelsWidth, afterMode.dmPelsHeight, afterMode.dmDisplayFrequency);
1574-
1575-
auto ret = ChangeDisplaySettingsExW(displayConfig.displayName, &beforeMode, nullptr, CDS_FULLSCREEN, nullptr);
1576-
DLogIf(DISP_CHANGE_SUCCESSFUL != ret, L"ToggleHDR() : ChangeDisplaySettingsExW() failed with error {}", HR2Str(HRESULT_FROM_WIN32(ret)));
1577-
1578-
m_bDisplayModeChangeAfterHDRToggle = true;
1564+
if (ret == ERROR_SUCCESS) {
1565+
m_bDisplayModeChangeAfterHDRToggle = true;
1566+
1567+
if (beforeModeOpt.has_value()) {
1568+
auto afterModeOpt = GetCurrentDisplayMode(displayConfig.displayName);
1569+
if (afterModeOpt.has_value()) {
1570+
auto& beforeMode = *beforeModeOpt;
1571+
auto& afterMode = *afterModeOpt;
1572+
if (beforeMode.dmPelsWidth != afterMode.dmPelsWidth || beforeMode.dmPelsHeight != afterMode.dmPelsHeight
1573+
|| beforeMode.dmBitsPerPel != afterMode.dmBitsPerPel || beforeMode.dmDisplayFrequency != afterMode.dmDisplayFrequency) {
1574+
DLog(L"ToggleHDR() : Display mode changed from {}x{}@{} to {}x{}@{}, restoring",
1575+
beforeMode.dmPelsWidth, beforeMode.dmPelsHeight, beforeMode.dmDisplayFrequency,
1576+
afterMode.dmPelsWidth, afterMode.dmPelsHeight, afterMode.dmDisplayFrequency);
1577+
1578+
auto ret = ChangeDisplaySettingsExW(displayConfig.displayName, &beforeMode, nullptr, CDS_FULLSCREEN, nullptr);
1579+
DLogIf(DISP_CHANGE_SUCCESSFUL != ret, L"ToggleHDR() : ChangeDisplaySettingsExW() failed with error {}", HR2Str(HRESULT_FROM_WIN32(ret)));
1580+
1581+
m_bDisplayModeChangeAfterHDRToggle = true;
1582+
}
15791583
}
15801584
}
15811585
}
@@ -3107,7 +3111,10 @@ HRESULT CDX11VideoProcessor::Reset(bool bDisplayModeChange)
31073111
if (GetDisplayConfig(mi.szDevice, displayConfig)) {
31083112
const auto bHdrPassthroughSupport = displayConfig.HDRSupported() && displayConfig.HDREnabled();
31093113
if ((bHdrPassthroughSupport && !m_bHdrPassthroughSupport) || (!displayConfig.HDREnabled() && m_bHdrPassthroughSupport)) {
3110-
m_hdrModeSavedState.erase(mi.szDevice);
3114+
if (m_hdrModeSavedState.find(mi.szDevice) != m_hdrModeSavedState.end()) {
3115+
DLog(L"CDX11VideoProcessor::Reset() : Clear stored state for '{}'", mi.szDevice);
3116+
m_hdrModeSavedState.erase(mi.szDevice);
3117+
}
31113118

31123119
if (m_pFilter->m_inputMT.IsValid()) {
31133120
CAutoLock cRendererLock(&m_pFilter->m_RendererLock);

0 commit comments

Comments
 (0)