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