Add virtual display creation logic, with support for custom resolutions
This commit is contained in:
parent
026f5825f3
commit
7200ac95f5
|
|
@ -7,6 +7,9 @@
|
|||
#include "core/rendertarget.h"
|
||||
#include "core/renderviewport.h"
|
||||
|
||||
#include <kwin/main.h>
|
||||
#include <core/outputbackend.h>
|
||||
|
||||
#include <functional>
|
||||
#include <QAction>
|
||||
#include <QFile>
|
||||
|
|
@ -194,6 +197,11 @@ void BreezyDesktopEffect::deactivate()
|
|||
m_cursorUpdateTimer->stop();
|
||||
showCursor();
|
||||
|
||||
for (auto output : m_virtualOutputs) {
|
||||
KWin::kwinApp()->outputBackend()->removeVirtualOutput(output);
|
||||
}
|
||||
m_virtualOutputs.clear();
|
||||
|
||||
// this triggers realDeactivate with a delay so if it's triggered from QML it gives the QML function time to
|
||||
// exit, avoiding a crash
|
||||
m_shutdownTimer->start(250);
|
||||
|
|
@ -207,7 +215,6 @@ void BreezyDesktopEffect::realDeactivate()
|
|||
|
||||
void BreezyDesktopEffect::recenter()
|
||||
{
|
||||
qCCritical(KWIN_XR) << "\t\t\tBreezy - recenter";
|
||||
QFile controlFile(QStringLiteral("/dev/shm/xr_driver_control"));
|
||||
if (controlFile.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
|
||||
controlFile.write("recenter_screen=true\n");
|
||||
|
|
@ -215,6 +222,21 @@ void BreezyDesktopEffect::recenter()
|
|||
}
|
||||
}
|
||||
|
||||
void BreezyDesktopEffect::addVirtualDisplay(QSize size)
|
||||
{
|
||||
// QSize size(2560, 1440);
|
||||
// addVirtualDisplay(size);
|
||||
|
||||
static int virtualDisplayCount = 0;
|
||||
++virtualDisplayCount;
|
||||
QString name = QStringLiteral("BreezyDesktop_VirtualDisplay_%1x%2_%3").arg(size.width()).arg(size.height()).arg(virtualDisplayCount);
|
||||
QString description = QStringLiteral("Breezy Display %1x%2 (%3)").arg(size.width()).arg(size.height()).arg(virtualDisplayCount);
|
||||
auto output = KWin::kwinApp()->outputBackend()->createVirtualOutput(name, description, size, 1.0);
|
||||
if (output) {
|
||||
m_virtualOutputs.append(output);
|
||||
}
|
||||
}
|
||||
|
||||
bool BreezyDesktopEffect::isEnabled() const {
|
||||
return m_enabled;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -65,6 +65,7 @@ namespace KWin
|
|||
void deactivate();
|
||||
void toggle();
|
||||
void recenter();
|
||||
void addVirtualDisplay(QSize size);
|
||||
void updateImuRotation();
|
||||
void updateCursorImage();
|
||||
void updateCursorPos();
|
||||
|
|
@ -106,6 +107,7 @@ namespace KWin
|
|||
QTimer *m_cursorUpdateTimer = nullptr;
|
||||
qreal m_focusedDisplayDistance = 0.85;
|
||||
qreal m_allDisplaysDistance = 1.05;
|
||||
QList<Output *> m_virtualOutputs;
|
||||
};
|
||||
|
||||
} // namespace KWin
|
||||
|
|
|
|||
Loading…
Reference in New Issue