mirror of
https://github.com/gnif/LookingGlass.git
synced 2026-07-20 14:22:00 +00:00
[idd] never add the extraMode to the EDID
Doing so causes windows to treat a new EDID as a new monitor
This commit is contained in:
@@ -554,6 +554,10 @@ void CEdid::Build(const CSettings::DisplayModes& modes)
|
||||
baseDtdIndex < EDID_BASE_DETAILED_TIMING_COUNT;
|
||||
++modeIndex)
|
||||
{
|
||||
// never include the extra mode in the EDID
|
||||
if (sorted[modeIndex].extraMode)
|
||||
continue;
|
||||
|
||||
if (MakeDetailedTiming(
|
||||
baseBlock.descriptors[baseDtdIndex].detailedTiming,
|
||||
sorted[modeIndex]))
|
||||
@@ -589,6 +593,10 @@ void CEdid::Build(const CSettings::DisplayModes& modes)
|
||||
ctaDtdWrite + EDID_DTD_SIZE <= EDID_BLOCK_SIZE - 1;
|
||||
++modeIndex)
|
||||
{
|
||||
// never include the extra mode in the EDID
|
||||
if (sorted[modeIndex].extraMode)
|
||||
continue;
|
||||
|
||||
if (WriteDetailedTiming(cta + ctaDtdWrite, sorted[modeIndex]))
|
||||
ctaDtdWrite += EDID_DTD_SIZE;
|
||||
}
|
||||
|
||||
@@ -58,6 +58,7 @@ void CSettings::LoadModes()
|
||||
m.height = DefaultDisplayModes[i][1];
|
||||
m.refresh = defaultRefresh;
|
||||
m.preferred = !hasPreferred && (i == DefaultPreferredDisplayMode);
|
||||
m.extraMode = false;
|
||||
m_displayModes.push_back(m);
|
||||
}
|
||||
return;
|
||||
@@ -209,7 +210,11 @@ bool CSettings::GetExtraMode(DisplayMode& mode)
|
||||
if (extraMode.empty())
|
||||
return false;
|
||||
|
||||
return ParseModeString(extraMode, mode);
|
||||
if (!ParseModeString(extraMode, mode))
|
||||
return false;
|
||||
|
||||
mode.extraMode = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
unsigned CSettings::GetDefaultRefresh() const
|
||||
@@ -318,5 +323,6 @@ bool CSettings::ParseModeString(const std::wstring& in, DisplayMode& out)
|
||||
out.refresh > 1000)
|
||||
return false;
|
||||
|
||||
out.extraMode = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@ class CSettings
|
||||
unsigned height;
|
||||
unsigned refresh;
|
||||
bool preferred;
|
||||
bool extraMode;
|
||||
};
|
||||
typedef std::vector<DisplayMode> DisplayModes;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user