From bb18e7680f426ff51e435afe78950082da42b643 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 16 Jun 2020 18:02:47 +0200 Subject: Support setting resolution received via loginrpc --- src/loginrpc.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'src/loginrpc.cpp') diff --git a/src/loginrpc.cpp b/src/loginrpc.cpp index 4ced53e..dfb1757 100644 --- a/src/loginrpc.cpp +++ b/src/loginrpc.cpp @@ -1,8 +1,10 @@ #include "loginrpc.h" +#include "cvt.h" #include #include #include +#include LoginRpc::LoginRpc(int port, QObject *parent) : QObject(parent) @@ -41,5 +43,38 @@ void LoginRpc::handleCommandV1(const QString &command) while (lines.count() < 3) { lines.append(QString()); } + QString res = lines[2]; + QStringList parts = res.split("x"); + if (parts.size() == 2) { + int x = parts[0].toInt(); + int y = parts[1].toInt(); + if (x > 0 && y > 0) { + x = (x / 8) * 8; + y = (y / 8) * 8; + // TODO: Configurable min max sizes + if (x < 1024) x = 1024; + if (y < 720) y = 720; + if (x > 1920) x = 1920; + if (y > 1080) y = 1080; + QString name = QString("%1x%2").arg(x).arg(y); + mode *mode = vert_refresh(x, y, 60, 0, 0, 0); + QProcess p; + QStringList newmode = QStringList() << "--verbose" << "--newmode" << name << QString::asprintf("%.2f", mode->pclk) + << QString::number(mode->hr) << QString::number(mode->hss) << QString::number(mode->hse) << QString::number(mode->hfl) + << QString::number(mode->vr) << QString::number(mode->vss) << QString::number(mode->vse) << QString::number(mode->vfl) + << "-hsync" << "+vsync"; + qDebug() << "Setting mode" << newmode; + p.setProcessChannelMode(QProcess::ForwardedChannels); + p.start("xrandr", newmode); + p.waitForFinished(2000); + p.kill(); + p.start("xrandr", QStringList() << "--verbose" << "--addmode" << "VIRTUAL1" << name); + p.waitForFinished(2000); + p.kill(); + p.start("xrandr", QStringList() << "--verbose" << "--output" << "VIRTUAL1" << "--mode" << name); + p.waitForFinished(2000); + p.kill(); + } + } emit loginRequest(lines[0], lines[1], lines[2]); } -- cgit v1.2.3-55-g7522