diff options
Diffstat (limited to 'src/xprivate.cpp')
-rw-r--r-- | src/xprivate.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/xprivate.cpp b/src/xprivate.cpp index 15447b7..ba5b805 100644 --- a/src/xprivate.cpp +++ b/src/xprivate.cpp @@ -181,9 +181,19 @@ void XPrivate::updateScreenResources() _allOutputs.append(outputName); tempMap.insert(_screenResources->outputs[i], outputName); if (info->connection == RR_Disconnected) { + bool ign = !_crtcMap.contains(info->crtc); + if (!ign) { + ign = !_modeMap.contains(_crtcMap[info->crtc]->mode); + } + if (!ign) { + auto mode = _modeMap[_crtcMap[info->crtc]->mode]; + ign = (mode->width == 0 || mode->height == 0); + } + if (ign) { qDebug() << "Ignoring disconnected output" << outputName; XRRFreeOutputInfo(info); continue; + } } bool disconnected = false; if (info->crtc == None && info->connection == RR_Connected) { |