summaryrefslogtreecommitdiffstats
path: root/src/xx.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/xx.cpp')
-rw-r--r--src/xx.cpp21
1 files changed, 16 insertions, 5 deletions
diff --git a/src/xx.cpp b/src/xx.cpp
index 6e6286e..b8b1eab 100644
--- a/src/xx.cpp
+++ b/src/xx.cpp
@@ -402,13 +402,20 @@ ConfigBackup ScreenSetup::setDefaultMode(ScreenMode &mode)
int offset = 0;
for (int i = 0; i < outputSizes.size(); ++i) {
const QSize &size = outputSizes.at(i);
+ unsigned int w = 0;
if (i < projectors.size()) {
- a->setOutputResolution(cmd, projectors.at(i), offset, 0, size);
+ auto *mode = a->setOutputResolution(cmd, projectors.at(i), offset, 0, size);
+ if (mode != nullptr && mode->width > w) {
+ w = mode->width;
+ }
}
if (i < screens.size()) {
- a->setOutputResolution(cmd, screens.at(i), offset, 0, size);
+ auto *mode = a->setOutputResolution(cmd, screens.at(i), offset, 0, size);
+ if (mode != nullptr && mode->width > w) {
+ w = mode->width;
+ }
}
- offset += size.width();
+ offset += w;
}
retval._ok = runXrandr(cmd);
updateScreenResources(); // Re-Read
@@ -555,14 +562,18 @@ ConfigBackup ScreenSetup::setCustom(const QList<QPair<QSize, QList<QString>>> &l
if (e.second.isEmpty())
continue;
const QSize &res = e.first;
+ unsigned int w = 0;
for (auto outputName : e.second) {
for (auto oi : a->_outputMap) {
if (oi->outputName != outputName)
continue;
- a->setOutputResolution(cmd, oi, x, 0, res);
+ auto *mode = a->setOutputResolution(cmd, oi, x, 0, res);
+ if (mode != nullptr && mode->width > w) {
+ w = mode->width;
+ }
}
}
- x += res.width();
+ x += w;
}
retval._ok = runXrandr(cmd);
return retval;