diff options
-rw-r--r-- | src/main.cpp | 2 | ||||
-rw-r--r-- | src/xx.cpp | 11 | ||||
-rw-r--r-- | src/xx.h | 1 |
3 files changed, 13 insertions, 1 deletions
diff --git a/src/main.cpp b/src/main.cpp index db82370..ac28a68 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -70,7 +70,7 @@ int main(int argc, char *argv[]) Widget *w = nullptr; if (CommandLine::backgroundMode() || CommandLine::showGui()) { w = new Widget(); - if (CommandLine::showGui()) { + if (CommandLine::showGui() || ScreenSetup::inst()->hasScreenWithoutEdid()) { w->show(); } } @@ -318,6 +318,17 @@ ScreenMode ScreenSetup::getCurrentMode() return ScreenMode::Clone; } +bool ScreenSetup::hasScreenWithoutEdid() +{ + for (auto oi : a->_outputMap) { + // no preferred modes pretty much means no EDID, although technically I think you could have EDID + // that doesn't provide a preferred mode... + if (oi->output != nullptr && oi->output->connection != RR_Disconnected && oi->output->npreferred == 0) + return true; + } + return false; +} + ConfigBackup ScreenSetup::setDefaultMode(bool dryRun, ScreenMode &mode) { ConfigBackup retval; @@ -67,6 +67,7 @@ public: void updateScreenResources(); void initModes(); ScreenMode getCurrentMode(); + bool hasScreenAndSecondDeviceWithoutEdidSoItCouldBeAProjector(); ConfigBackup setDefaultMode(bool dryRun, ScreenMode &mode); bool createMode(unsigned int resX, unsigned int resY, float refresh, QString name); ConfigBackup setCenteredClone(); |