There's no QVector anymore, QList is the QVector in Qt6
This commit is contained in:
parent
f9163bf6a5
commit
bc6116c5a7
276 changed files with 1080 additions and 1083 deletions
|
@ -38,7 +38,7 @@ static std::unique_ptr<MockGpu> findPrimaryDevice(int crtcCount)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector<drmDevice *> devices(deviceCount);
|
QList<drmDevice *> devices(deviceCount);
|
||||||
if (drmGetDevices2(0, devices.data(), devices.size()) < 0) {
|
if (drmGetDevices2(0, devices.data(), devices.size()) < 0) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -203,9 +203,9 @@ void DrmTest::testZeroModesHandling()
|
||||||
void DrmTest::testModeGeneration_data()
|
void DrmTest::testModeGeneration_data()
|
||||||
{
|
{
|
||||||
QTest::addColumn<QSize>("nativeMode");
|
QTest::addColumn<QSize>("nativeMode");
|
||||||
QTest::addColumn<QVector<QSize>>("expectedModes");
|
QTest::addColumn<QList<QSize>>("expectedModes");
|
||||||
|
|
||||||
QTest::newRow("2160p") << QSize(3840, 2160) << QVector<QSize>{
|
QTest::newRow("2160p") << QSize(3840, 2160) << QList<QSize>{
|
||||||
QSize(1600, 1200),
|
QSize(1600, 1200),
|
||||||
QSize(1280, 1024),
|
QSize(1280, 1024),
|
||||||
QSize(1024, 768),
|
QSize(1024, 768),
|
||||||
|
@ -221,7 +221,7 @@ void DrmTest::testModeGeneration_data()
|
||||||
QSize(1368, 768),
|
QSize(1368, 768),
|
||||||
QSize(1280, 720),
|
QSize(1280, 720),
|
||||||
};
|
};
|
||||||
QTest::newRow("1440p") << QSize(2560, 1440) << QVector<QSize>{
|
QTest::newRow("1440p") << QSize(2560, 1440) << QList<QSize>{
|
||||||
QSize(1600, 1200),
|
QSize(1600, 1200),
|
||||||
QSize(1280, 1024),
|
QSize(1280, 1024),
|
||||||
QSize(1024, 768),
|
QSize(1024, 768),
|
||||||
|
@ -233,7 +233,7 @@ void DrmTest::testModeGeneration_data()
|
||||||
QSize(1368, 768),
|
QSize(1368, 768),
|
||||||
QSize(1280, 720),
|
QSize(1280, 720),
|
||||||
};
|
};
|
||||||
QTest::newRow("1080p") << QSize(1920, 1080) << QVector<QSize>{
|
QTest::newRow("1080p") << QSize(1920, 1080) << QList<QSize>{
|
||||||
QSize(1280, 1024),
|
QSize(1280, 1024),
|
||||||
QSize(1024, 768),
|
QSize(1024, 768),
|
||||||
QSize(1280, 800),
|
QSize(1280, 800),
|
||||||
|
@ -243,7 +243,7 @@ void DrmTest::testModeGeneration_data()
|
||||||
QSize(1280, 720),
|
QSize(1280, 720),
|
||||||
};
|
};
|
||||||
|
|
||||||
QTest::newRow("2160p 21:9") << QSize(5120, 2160) << QVector<QSize>{
|
QTest::newRow("2160p 21:9") << QSize(5120, 2160) << QList<QSize>{
|
||||||
QSize(5120, 2160),
|
QSize(5120, 2160),
|
||||||
QSize(1600, 1200),
|
QSize(1600, 1200),
|
||||||
QSize(1280, 1024),
|
QSize(1280, 1024),
|
||||||
|
@ -260,7 +260,7 @@ void DrmTest::testModeGeneration_data()
|
||||||
QSize(1368, 768),
|
QSize(1368, 768),
|
||||||
QSize(1280, 720),
|
QSize(1280, 720),
|
||||||
};
|
};
|
||||||
QTest::newRow("1440p 21:9") << QSize(3440, 1440) << QVector<QSize>{
|
QTest::newRow("1440p 21:9") << QSize(3440, 1440) << QList<QSize>{
|
||||||
QSize(3440, 1440),
|
QSize(3440, 1440),
|
||||||
QSize(1600, 1200),
|
QSize(1600, 1200),
|
||||||
QSize(1280, 1024),
|
QSize(1280, 1024),
|
||||||
|
@ -273,7 +273,7 @@ void DrmTest::testModeGeneration_data()
|
||||||
QSize(1368, 768),
|
QSize(1368, 768),
|
||||||
QSize(1280, 720),
|
QSize(1280, 720),
|
||||||
};
|
};
|
||||||
QTest::newRow("1080p 21:9") << QSize(2560, 1080) << QVector<QSize>{
|
QTest::newRow("1080p 21:9") << QSize(2560, 1080) << QList<QSize>{
|
||||||
QSize(2560, 1080),
|
QSize(2560, 1080),
|
||||||
QSize(1280, 1024),
|
QSize(1280, 1024),
|
||||||
QSize(1024, 768),
|
QSize(1024, 768),
|
||||||
|
@ -298,7 +298,7 @@ void DrmTest::testModeGeneration()
|
||||||
auto gpu = std::make_unique<DrmGpu>(backend.get(), mockGpu->devNode, mockGpu->fd, 0);
|
auto gpu = std::make_unique<DrmGpu>(backend.get(), mockGpu->devNode, mockGpu->fd, 0);
|
||||||
|
|
||||||
QFETCH(QSize, nativeMode);
|
QFETCH(QSize, nativeMode);
|
||||||
QFETCH(QVector<QSize>, expectedModes);
|
QFETCH(QList<QSize>, expectedModes);
|
||||||
|
|
||||||
conn->modes.clear();
|
conn->modes.clear();
|
||||||
conn->addMode(nativeMode.width(), nativeMode.height(), 60);
|
conn->addMode(nativeMode.width(), nativeMode.height(), 60);
|
||||||
|
@ -310,7 +310,7 @@ void DrmTest::testModeGeneration()
|
||||||
mockGpu->connectors.removeAll(conn);
|
mockGpu->connectors.removeAll(conn);
|
||||||
QVERIFY(gpu->updateOutputs());
|
QVERIFY(gpu->updateOutputs());
|
||||||
|
|
||||||
conn->props.emplace_back(conn.get(), QStringLiteral("scaling mode"), 0, DRM_MODE_PROP_ENUM, QVector<QByteArray>{"None", "Full", "Center", "Full aspect"});
|
conn->props.emplace_back(conn.get(), QStringLiteral("scaling mode"), 0, DRM_MODE_PROP_ENUM, QList<QByteArray>{"None", "Full", "Center", "Full aspect"});
|
||||||
mockGpu->connectors.push_back(conn);
|
mockGpu->connectors.push_back(conn);
|
||||||
QVERIFY(gpu->updateOutputs());
|
QVERIFY(gpu->updateOutputs());
|
||||||
|
|
||||||
|
|
|
@ -133,7 +133,7 @@ uint32_t MockObject::getPropId(const QString &propName) const
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
MockProperty::MockProperty(MockObject *obj, QString name, uint64_t initialValue, uint32_t flags, QVector<QByteArray> enums)
|
MockProperty::MockProperty(MockObject *obj, QString name, uint64_t initialValue, uint32_t flags, QList<QByteArray> enums)
|
||||||
: obj(obj)
|
: obj(obj)
|
||||||
, id(obj->gpu->idCounter++)
|
, id(obj->gpu->idCounter++)
|
||||||
, flags(flags)
|
, flags(flags)
|
||||||
|
@ -522,7 +522,7 @@ int drmModeSetCrtc(int fd, uint32_t crtcId, uint32_t bufferId,
|
||||||
req->legacyEmulation = true;
|
req->legacyEmulation = true;
|
||||||
drmModeAtomicAddProperty(req, crtcId, crtc->getPropId(QStringLiteral("MODE_ID")), modeBlob);
|
drmModeAtomicAddProperty(req, crtcId, crtc->getPropId(QStringLiteral("MODE_ID")), modeBlob);
|
||||||
drmModeAtomicAddProperty(req, crtcId, crtc->getPropId(QStringLiteral("ACTIVE")), modeBlob && count);
|
drmModeAtomicAddProperty(req, crtcId, crtc->getPropId(QStringLiteral("ACTIVE")), modeBlob && count);
|
||||||
QVector<uint32_t> conns;
|
QList<uint32_t> conns;
|
||||||
for (int i = 0; i < count; i++) {
|
for (int i = 0; i < count; i++) {
|
||||||
conns << connectors[i];
|
conns << connectors[i];
|
||||||
}
|
}
|
||||||
|
@ -843,7 +843,7 @@ drmModeObjectPropertiesPtr drmModeObjectGetProperties(int fd, uint32_t object_id
|
||||||
errno = EINVAL;
|
errno = EINVAL;
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
QVector<MockProperty> props;
|
QList<MockProperty> props;
|
||||||
bool deviceAtomic = gpu->clientCaps.contains(DRM_CLIENT_CAP_ATOMIC) && gpu->clientCaps[DRM_CLIENT_CAP_ATOMIC];
|
bool deviceAtomic = gpu->clientCaps.contains(DRM_CLIENT_CAP_ATOMIC) && gpu->clientCaps[DRM_CLIENT_CAP_ATOMIC];
|
||||||
for (const auto &prop : std::as_const(obj->props)) {
|
for (const auto &prop : std::as_const(obj->props)) {
|
||||||
if (deviceAtomic || !(prop.flags & DRM_MODE_PROP_ATOMIC)) {
|
if (deviceAtomic || !(prop.flags & DRM_MODE_PROP_ATOMIC)) {
|
||||||
|
@ -899,7 +899,7 @@ int drmModeObjectSetProperty(int fd, uint32_t object_id, uint32_t object_type, u
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static QVector<drmModeAtomicReqPtr> s_atomicReqs;
|
static QList<drmModeAtomicReqPtr> s_atomicReqs;
|
||||||
|
|
||||||
drmModeAtomicReqPtr drmModeAtomicAlloc(void)
|
drmModeAtomicReqPtr drmModeAtomicAlloc(void)
|
||||||
{
|
{
|
||||||
|
@ -963,20 +963,20 @@ int drmModeAtomicCommit(int fd, drmModeAtomicReqPtr req, uint32_t flags, void *u
|
||||||
return -(errno = EINVAL);
|
return -(errno = EINVAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector<MockConnector> connCopies;
|
QList<MockConnector> connCopies;
|
||||||
for (const auto &conn : std::as_const(gpu->connectors)) {
|
for (const auto &conn : std::as_const(gpu->connectors)) {
|
||||||
connCopies << *conn;
|
connCopies << *conn;
|
||||||
}
|
}
|
||||||
QVector<MockCrtc> crtcCopies;
|
QList<MockCrtc> crtcCopies;
|
||||||
for (const auto &crtc : std::as_const(gpu->crtcs)) {
|
for (const auto &crtc : std::as_const(gpu->crtcs)) {
|
||||||
crtcCopies << *crtc;
|
crtcCopies << *crtc;
|
||||||
}
|
}
|
||||||
QVector<MockPlane> planeCopies;
|
QList<MockPlane> planeCopies;
|
||||||
for (const auto &plane : std::as_const(gpu->planes)) {
|
for (const auto &plane : std::as_const(gpu->planes)) {
|
||||||
planeCopies << *plane;
|
planeCopies << *plane;
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector<MockObject*> objects;
|
QList<MockObject *> objects;
|
||||||
for (int i = 0; i < connCopies.count(); i++) {
|
for (int i = 0; i < connCopies.count(); i++) {
|
||||||
objects << &connCopies[i];
|
objects << &connCopies[i];
|
||||||
}
|
}
|
||||||
|
@ -1022,10 +1022,10 @@ int drmModeAtomicCommit(int fd, drmModeAtomicReqPtr req, uint32_t flags, void *u
|
||||||
// check if the desired changes are allowed
|
// check if the desired changes are allowed
|
||||||
struct Pipeline {
|
struct Pipeline {
|
||||||
MockCrtc *crtc;
|
MockCrtc *crtc;
|
||||||
QVector<MockConnector*> conns;
|
QList<MockConnector *> conns;
|
||||||
MockPlane *primaryPlane = nullptr;
|
MockPlane *primaryPlane = nullptr;
|
||||||
};
|
};
|
||||||
QVector<Pipeline> pipelines;
|
QList<Pipeline> pipelines;
|
||||||
for (int i = 0; i < crtcCopies.count(); i++) {
|
for (int i = 0; i < crtcCopies.count(); i++) {
|
||||||
if (crtcCopies[i].getProp(QStringLiteral("ACTIVE"))) {
|
if (crtcCopies[i].getProp(QStringLiteral("ACTIVE"))) {
|
||||||
auto blob = gpu->getBlob(crtcCopies[i].getProp(QStringLiteral("MODE_ID")));
|
auto blob = gpu->getBlob(crtcCopies[i].getProp(QStringLiteral("MODE_ID")));
|
||||||
|
|
|
@ -11,9 +11,9 @@
|
||||||
#include <xf86drm.h>
|
#include <xf86drm.h>
|
||||||
#include <xf86drmMode.h>
|
#include <xf86drmMode.h>
|
||||||
|
|
||||||
|
#include <QList>
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
#include <QRect>
|
#include <QRect>
|
||||||
#include <QVector>
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
@ -27,7 +27,7 @@ class MockPlane;
|
||||||
|
|
||||||
class MockProperty {
|
class MockProperty {
|
||||||
public:
|
public:
|
||||||
MockProperty(MockObject *obj, QString name, uint64_t initialValue, uint32_t flags, QVector<QByteArray> enums = {});
|
MockProperty(MockObject *obj, QString name, uint64_t initialValue, uint32_t flags, QList<QByteArray> enums = {});
|
||||||
~MockProperty() = default;
|
~MockProperty() = default;
|
||||||
|
|
||||||
MockObject *obj;
|
MockObject *obj;
|
||||||
|
@ -35,7 +35,7 @@ public:
|
||||||
uint32_t flags;
|
uint32_t flags;
|
||||||
QString name;
|
QString name;
|
||||||
uint64_t value;
|
uint64_t value;
|
||||||
QVector<QByteArray> enums;
|
QList<QByteArray> enums;
|
||||||
};
|
};
|
||||||
|
|
||||||
class MockPropertyBlob {
|
class MockPropertyBlob {
|
||||||
|
@ -60,7 +60,7 @@ public:
|
||||||
uint32_t getPropId(const QString &propName) const;
|
uint32_t getPropId(const QString &propName) const;
|
||||||
|
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
QVector<MockProperty> props;
|
QList<MockProperty> props;
|
||||||
MockGpu *gpu;
|
MockGpu *gpu;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ public:
|
||||||
drmModeConnection connection;
|
drmModeConnection connection;
|
||||||
uint32_t type;
|
uint32_t type;
|
||||||
std::shared_ptr<MockEncoder> encoder;
|
std::shared_ptr<MockEncoder> encoder;
|
||||||
QVector<drmModeModeInfo> modes;
|
QList<drmModeModeInfo> modes;
|
||||||
};
|
};
|
||||||
|
|
||||||
class MockEncoder : public MockObject {
|
class MockEncoder : public MockObject {
|
||||||
|
@ -141,7 +141,7 @@ struct Prop {
|
||||||
|
|
||||||
struct _drmModeAtomicReq {
|
struct _drmModeAtomicReq {
|
||||||
bool legacyEmulation = false;
|
bool legacyEmulation = false;
|
||||||
QVector<Prop> props;
|
QList<Prop> props;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define MOCKDRM_DEVICE_CAP_ATOMIC 0xFF
|
#define MOCKDRM_DEVICE_CAP_ATOMIC 0xFF
|
||||||
|
@ -165,28 +165,28 @@ public:
|
||||||
QMap<uint32_t, uint64_t> deviceCaps;
|
QMap<uint32_t, uint64_t> deviceCaps;
|
||||||
|
|
||||||
uint32_t idCounter = 1;
|
uint32_t idCounter = 1;
|
||||||
QVector<MockObject*> objects;
|
QList<MockObject *> objects;
|
||||||
|
|
||||||
QVector<std::shared_ptr<MockConnector>> connectors;
|
QList<std::shared_ptr<MockConnector>> connectors;
|
||||||
QVector<drmModeConnectorPtr> drmConnectors;
|
QList<drmModeConnectorPtr> drmConnectors;
|
||||||
|
|
||||||
QVector<std::shared_ptr<MockEncoder>> encoders;
|
QList<std::shared_ptr<MockEncoder>> encoders;
|
||||||
QVector<drmModeEncoderPtr> drmEncoders;
|
QList<drmModeEncoderPtr> drmEncoders;
|
||||||
|
|
||||||
QVector<std::shared_ptr<MockCrtc>> crtcs;
|
QList<std::shared_ptr<MockCrtc>> crtcs;
|
||||||
QVector<drmModeCrtcPtr> drmCrtcs;
|
QList<drmModeCrtcPtr> drmCrtcs;
|
||||||
|
|
||||||
QVector<std::shared_ptr<MockPlane>> planes;
|
QList<std::shared_ptr<MockPlane>> planes;
|
||||||
QVector<drmModePlanePtr> drmPlanes;
|
QList<drmModePlanePtr> drmPlanes;
|
||||||
|
|
||||||
QVector<MockFb *> fbs;
|
QList<MockFb *> fbs;
|
||||||
std::vector<std::unique_ptr<MockPropertyBlob>> propertyBlobs;
|
std::vector<std::unique_ptr<MockPropertyBlob>> propertyBlobs;
|
||||||
|
|
||||||
QVector<drmModeResPtr> resPtrs;
|
QList<drmModeResPtr> resPtrs;
|
||||||
QVector<drmModePropertyPtr> drmProps;
|
QList<drmModePropertyPtr> drmProps;
|
||||||
QVector<drmModePropertyBlobPtr> drmPropertyBlobs;
|
QList<drmModePropertyBlobPtr> drmPropertyBlobs;
|
||||||
QVector<drmModeObjectPropertiesPtr> drmObjectProperties;
|
QList<drmModeObjectPropertiesPtr> drmObjectProperties;
|
||||||
QVector<drmModePlaneResPtr> drmPlaneRes;
|
QList<drmModePlaneResPtr> drmPlaneRes;
|
||||||
std::mutex m_mutex;
|
std::mutex m_mutex;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -511,7 +511,7 @@ void ActivationTest::stackScreensHorizontally()
|
||||||
// Process pending wl_output bind requests before destroying all outputs.
|
// Process pending wl_output bind requests before destroying all outputs.
|
||||||
QTest::qWait(1);
|
QTest::qWait(1);
|
||||||
|
|
||||||
const QVector<QRect> screenGeometries{
|
const QList<QRect> screenGeometries{
|
||||||
QRect(0, 0, 1280, 1024),
|
QRect(0, 0, 1280, 1024),
|
||||||
QRect(1280, 0, 1280, 1024),
|
QRect(1280, 0, 1280, 1024),
|
||||||
};
|
};
|
||||||
|
@ -523,7 +523,7 @@ void ActivationTest::stackScreensVertically()
|
||||||
// Process pending wl_output bind requests before destroying all outputs.
|
// Process pending wl_output bind requests before destroying all outputs.
|
||||||
QTest::qWait(1);
|
QTest::qWait(1);
|
||||||
|
|
||||||
const QVector<QRect> screenGeometries{
|
const QList<QRect> screenGeometries{
|
||||||
QRect(0, 0, 1280, 1024),
|
QRect(0, 0, 1280, 1024),
|
||||||
QRect(0, 1024, 1280, 1024),
|
QRect(0, 1024, 1280, 1024),
|
||||||
};
|
};
|
||||||
|
|
|
@ -190,10 +190,10 @@ void TestDbusInterface::testGetWindowInfoXdgShellClient()
|
||||||
// not testing shaded as that's X11
|
// not testing shaded as that's X11
|
||||||
// not testing fullscreen, maximizeHorizontal, maximizeVertical and noBorder as those require window geometry changes
|
// not testing fullscreen, maximizeHorizontal, maximizeVertical and noBorder as those require window geometry changes
|
||||||
|
|
||||||
const QVector<VirtualDesktop *> desktops = VirtualDesktopManager::self()->desktops();
|
const QList<VirtualDesktop *> desktops = VirtualDesktopManager::self()->desktops();
|
||||||
QCOMPARE(window->desktops(), QVector<VirtualDesktop *>{desktops[0]});
|
QCOMPARE(window->desktops(), QList<VirtualDesktop *>{desktops[0]});
|
||||||
workspace()->sendWindowToDesktops(window, {desktops[1]}, false);
|
workspace()->sendWindowToDesktops(window, {desktops[1]}, false);
|
||||||
QCOMPARE(window->desktops(), QVector<VirtualDesktop *>{desktops[1]});
|
QCOMPARE(window->desktops(), QList<VirtualDesktop *>{desktops[1]});
|
||||||
reply = getWindowInfo(window->internalId());
|
reply = getWindowInfo(window->internalId());
|
||||||
reply.waitForFinished();
|
reply.waitForFinished();
|
||||||
QCOMPARE(reply.value().value(QStringLiteral("desktops")).toStringList(), window->desktopIds());
|
QCOMPARE(reply.value().value(QStringLiteral("desktops")).toStringList(), window->desktopIds());
|
||||||
|
|
|
@ -138,7 +138,7 @@ void TranslucencyTest::testMoveAfterDesktopChange()
|
||||||
// let's send the window to desktop 2
|
// let's send the window to desktop 2
|
||||||
VirtualDesktopManager *vds = VirtualDesktopManager::self();
|
VirtualDesktopManager *vds = VirtualDesktopManager::self();
|
||||||
vds->setCount(2);
|
vds->setCount(2);
|
||||||
const QVector<VirtualDesktop *> desktops = vds->desktops();
|
const QList<VirtualDesktop *> desktops = vds->desktops();
|
||||||
workspace()->sendWindowToDesktops(window, {desktops[1]}, false);
|
workspace()->sendWindowToDesktops(window, {desktops[1]}, false);
|
||||||
vds->setCurrent(desktops[1]);
|
vds->setCurrent(desktops[1]);
|
||||||
QVERIFY(!m_translucencyEffect->isActive());
|
QVERIFY(!m_translucencyEffect->isActive());
|
||||||
|
|
|
@ -357,9 +357,9 @@ void InputMethodTest::testSwitchFocusedSurfaces()
|
||||||
QSignalSpy activateSpy(kwinApp()->inputMethod(), &InputMethod::activeChanged);
|
QSignalSpy activateSpy(kwinApp()->inputMethod(), &InputMethod::activeChanged);
|
||||||
std::unique_ptr<KWayland::Client::TextInput> textInput(Test::waylandTextInputManager()->createTextInput(Test::waylandSeat()));
|
std::unique_ptr<KWayland::Client::TextInput> textInput(Test::waylandTextInputManager()->createTextInput(Test::waylandSeat()));
|
||||||
|
|
||||||
QVector<Window *> windows;
|
QList<Window *> windows;
|
||||||
std::vector<std::unique_ptr<KWayland::Client::Surface>> surfaces;
|
std::vector<std::unique_ptr<KWayland::Client::Surface>> surfaces;
|
||||||
QVector<Test::XdgToplevel *> toplevels;
|
QList<Test::XdgToplevel *> toplevels;
|
||||||
// We create 3 surfaces
|
// We create 3 surfaces
|
||||||
for (int i = 0; i < 3; ++i) {
|
for (int i = 0; i < 3; ++i) {
|
||||||
std::unique_ptr<KWayland::Client::Surface> surface = Test::createSurface();
|
std::unique_ptr<KWayland::Client::Surface> surface = Test::createSurface();
|
||||||
|
|
|
@ -212,9 +212,9 @@ void Test::FractionalScaleV1::wp_fractional_scale_v1_preferred_scale(uint32_t sc
|
||||||
m_preferredScale = scale;
|
m_preferredScale = scale;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Test::setOutputConfig(const QVector<QRect> &geometries)
|
void Test::setOutputConfig(const QList<QRect> &geometries)
|
||||||
{
|
{
|
||||||
QVector<VirtualBackend::OutputInfo> converted;
|
QList<VirtualBackend::OutputInfo> converted;
|
||||||
std::transform(geometries.begin(), geometries.end(), std::back_inserter(converted), [](const auto &geometry) {
|
std::transform(geometries.begin(), geometries.end(), std::back_inserter(converted), [](const auto &geometry) {
|
||||||
return VirtualBackend::OutputInfo{
|
return VirtualBackend::OutputInfo{
|
||||||
.geometry = geometry,
|
.geometry = geometry,
|
||||||
|
@ -223,9 +223,9 @@ void Test::setOutputConfig(const QVector<QRect> &geometries)
|
||||||
static_cast<VirtualBackend *>(kwinApp()->outputBackend())->setVirtualOutputs(converted);
|
static_cast<VirtualBackend *>(kwinApp()->outputBackend())->setVirtualOutputs(converted);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Test::setOutputConfig(const QVector<OutputInfo> &infos)
|
void Test::setOutputConfig(const QList<OutputInfo> &infos)
|
||||||
{
|
{
|
||||||
QVector<VirtualBackend::OutputInfo> converted;
|
QList<VirtualBackend::OutputInfo> converted;
|
||||||
std::transform(infos.begin(), infos.end(), std::back_inserter(converted), [](const auto &info) {
|
std::transform(infos.begin(), infos.end(), std::back_inserter(converted), [](const auto &info) {
|
||||||
return VirtualBackend::OutputInfo{
|
return VirtualBackend::OutputInfo{
|
||||||
.geometry = info.geometry,
|
.geometry = info.geometry,
|
||||||
|
|
|
@ -637,10 +637,10 @@ KWayland::Client::PointerConstraints *waylandPointerConstraints();
|
||||||
KWayland::Client::AppMenuManager *waylandAppMenuManager();
|
KWayland::Client::AppMenuManager *waylandAppMenuManager();
|
||||||
WaylandOutputManagementV2 *waylandOutputManagementV2();
|
WaylandOutputManagementV2 *waylandOutputManagementV2();
|
||||||
KWayland::Client::TextInputManager *waylandTextInputManager();
|
KWayland::Client::TextInputManager *waylandTextInputManager();
|
||||||
QVector<KWayland::Client::Output *> waylandOutputs();
|
QList<KWayland::Client::Output *> waylandOutputs();
|
||||||
KWayland::Client::Output *waylandOutput(const QString &name);
|
KWayland::Client::Output *waylandOutput(const QString &name);
|
||||||
ScreencastingV1 *screencasting();
|
ScreencastingV1 *screencasting();
|
||||||
QVector<WaylandOutputDeviceV2 *> waylandOutputDevicesV2();
|
QList<WaylandOutputDeviceV2 *> waylandOutputDevicesV2();
|
||||||
FakeInput *waylandFakeInput();
|
FakeInput *waylandFakeInput();
|
||||||
|
|
||||||
bool waitForWaylandSurface(Window *window);
|
bool waitForWaylandSurface(Window *window);
|
||||||
|
@ -839,8 +839,8 @@ struct OutputInfo
|
||||||
double scale = 1;
|
double scale = 1;
|
||||||
bool internal = false;
|
bool internal = false;
|
||||||
};
|
};
|
||||||
void setOutputConfig(const QVector<QRect> &geometries);
|
void setOutputConfig(const QList<QRect> &geometries);
|
||||||
void setOutputConfig(const QVector<OutputInfo> &infos);
|
void setOutputConfig(const QList<OutputInfo> &infos);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -237,11 +237,11 @@ void KWinBindingsTest::testWindowToDesktop()
|
||||||
};
|
};
|
||||||
invokeShortcut(desktop);
|
invokeShortcut(desktop);
|
||||||
QVERIFY(desktopsChangedSpy.wait());
|
QVERIFY(desktopsChangedSpy.wait());
|
||||||
QCOMPARE(window->desktops(), QVector<VirtualDesktop *>{desktops.at(desktop - 1)});
|
QCOMPARE(window->desktops(), QList<VirtualDesktop *>{desktops.at(desktop - 1)});
|
||||||
// back to desktop 1
|
// back to desktop 1
|
||||||
invokeShortcut(1);
|
invokeShortcut(1);
|
||||||
QVERIFY(desktopsChangedSpy.wait());
|
QVERIFY(desktopsChangedSpy.wait());
|
||||||
QCOMPARE(window->desktops(), QVector<VirtualDesktop *>{desktops.at(0)});
|
QCOMPARE(window->desktops(), QList<VirtualDesktop *>{desktops.at(0)});
|
||||||
// invoke with one desktop too many
|
// invoke with one desktop too many
|
||||||
invokeShortcut(desktop + 1);
|
invokeShortcut(desktop + 1);
|
||||||
// that should fail
|
// that should fail
|
||||||
|
|
|
@ -190,7 +190,7 @@ void PlasmaSurfaceTest::testOSDPlacement()
|
||||||
QCOMPARE(window->frameGeometry(), QRect(1280 / 2 - 100 / 2, 2 * 1024 / 3 - 50 / 2, 100, 50));
|
QCOMPARE(window->frameGeometry(), QRect(1280 / 2 - 100 / 2, 2 * 1024 / 3 - 50 / 2, 100, 50));
|
||||||
|
|
||||||
// change the screen size
|
// change the screen size
|
||||||
const QVector<QRect> geometries{QRect(0, 0, 1280, 1024), QRect(1280, 0, 1280, 1024)};
|
const QList<QRect> geometries{QRect(0, 0, 1280, 1024), QRect(1280, 0, 1280, 1024)};
|
||||||
Test::setOutputConfig(geometries);
|
Test::setOutputConfig(geometries);
|
||||||
const auto outputs = workspace()->outputs();
|
const auto outputs = workspace()->outputs();
|
||||||
QCOMPARE(outputs.count(), 2);
|
QCOMPARE(outputs.count(), 2);
|
||||||
|
|
|
@ -41,7 +41,7 @@ namespace KWin
|
||||||
static PlatformCursorImage loadReferenceThemeCursor_helper(const KXcursorTheme &theme,
|
static PlatformCursorImage loadReferenceThemeCursor_helper(const KXcursorTheme &theme,
|
||||||
const QByteArray &name)
|
const QByteArray &name)
|
||||||
{
|
{
|
||||||
const QVector<KXcursorSprite> sprites = theme.shape(name);
|
const QList<KXcursorSprite> sprites = theme.shape(name);
|
||||||
if (sprites.isEmpty()) {
|
if (sprites.isEmpty()) {
|
||||||
return PlatformCursorImage();
|
return PlatformCursorImage();
|
||||||
}
|
}
|
||||||
|
@ -63,7 +63,7 @@ static PlatformCursorImage loadReferenceThemeCursor(const QByteArray &name)
|
||||||
return platformCursorImage;
|
return platformCursorImage;
|
||||||
}
|
}
|
||||||
|
|
||||||
const QVector<QByteArray> alternativeNames = Cursor::cursorAlternativeNames(name);
|
const QList<QByteArray> alternativeNames = Cursor::cursorAlternativeNames(name);
|
||||||
for (const QByteArray &alternativeName : alternativeNames) {
|
for (const QByteArray &alternativeName : alternativeNames) {
|
||||||
platformCursorImage = loadReferenceThemeCursor_helper(theme, alternativeName);
|
platformCursorImage = loadReferenceThemeCursor_helper(theme, alternativeName);
|
||||||
if (!platformCursorImage.isNull()) {
|
if (!platformCursorImage.isNull()) {
|
||||||
|
@ -1535,7 +1535,7 @@ void PointerInputTest::testConfineToScreenGeometry()
|
||||||
// after moving it to off-screen area
|
// after moving it to off-screen area
|
||||||
|
|
||||||
// setup screen layout
|
// setup screen layout
|
||||||
const QVector<QRect> geometries{
|
const QList<QRect> geometries{
|
||||||
QRect(0, 0, 1280, 1024),
|
QRect(0, 0, 1280, 1024),
|
||||||
QRect(1280, 0, 1280, 1024),
|
QRect(1280, 0, 1280, 1024),
|
||||||
QRect(2560, 0, 1280, 1024),
|
QRect(2560, 0, 1280, 1024),
|
||||||
|
|
|
@ -81,7 +81,7 @@ void ScreenChangesTest::testScreenAddRemove()
|
||||||
outputAnnouncedSpy.clear();
|
outputAnnouncedSpy.clear();
|
||||||
|
|
||||||
// let's announce a new output
|
// let's announce a new output
|
||||||
const QVector<QRect> geometries{QRect(0, 0, 1280, 1024), QRect(1280, 0, 1280, 1024)};
|
const QList<QRect> geometries{QRect(0, 0, 1280, 1024), QRect(1280, 0, 1280, 1024)};
|
||||||
Test::setOutputConfig(geometries);
|
Test::setOutputConfig(geometries);
|
||||||
auto outputs = workspace()->outputs();
|
auto outputs = workspace()->outputs();
|
||||||
QCOMPARE(outputs.count(), 2);
|
QCOMPARE(outputs.count(), 2);
|
||||||
|
@ -145,7 +145,7 @@ void ScreenChangesTest::testScreenAddRemove()
|
||||||
QSignalSpy o1RemovedSpy(o1.get(), &KWayland::Client::Output::removed);
|
QSignalSpy o1RemovedSpy(o1.get(), &KWayland::Client::Output::removed);
|
||||||
QSignalSpy o2RemovedSpy(o2.get(), &KWayland::Client::Output::removed);
|
QSignalSpy o2RemovedSpy(o2.get(), &KWayland::Client::Output::removed);
|
||||||
|
|
||||||
const QVector<QRect> geometries2{QRect(0, 0, 1280, 1024)};
|
const QList<QRect> geometries2{QRect(0, 0, 1280, 1024)};
|
||||||
Test::setOutputConfig(geometries2);
|
Test::setOutputConfig(geometries2);
|
||||||
outputs = workspace()->outputs();
|
outputs = workspace()->outputs();
|
||||||
QCOMPARE(outputs.count(), 1);
|
QCOMPARE(outputs.count(), 1);
|
||||||
|
|
|
@ -117,14 +117,14 @@ void ScreensTest::testCurrent()
|
||||||
|
|
||||||
void ScreensTest::testCurrentWithFollowsMouse_data()
|
void ScreensTest::testCurrentWithFollowsMouse_data()
|
||||||
{
|
{
|
||||||
QTest::addColumn<QVector<QRect>>("geometries");
|
QTest::addColumn<QList<QRect>>("geometries");
|
||||||
QTest::addColumn<QPoint>("cursorPos");
|
QTest::addColumn<QPoint>("cursorPos");
|
||||||
QTest::addColumn<int>("expectedId");
|
QTest::addColumn<int>("expectedId");
|
||||||
|
|
||||||
QTest::newRow("cloned") << QVector<QRect>{{QRect{0, 0, 200, 100}, QRect{0, 0, 200, 100}}} << QPoint(50, 50) << 0;
|
QTest::newRow("cloned") << QList<QRect>{{QRect{0, 0, 200, 100}, QRect{0, 0, 200, 100}}} << QPoint(50, 50) << 0;
|
||||||
QTest::newRow("adjacent-0") << QVector<QRect>{{QRect{0, 0, 200, 100}, QRect{200, 100, 400, 300}}} << QPoint(199, 99) << 0;
|
QTest::newRow("adjacent-0") << QList<QRect>{{QRect{0, 0, 200, 100}, QRect{200, 100, 400, 300}}} << QPoint(199, 99) << 0;
|
||||||
QTest::newRow("adjacent-1") << QVector<QRect>{{QRect{0, 0, 200, 100}, QRect{200, 100, 400, 300}}} << QPoint(200, 100) << 1;
|
QTest::newRow("adjacent-1") << QList<QRect>{{QRect{0, 0, 200, 100}, QRect{200, 100, 400, 300}}} << QPoint(200, 100) << 1;
|
||||||
QTest::newRow("gap") << QVector<QRect>{{QRect{0, 0, 10, 20}, QRect{20, 40, 10, 20}}} << QPoint(15, 30) << 1;
|
QTest::newRow("gap") << QList<QRect>{{QRect{0, 0, 10, 20}, QRect{20, 40, 10, 20}}} << QPoint(15, 30) << 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreensTest::testCurrentWithFollowsMouse()
|
void ScreensTest::testCurrentWithFollowsMouse()
|
||||||
|
@ -135,7 +135,7 @@ void ScreensTest::testCurrentWithFollowsMouse()
|
||||||
group.sync();
|
group.sync();
|
||||||
workspace()->slotReconfigure();
|
workspace()->slotReconfigure();
|
||||||
|
|
||||||
QFETCH(QVector<QRect>, geometries);
|
QFETCH(QList<QRect>, geometries);
|
||||||
Test::setOutputConfig(geometries);
|
Test::setOutputConfig(geometries);
|
||||||
|
|
||||||
QFETCH(QPoint, cursorPos);
|
QFETCH(QPoint, cursorPos);
|
||||||
|
@ -148,19 +148,19 @@ void ScreensTest::testCurrentWithFollowsMouse()
|
||||||
|
|
||||||
void ScreensTest::testCurrentPoint_data()
|
void ScreensTest::testCurrentPoint_data()
|
||||||
{
|
{
|
||||||
QTest::addColumn<QVector<QRect>>("geometries");
|
QTest::addColumn<QList<QRect>>("geometries");
|
||||||
QTest::addColumn<QPoint>("cursorPos");
|
QTest::addColumn<QPoint>("cursorPos");
|
||||||
QTest::addColumn<int>("expectedId");
|
QTest::addColumn<int>("expectedId");
|
||||||
|
|
||||||
QTest::newRow("cloned") << QVector<QRect>{{QRect{0, 0, 200, 100}, QRect{0, 0, 200, 100}}} << QPoint(50, 50) << 0;
|
QTest::newRow("cloned") << QList<QRect>{{QRect{0, 0, 200, 100}, QRect{0, 0, 200, 100}}} << QPoint(50, 50) << 0;
|
||||||
QTest::newRow("adjacent-0") << QVector<QRect>{{QRect{0, 0, 200, 100}, QRect{200, 100, 400, 300}}} << QPoint(199, 99) << 0;
|
QTest::newRow("adjacent-0") << QList<QRect>{{QRect{0, 0, 200, 100}, QRect{200, 100, 400, 300}}} << QPoint(199, 99) << 0;
|
||||||
QTest::newRow("adjacent-1") << QVector<QRect>{{QRect{0, 0, 200, 100}, QRect{200, 100, 400, 300}}} << QPoint(200, 100) << 1;
|
QTest::newRow("adjacent-1") << QList<QRect>{{QRect{0, 0, 200, 100}, QRect{200, 100, 400, 300}}} << QPoint(200, 100) << 1;
|
||||||
QTest::newRow("gap") << QVector<QRect>{{QRect{0, 0, 10, 20}, QRect{20, 40, 10, 20}}} << QPoint(15, 30) << 1;
|
QTest::newRow("gap") << QList<QRect>{{QRect{0, 0, 10, 20}, QRect{20, 40, 10, 20}}} << QPoint(15, 30) << 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreensTest::testCurrentPoint()
|
void ScreensTest::testCurrentPoint()
|
||||||
{
|
{
|
||||||
QFETCH(QVector<QRect>, geometries);
|
QFETCH(QList<QRect>, geometries);
|
||||||
Test::setOutputConfig(geometries);
|
Test::setOutputConfig(geometries);
|
||||||
|
|
||||||
// Disable "active screen follows mouse"
|
// Disable "active screen follows mouse"
|
||||||
|
|
|
@ -427,7 +427,7 @@ void StrutsTest::test363804()
|
||||||
{
|
{
|
||||||
// this test verifies the condition described in BUG 363804
|
// this test verifies the condition described in BUG 363804
|
||||||
// two screens in a vertical setup, aligned to right border with panel on the bottom screen
|
// two screens in a vertical setup, aligned to right border with panel on the bottom screen
|
||||||
const QVector<QRect> geometries{QRect(0, 0, 1920, 1080), QRect(554, 1080, 1366, 768)};
|
const QList<QRect> geometries{QRect(0, 0, 1920, 1080), QRect(554, 1080, 1366, 768)};
|
||||||
Test::setOutputConfig(geometries);
|
Test::setOutputConfig(geometries);
|
||||||
QCOMPARE(workspace()->geometry(), QRect(0, 0, 1920, 1848));
|
QCOMPARE(workspace()->geometry(), QRect(0, 0, 1920, 1848));
|
||||||
|
|
||||||
|
@ -504,7 +504,7 @@ void StrutsTest::testLeftScreenSmallerBottomAligned()
|
||||||
{
|
{
|
||||||
// this test verifies a two screen setup with the left screen smaller than the right and bottom aligned
|
// this test verifies a two screen setup with the left screen smaller than the right and bottom aligned
|
||||||
// the panel is on the top of the left screen, thus not at 0/0
|
// the panel is on the top of the left screen, thus not at 0/0
|
||||||
const QVector<QRect> geometries{QRect(0, 282, 1366, 768), QRect(1366, 0, 1680, 1050)};
|
const QList<QRect> geometries{QRect(0, 282, 1366, 768), QRect(1366, 0, 1680, 1050)};
|
||||||
Test::setOutputConfig(geometries);
|
Test::setOutputConfig(geometries);
|
||||||
QCOMPARE(workspace()->geometry(), QRect(0, 0, 3046, 1050));
|
QCOMPARE(workspace()->geometry(), QRect(0, 0, 3046, 1050));
|
||||||
|
|
||||||
|
@ -585,7 +585,7 @@ void StrutsTest::testWindowMoveWithPanelBetweenScreens()
|
||||||
// to the other even if there is a panel in between.
|
// to the other even if there is a panel in between.
|
||||||
|
|
||||||
// left screen must be smaller than right screen
|
// left screen must be smaller than right screen
|
||||||
const QVector<QRect> geometries{QRect(0, 282, 1366, 768), QRect(1366, 0, 1680, 1050)};
|
const QList<QRect> geometries{QRect(0, 282, 1366, 768), QRect(1366, 0, 1680, 1050)};
|
||||||
Test::setOutputConfig(geometries);
|
Test::setOutputConfig(geometries);
|
||||||
QCOMPARE(workspace()->geometry(), QRect(0, 0, 3046, 1050));
|
QCOMPARE(workspace()->geometry(), QRect(0, 0, 3046, 1050));
|
||||||
|
|
||||||
|
|
|
@ -280,8 +280,8 @@ static struct
|
||||||
KWayland::Client::Registry *registry = nullptr;
|
KWayland::Client::Registry *registry = nullptr;
|
||||||
WaylandOutputManagementV2 *outputManagementV2 = nullptr;
|
WaylandOutputManagementV2 *outputManagementV2 = nullptr;
|
||||||
QThread *thread = nullptr;
|
QThread *thread = nullptr;
|
||||||
QVector<KWayland::Client::Output *> outputs;
|
QList<KWayland::Client::Output *> outputs;
|
||||||
QVector<WaylandOutputDeviceV2 *> outputDevicesV2;
|
QList<WaylandOutputDeviceV2 *> outputDevicesV2;
|
||||||
IdleInhibitManagerV1 *idleInhibitManagerV1 = nullptr;
|
IdleInhibitManagerV1 *idleInhibitManagerV1 = nullptr;
|
||||||
KWayland::Client::AppMenuManager *appMenu = nullptr;
|
KWayland::Client::AppMenuManager *appMenu = nullptr;
|
||||||
XdgDecorationManagerV1 *xdgDecorationManagerV1 = nullptr;
|
XdgDecorationManagerV1 *xdgDecorationManagerV1 = nullptr;
|
||||||
|
@ -697,7 +697,7 @@ TextInputManagerV3 *waylandTextInputManagerV3()
|
||||||
return s_waylandConnection.textInputManagerV3;
|
return s_waylandConnection.textInputManagerV3;
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector<KWayland::Client::Output *> waylandOutputs()
|
QList<KWayland::Client::Output *> waylandOutputs()
|
||||||
{
|
{
|
||||||
return s_waylandConnection.outputs;
|
return s_waylandConnection.outputs;
|
||||||
}
|
}
|
||||||
|
@ -717,7 +717,7 @@ ScreencastingV1 *screencasting()
|
||||||
return s_waylandConnection.screencastingV1;
|
return s_waylandConnection.screencastingV1;
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector<KWin::Test::WaylandOutputDeviceV2 *> waylandOutputDevicesV2()
|
QList<KWin::Test::WaylandOutputDeviceV2 *> waylandOutputDevicesV2()
|
||||||
{
|
{
|
||||||
return s_waylandConnection.outputDevicesV2;
|
return s_waylandConnection.outputDevicesV2;
|
||||||
}
|
}
|
||||||
|
@ -1131,7 +1131,7 @@ bool renderNodeAvailable()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector<drmDevice *> devices(deviceCount);
|
QList<drmDevice *> devices(deviceCount);
|
||||||
if (drmGetDevices2(0, devices.data(), devices.size()) < 0) {
|
if (drmGetDevices2(0, devices.data(), devices.size()) < 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -160,7 +160,7 @@ void VirtualDesktopTest::testWindowOnMultipleDesktops()
|
||||||
std::unique_ptr<Test::XdgToplevel> shellSurface(Test::createXdgToplevelSurface(surface.get()));
|
std::unique_ptr<Test::XdgToplevel> shellSurface(Test::createXdgToplevelSurface(surface.get()));
|
||||||
auto window = Test::renderAndWaitForShown(surface.get(), QSize(100, 50), Qt::blue);
|
auto window = Test::renderAndWaitForShown(surface.get(), QSize(100, 50), Qt::blue);
|
||||||
QVERIFY(window);
|
QVERIFY(window);
|
||||||
QCOMPARE(window->desktops(), (QVector<VirtualDesktop *>{desktops.at(2)}));
|
QCOMPARE(window->desktops(), (QList<VirtualDesktop *>{desktops.at(2)}));
|
||||||
|
|
||||||
// Set the window on desktop 2 as well
|
// Set the window on desktop 2 as well
|
||||||
window->enterDesktop(VirtualDesktopManager::self()->desktopForX11Id(2));
|
window->enterDesktop(VirtualDesktopManager::self()->desktopForX11Id(2));
|
||||||
|
@ -170,10 +170,10 @@ void VirtualDesktopTest::testWindowOnMultipleDesktops()
|
||||||
|
|
||||||
// leave desktop 3
|
// leave desktop 3
|
||||||
window->leaveDesktop(desktops.at(2));
|
window->leaveDesktop(desktops.at(2));
|
||||||
QCOMPARE(window->desktops(), (QVector<VirtualDesktop *>{desktops.at(1)}));
|
QCOMPARE(window->desktops(), (QList<VirtualDesktop *>{desktops.at(1)}));
|
||||||
// leave desktop 2
|
// leave desktop 2
|
||||||
window->leaveDesktop(desktops.at(1));
|
window->leaveDesktop(desktops.at(1));
|
||||||
QCOMPARE(window->desktops(), QVector<VirtualDesktop *>{});
|
QCOMPARE(window->desktops(), QList<VirtualDesktop *>{});
|
||||||
// we should be on all desktops now
|
// we should be on all desktops now
|
||||||
QVERIFY(window->isOnAllDesktops());
|
QVERIFY(window->isOnAllDesktops());
|
||||||
// put on desktop 1
|
// put on desktop 1
|
||||||
|
|
|
@ -863,7 +863,7 @@ void TestXdgShellWindow::testSendClientWithTransientToDesktop()
|
||||||
|
|
||||||
VirtualDesktopManager *vds = VirtualDesktopManager::self();
|
VirtualDesktopManager *vds = VirtualDesktopManager::self();
|
||||||
vds->setCount(2);
|
vds->setCount(2);
|
||||||
const QVector<VirtualDesktop *> desktops = vds->desktops();
|
const QList<VirtualDesktop *> desktops = vds->desktops();
|
||||||
|
|
||||||
std::unique_ptr<KWayland::Client::Surface> surface{Test::createSurface()};
|
std::unique_ptr<KWayland::Client::Surface> surface{Test::createSurface()};
|
||||||
std::unique_ptr<Test::XdgToplevel> shellSurface(Test::createXdgToplevelSurface(surface.get()));
|
std::unique_ptr<Test::XdgToplevel> shellSurface(Test::createXdgToplevelSurface(surface.get()));
|
||||||
|
@ -883,15 +883,15 @@ void TestXdgShellWindow::testSendClientWithTransientToDesktop()
|
||||||
QVERIFY(window->transients().contains(transient));
|
QVERIFY(window->transients().contains(transient));
|
||||||
|
|
||||||
// initially, the parent and the transient are on the first virtual desktop
|
// initially, the parent and the transient are on the first virtual desktop
|
||||||
QCOMPARE(window->desktops(), QVector<VirtualDesktop *>{desktops[0]});
|
QCOMPARE(window->desktops(), QList<VirtualDesktop *>{desktops[0]});
|
||||||
QVERIFY(!window->isOnAllDesktops());
|
QVERIFY(!window->isOnAllDesktops());
|
||||||
QCOMPARE(transient->desktops(), QVector<VirtualDesktop *>{desktops[0]});
|
QCOMPARE(transient->desktops(), QList<VirtualDesktop *>{desktops[0]});
|
||||||
QVERIFY(!transient->isOnAllDesktops());
|
QVERIFY(!transient->isOnAllDesktops());
|
||||||
|
|
||||||
// send the transient to the second virtual desktop
|
// send the transient to the second virtual desktop
|
||||||
workspace()->slotWindowToDesktop(desktops[1]);
|
workspace()->slotWindowToDesktop(desktops[1]);
|
||||||
QCOMPARE(window->desktops(), QVector<VirtualDesktop *>{desktops[0]});
|
QCOMPARE(window->desktops(), QList<VirtualDesktop *>{desktops[0]});
|
||||||
QCOMPARE(transient->desktops(), QVector<VirtualDesktop *>{desktops[1]});
|
QCOMPARE(transient->desktops(), QList<VirtualDesktop *>{desktops[1]});
|
||||||
|
|
||||||
// activate c
|
// activate c
|
||||||
workspace()->activateWindow(window);
|
workspace()->activateWindow(window);
|
||||||
|
@ -899,13 +899,13 @@ void TestXdgShellWindow::testSendClientWithTransientToDesktop()
|
||||||
QVERIFY(window->isActive());
|
QVERIFY(window->isActive());
|
||||||
|
|
||||||
// and send it to the desktop it's already on
|
// and send it to the desktop it's already on
|
||||||
QCOMPARE(window->desktops(), QVector<VirtualDesktop *>{desktops[0]});
|
QCOMPARE(window->desktops(), QList<VirtualDesktop *>{desktops[0]});
|
||||||
QCOMPARE(transient->desktops(), QVector<VirtualDesktop *>{desktops[1]});
|
QCOMPARE(transient->desktops(), QList<VirtualDesktop *>{desktops[1]});
|
||||||
workspace()->slotWindowToDesktop(desktops[0]);
|
workspace()->slotWindowToDesktop(desktops[0]);
|
||||||
|
|
||||||
// which should move the transient back to the desktop
|
// which should move the transient back to the desktop
|
||||||
QCOMPARE(window->desktops(), QVector<VirtualDesktop *>{desktops[0]});
|
QCOMPARE(window->desktops(), QList<VirtualDesktop *>{desktops[0]});
|
||||||
QCOMPARE(transient->desktops(), QVector<VirtualDesktop *>{desktops[0]});
|
QCOMPARE(transient->desktops(), QList<VirtualDesktop *>{desktops[0]});
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestXdgShellWindow::testMinimizeWindowWithTransients()
|
void TestXdgShellWindow::testMinimizeWindowWithTransients()
|
||||||
|
|
|
@ -966,10 +966,10 @@ void TestLibinputDevice::testSupportedButtons()
|
||||||
|
|
||||||
void TestLibinputDevice::testAlphaNumericKeyboard_data()
|
void TestLibinputDevice::testAlphaNumericKeyboard_data()
|
||||||
{
|
{
|
||||||
QTest::addColumn<QVector<quint32>>("supportedKeys");
|
QTest::addColumn<QList<quint32>>("supportedKeys");
|
||||||
QTest::addColumn<bool>("isAlpha");
|
QTest::addColumn<bool>("isAlpha");
|
||||||
|
|
||||||
QVector<quint32> keys;
|
QList<quint32> keys;
|
||||||
|
|
||||||
for (int i = KEY_1; i <= KEY_0; i++) {
|
for (int i = KEY_1; i <= KEY_0; i++) {
|
||||||
keys << i;
|
keys << i;
|
||||||
|
@ -1006,7 +1006,7 @@ void TestLibinputDevice::testAlphaNumericKeyboard_data()
|
||||||
|
|
||||||
void TestLibinputDevice::testAlphaNumericKeyboard()
|
void TestLibinputDevice::testAlphaNumericKeyboard()
|
||||||
{
|
{
|
||||||
QFETCH(QVector<quint32>, supportedKeys);
|
QFETCH(QList<quint32>, supportedKeys);
|
||||||
libinput_device device;
|
libinput_device device;
|
||||||
device.keyboard = true;
|
device.keyboard = true;
|
||||||
device.keys = supportedKeys;
|
device.keys = supportedKeys;
|
||||||
|
|
|
@ -11,9 +11,9 @@
|
||||||
#include <libinput.h>
|
#include <libinput.h>
|
||||||
|
|
||||||
#include <QByteArray>
|
#include <QByteArray>
|
||||||
|
#include <QList>
|
||||||
#include <QPointF>
|
#include <QPointF>
|
||||||
#include <QSizeF>
|
#include <QSizeF>
|
||||||
#include <QVector>
|
|
||||||
|
|
||||||
#include <array>
|
#include <array>
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
|
@ -74,7 +74,7 @@ struct libinput_device
|
||||||
quint32 scrollButton = 0;
|
quint32 scrollButton = 0;
|
||||||
int setScrollButtonReturnValue = 0;
|
int setScrollButtonReturnValue = 0;
|
||||||
Qt::MouseButtons supportedButtons;
|
Qt::MouseButtons supportedButtons;
|
||||||
QVector<quint32> keys;
|
QList<quint32> keys;
|
||||||
bool enabled = true;
|
bool enabled = true;
|
||||||
int setEnableModeReturnValue = 0;
|
int setEnableModeReturnValue = 0;
|
||||||
int setTapToClickReturnValue = 0;
|
int setTapToClickReturnValue = 0;
|
||||||
|
|
|
@ -201,7 +201,7 @@ static Version readVersion(const KConfigGroup &group, const char *entry)
|
||||||
if (parts.count() < 2) {
|
if (parts.count() < 2) {
|
||||||
return Version();
|
return Version();
|
||||||
}
|
}
|
||||||
QVector<qint64> versionParts;
|
QList<qint64> versionParts;
|
||||||
for (int i = 0; i < parts.count(); ++i) {
|
for (int i = 0; i < parts.count(); ++i) {
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
const auto value = parts.at(i).toLongLong(&ok);
|
const auto value = parts.at(i).toLongLong(&ok);
|
||||||
|
@ -227,10 +227,10 @@ void GLPlatformTest::testDetect()
|
||||||
s_gl->getString.renderer = driverGroup.readEntry("Renderer").toUtf8();
|
s_gl->getString.renderer = driverGroup.readEntry("Renderer").toUtf8();
|
||||||
s_gl->getString.version = driverGroup.readEntry("Version").toUtf8();
|
s_gl->getString.version = driverGroup.readEntry("Version").toUtf8();
|
||||||
s_gl->getString.shadingLanguageVersion = driverGroup.readEntry("ShadingLanguageVersion").toUtf8();
|
s_gl->getString.shadingLanguageVersion = driverGroup.readEntry("ShadingLanguageVersion").toUtf8();
|
||||||
s_gl->getString.extensions = QVector<QByteArray>{QByteArrayLiteral("GL_ARB_shader_objects"),
|
s_gl->getString.extensions = QList<QByteArray>{QByteArrayLiteral("GL_ARB_shader_objects"),
|
||||||
QByteArrayLiteral("GL_ARB_fragment_shader"),
|
QByteArrayLiteral("GL_ARB_fragment_shader"),
|
||||||
QByteArrayLiteral("GL_ARB_vertex_shader"),
|
QByteArrayLiteral("GL_ARB_vertex_shader"),
|
||||||
QByteArrayLiteral("GL_ARB_texture_non_power_of_two")};
|
QByteArrayLiteral("GL_ARB_texture_non_power_of_two")};
|
||||||
s_gl->getString.extensionsString = QByteArray();
|
s_gl->getString.extensionsString = QByteArray();
|
||||||
|
|
||||||
auto *gl = GLPlatform::instance();
|
auto *gl = GLPlatform::instance();
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
#define MOCK_GL_H
|
#define MOCK_GL_H
|
||||||
|
|
||||||
#include <QByteArray>
|
#include <QByteArray>
|
||||||
#include <QVector>
|
#include <QList>
|
||||||
|
|
||||||
struct MockGL
|
struct MockGL
|
||||||
{
|
{
|
||||||
|
@ -19,7 +19,7 @@ struct MockGL
|
||||||
QByteArray vendor;
|
QByteArray vendor;
|
||||||
QByteArray renderer;
|
QByteArray renderer;
|
||||||
QByteArray version;
|
QByteArray version;
|
||||||
QVector<QByteArray> extensions;
|
QList<QByteArray> extensions;
|
||||||
QByteArray extensionsString;
|
QByteArray extensionsString;
|
||||||
QByteArray shadingLanguageVersion;
|
QByteArray shadingLanguageVersion;
|
||||||
} getString;
|
} getString;
|
||||||
|
|
|
@ -843,7 +843,7 @@ void TestWaylandSurface::testOutput()
|
||||||
QVERIFY(surfaceCreatedSpy.wait());
|
QVERIFY(surfaceCreatedSpy.wait());
|
||||||
auto serverSurface = surfaceCreatedSpy.first().first().value<SurfaceInterface *>();
|
auto serverSurface = surfaceCreatedSpy.first().first().value<SurfaceInterface *>();
|
||||||
QVERIFY(serverSurface);
|
QVERIFY(serverSurface);
|
||||||
QCOMPARE(serverSurface->outputs(), QVector<OutputInterface *>());
|
QCOMPARE(serverSurface->outputs(), QList<OutputInterface *>());
|
||||||
|
|
||||||
// create another registry to get notified about added outputs
|
// create another registry to get notified about added outputs
|
||||||
KWayland::Client::Registry registry;
|
KWayland::Client::Registry registry;
|
||||||
|
@ -865,31 +865,31 @@ void TestWaylandSurface::testOutput()
|
||||||
m_display->dispatchEvents();
|
m_display->dispatchEvents();
|
||||||
|
|
||||||
// now enter it
|
// now enter it
|
||||||
serverSurface->setOutputs(QVector<OutputInterface *>{serverOutput.get()});
|
serverSurface->setOutputs(QList<OutputInterface *>{serverOutput.get()});
|
||||||
QCOMPARE(serverSurface->outputs(), QVector<OutputInterface *>{serverOutput.get()});
|
QCOMPARE(serverSurface->outputs(), QList<OutputInterface *>{serverOutput.get()});
|
||||||
QVERIFY(enteredSpy.wait());
|
QVERIFY(enteredSpy.wait());
|
||||||
QCOMPARE(enteredSpy.count(), 1);
|
QCOMPARE(enteredSpy.count(), 1);
|
||||||
QCOMPARE(enteredSpy.first().first().value<KWayland::Client::Output *>(), clientOutput.get());
|
QCOMPARE(enteredSpy.first().first().value<KWayland::Client::Output *>(), clientOutput.get());
|
||||||
QCOMPARE(s->outputs(), QVector<KWayland::Client::Output *>{clientOutput.get()});
|
QCOMPARE(s->outputs(), QList<KWayland::Client::Output *>{clientOutput.get()});
|
||||||
|
|
||||||
// adding to same should not trigger
|
// adding to same should not trigger
|
||||||
serverSurface->setOutputs(QVector<OutputInterface *>{serverOutput.get()});
|
serverSurface->setOutputs(QList<OutputInterface *>{serverOutput.get()});
|
||||||
|
|
||||||
// leave again
|
// leave again
|
||||||
serverSurface->setOutputs(QVector<OutputInterface *>());
|
serverSurface->setOutputs(QList<OutputInterface *>());
|
||||||
QCOMPARE(serverSurface->outputs(), QVector<OutputInterface *>());
|
QCOMPARE(serverSurface->outputs(), QList<OutputInterface *>());
|
||||||
QVERIFY(leftSpy.wait());
|
QVERIFY(leftSpy.wait());
|
||||||
QCOMPARE(enteredSpy.count(), 1);
|
QCOMPARE(enteredSpy.count(), 1);
|
||||||
QCOMPARE(leftSpy.count(), 1);
|
QCOMPARE(leftSpy.count(), 1);
|
||||||
QCOMPARE(leftSpy.first().first().value<KWayland::Client::Output *>(), clientOutput.get());
|
QCOMPARE(leftSpy.first().first().value<KWayland::Client::Output *>(), clientOutput.get());
|
||||||
QCOMPARE(s->outputs(), QVector<KWayland::Client::Output *>());
|
QCOMPARE(s->outputs(), QList<KWayland::Client::Output *>());
|
||||||
|
|
||||||
// leave again should not trigger
|
// leave again should not trigger
|
||||||
serverSurface->setOutputs(QVector<OutputInterface *>());
|
serverSurface->setOutputs(QList<OutputInterface *>());
|
||||||
|
|
||||||
// and enter again, just to verify
|
// and enter again, just to verify
|
||||||
serverSurface->setOutputs(QVector<OutputInterface *>{serverOutput.get()});
|
serverSurface->setOutputs(QList<OutputInterface *>{serverOutput.get()});
|
||||||
QCOMPARE(serverSurface->outputs(), QVector<OutputInterface *>{serverOutput.get()});
|
QCOMPARE(serverSurface->outputs(), QList<OutputInterface *>{serverOutput.get()});
|
||||||
QVERIFY(enteredSpy.wait());
|
QVERIFY(enteredSpy.wait());
|
||||||
QCOMPARE(enteredSpy.count(), 2);
|
QCOMPARE(enteredSpy.count(), 2);
|
||||||
QCOMPARE(leftSpy.count(), 1);
|
QCOMPARE(leftSpy.count(), 1);
|
||||||
|
@ -899,7 +899,7 @@ void TestWaylandSurface::testOutput()
|
||||||
serverOutput.reset();
|
serverOutput.reset();
|
||||||
outputHandle.reset();
|
outputHandle.reset();
|
||||||
QVERIFY(leftSpy.wait());
|
QVERIFY(leftSpy.wait());
|
||||||
QCOMPARE(serverSurface->outputs(), QVector<OutputInterface *>());
|
QCOMPARE(serverSurface->outputs(), QList<OutputInterface *>());
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestWaylandSurface::testInhibit()
|
void TestWaylandSurface::testInhibit()
|
||||||
|
|
|
@ -158,7 +158,7 @@ private:
|
||||||
|
|
||||||
DataControlDeviceManager *m_dataControlDeviceManager;
|
DataControlDeviceManager *m_dataControlDeviceManager;
|
||||||
|
|
||||||
QVector<SurfaceInterface *> m_surfaces;
|
QList<SurfaceInterface *> m_surfaces;
|
||||||
};
|
};
|
||||||
|
|
||||||
static const QString s_socketName = QStringLiteral("kwin-wayland-datacontrol-test-0");
|
static const QString s_socketName = QStringLiteral("kwin-wayland-datacontrol-test-0");
|
||||||
|
|
|
@ -184,7 +184,7 @@ private:
|
||||||
KWin::InputMethodV1Interface *m_inputMethodIface;
|
KWin::InputMethodV1Interface *m_inputMethodIface;
|
||||||
KWin::InputPanelV1Interface *m_inputPanelIface;
|
KWin::InputPanelV1Interface *m_inputPanelIface;
|
||||||
|
|
||||||
QVector<SurfaceInterface *> m_surfaces;
|
QList<SurfaceInterface *> m_surfaces;
|
||||||
};
|
};
|
||||||
|
|
||||||
static const QString s_socketName = QStringLiteral("kwin-wayland-server-inputmethod-test-0");
|
static const QString s_socketName = QStringLiteral("kwin-wayland-server-inputmethod-test-0");
|
||||||
|
|
|
@ -85,8 +85,8 @@ private:
|
||||||
CompositorInterface *m_serverCompositor;
|
CompositorInterface *m_serverCompositor;
|
||||||
|
|
||||||
KeyboardShortcutsInhibitManagerV1Interface *m_manager;
|
KeyboardShortcutsInhibitManagerV1Interface *m_manager;
|
||||||
QVector<SurfaceInterface *> m_surfaces;
|
QList<SurfaceInterface *> m_surfaces;
|
||||||
QVector<wl_surface *> m_clientSurfaces;
|
QList<wl_surface *> m_clientSurfaces;
|
||||||
KeyboardShortcutsInhibitManager *m_inhibitManagerClient = nullptr;
|
KeyboardShortcutsInhibitManager *m_inhibitManagerClient = nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -125,9 +125,9 @@ public:
|
||||||
Q_EMIT padAdded();
|
Q_EMIT padAdded();
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector<Tablet *> m_tablets;
|
QList<Tablet *> m_tablets;
|
||||||
QVector<TabletPad *> m_pads;
|
QList<TabletPad *> m_pads;
|
||||||
QVector<Tool *> m_tools;
|
QList<Tool *> m_tools;
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void padAdded();
|
void padAdded();
|
||||||
|
@ -164,13 +164,13 @@ private:
|
||||||
|
|
||||||
TabletSeat *m_tabletSeatClient = nullptr;
|
TabletSeat *m_tabletSeatClient = nullptr;
|
||||||
TabletManagerV2Interface *m_tabletManager;
|
TabletManagerV2Interface *m_tabletManager;
|
||||||
QVector<KWayland::Client::Surface *> m_surfacesClient;
|
QList<KWayland::Client::Surface *> m_surfacesClient;
|
||||||
|
|
||||||
TabletV2Interface *m_tablet;
|
TabletV2Interface *m_tablet;
|
||||||
TabletPadV2Interface *m_tabletPad = nullptr;
|
TabletPadV2Interface *m_tabletPad = nullptr;
|
||||||
TabletToolV2Interface *m_tool;
|
TabletToolV2Interface *m_tool;
|
||||||
|
|
||||||
QVector<SurfaceInterface *> m_surfaces;
|
QList<SurfaceInterface *> m_surfaces;
|
||||||
};
|
};
|
||||||
|
|
||||||
static const QString s_socketName = QStringLiteral("kwin-wayland-server-tablet-test-0");
|
static const QString s_socketName = QStringLiteral("kwin-wayland-server-tablet-test-0");
|
||||||
|
|
|
@ -297,9 +297,9 @@ void DrmBackend::sceneInitialized()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector<CompositingType> DrmBackend::supportedCompositors() const
|
QList<CompositingType> DrmBackend::supportedCompositors() const
|
||||||
{
|
{
|
||||||
return QVector<CompositingType>{OpenGLCompositing, QPainterCompositing};
|
return QList<CompositingType>{OpenGLCompositing, QPainterCompositing};
|
||||||
}
|
}
|
||||||
|
|
||||||
QString DrmBackend::supportInformation() const
|
QString DrmBackend::supportInformation() const
|
||||||
|
@ -352,8 +352,8 @@ size_t DrmBackend::gpuCount() const
|
||||||
|
|
||||||
bool DrmBackend::applyOutputChanges(const OutputConfiguration &config)
|
bool DrmBackend::applyOutputChanges(const OutputConfiguration &config)
|
||||||
{
|
{
|
||||||
QVector<DrmOutput *> toBeEnabled;
|
QList<DrmOutput *> toBeEnabled;
|
||||||
QVector<DrmOutput *> toBeDisabled;
|
QList<DrmOutput *> toBeDisabled;
|
||||||
for (const auto &gpu : std::as_const(m_gpus)) {
|
for (const auto &gpu : std::as_const(m_gpus)) {
|
||||||
const auto &outputs = gpu->drmOutputs();
|
const auto &outputs = gpu->drmOutputs();
|
||||||
for (const auto &output : outputs) {
|
for (const auto &output : outputs) {
|
||||||
|
|
|
@ -9,10 +9,10 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#include "core/outputbackend.h"
|
#include "core/outputbackend.h"
|
||||||
|
|
||||||
|
#include <QList>
|
||||||
#include <QPointer>
|
#include <QPointer>
|
||||||
#include <QSize>
|
#include <QSize>
|
||||||
#include <QSocketNotifier>
|
#include <QSocketNotifier>
|
||||||
#include <QVector>
|
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
@ -49,7 +49,7 @@ public:
|
||||||
Outputs outputs() const override;
|
Outputs outputs() const override;
|
||||||
Session *session() const override;
|
Session *session() const override;
|
||||||
|
|
||||||
QVector<CompositingType> supportedCompositors() const override;
|
QList<CompositingType> supportedCompositors() const override;
|
||||||
|
|
||||||
QString supportInformation() const override;
|
QString supportInformation() const override;
|
||||||
Output *createVirtualOutput(const QString &name, const QSize &size, double scale) override;
|
Output *createVirtualOutput(const QString &name, const QSize &size, double scale) override;
|
||||||
|
@ -88,8 +88,8 @@ private:
|
||||||
std::unique_ptr<UdevMonitor> m_udevMonitor;
|
std::unique_ptr<UdevMonitor> m_udevMonitor;
|
||||||
std::unique_ptr<QSocketNotifier> m_socketNotifier;
|
std::unique_ptr<QSocketNotifier> m_socketNotifier;
|
||||||
Session *m_session;
|
Session *m_session;
|
||||||
QVector<DrmAbstractOutput *> m_outputs;
|
QList<DrmAbstractOutput *> m_outputs;
|
||||||
QVector<QUuid> m_recentlyUnpluggedDpmsOffOutputs;
|
QList<QUuid> m_recentlyUnpluggedDpmsOffOutputs;
|
||||||
|
|
||||||
const QStringList m_explicitGpus;
|
const QStringList m_explicitGpus;
|
||||||
std::vector<std::unique_ptr<DrmGpu>> m_gpus;
|
std::vector<std::unique_ptr<DrmGpu>> m_gpus;
|
||||||
|
|
|
@ -36,7 +36,7 @@ DrmGpu *DrmCommit::gpu() const
|
||||||
return m_gpu;
|
return m_gpu;
|
||||||
}
|
}
|
||||||
|
|
||||||
DrmAtomicCommit::DrmAtomicCommit(const QVector<DrmPipeline *> &pipelines)
|
DrmAtomicCommit::DrmAtomicCommit(const QList<DrmPipeline *> &pipelines)
|
||||||
: DrmCommit(pipelines.front()->gpu())
|
: DrmCommit(pipelines.front()->gpu())
|
||||||
, m_pipelines(pipelines)
|
, m_pipelines(pipelines)
|
||||||
{
|
{
|
||||||
|
|
|
@ -49,7 +49,7 @@ protected:
|
||||||
class DrmAtomicCommit : public DrmCommit
|
class DrmAtomicCommit : public DrmCommit
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
DrmAtomicCommit(const QVector<DrmPipeline *> &pipelines);
|
DrmAtomicCommit(const QList<DrmPipeline *> &pipelines);
|
||||||
DrmAtomicCommit(const DrmAtomicCommit ©) = default;
|
DrmAtomicCommit(const DrmAtomicCommit ©) = default;
|
||||||
|
|
||||||
void addProperty(const DrmProperty &prop, uint64_t value);
|
void addProperty(const DrmProperty &prop, uint64_t value);
|
||||||
|
@ -81,7 +81,7 @@ public:
|
||||||
private:
|
private:
|
||||||
bool doCommit(uint32_t flags);
|
bool doCommit(uint32_t flags);
|
||||||
|
|
||||||
const QVector<DrmPipeline *> m_pipelines;
|
const QList<DrmPipeline *> m_pipelines;
|
||||||
std::unordered_map<const DrmProperty *, std::shared_ptr<DrmBlob>> m_blobs;
|
std::unordered_map<const DrmProperty *, std::shared_ptr<DrmBlob>> m_blobs;
|
||||||
std::unordered_map<DrmPlane *, std::shared_ptr<DrmFramebuffer>> m_buffers;
|
std::unordered_map<DrmPlane *, std::shared_ptr<DrmFramebuffer>> m_buffers;
|
||||||
std::unordered_set<DrmPlane *> m_planes;
|
std::unordered_set<DrmPlane *> m_planes;
|
||||||
|
|
|
@ -326,7 +326,7 @@ void DrmConnector::disable(DrmAtomicCommit *commit)
|
||||||
commit->addProperty(crtcId, 0);
|
commit->addProperty(crtcId, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const QVector<QSize> s_commonModes = {
|
static const QList<QSize> s_commonModes = {
|
||||||
/* 4:3 (1.33) */
|
/* 4:3 (1.33) */
|
||||||
QSize(1600, 1200),
|
QSize(1600, 1200),
|
||||||
QSize(1280, 1024), /* 5:4 (1.25) */
|
QSize(1280, 1024), /* 5:4 (1.25) */
|
||||||
|
|
|
@ -43,7 +43,7 @@ void DmabufFeedback::scanoutSuccessful(SurfaceInterface *surface)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DmabufFeedback::scanoutFailed(SurfaceInterface *surface, const QMap<uint32_t, QVector<uint64_t>> &formats)
|
void DmabufFeedback::scanoutFailed(SurfaceInterface *surface, const QMap<uint32_t, QList<uint64_t>> &formats)
|
||||||
{
|
{
|
||||||
m_attemptedThisFrame = true;
|
m_attemptedThisFrame = true;
|
||||||
if (surface != m_surface) {
|
if (surface != m_surface) {
|
||||||
|
@ -57,7 +57,7 @@ void DmabufFeedback::scanoutFailed(SurfaceInterface *surface, const QMap<uint32_
|
||||||
const DmaBufAttributes *dmabufAttrs = surface->buffer()->dmabufAttributes();
|
const DmaBufAttributes *dmabufAttrs = surface->buffer()->dmabufAttributes();
|
||||||
if (!m_attemptedFormats[dmabufAttrs->format].contains(dmabufAttrs->modifier)) {
|
if (!m_attemptedFormats[dmabufAttrs->format].contains(dmabufAttrs->modifier)) {
|
||||||
m_attemptedFormats[dmabufAttrs->format] << dmabufAttrs->modifier;
|
m_attemptedFormats[dmabufAttrs->format] << dmabufAttrs->modifier;
|
||||||
QVector<LinuxDmaBufV1Feedback::Tranche> scanoutTranches;
|
QList<LinuxDmaBufV1Feedback::Tranche> scanoutTranches;
|
||||||
const auto tranches = m_eglBackend->tranches();
|
const auto tranches = m_eglBackend->tranches();
|
||||||
for (const auto &tranche : tranches) {
|
for (const auto &tranche : tranches) {
|
||||||
LinuxDmaBufV1Feedback::Tranche scanoutTranche;
|
LinuxDmaBufV1Feedback::Tranche scanoutTranche;
|
||||||
|
|
|
@ -8,9 +8,9 @@
|
||||||
*/
|
*/
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <QList>
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
#include <QPointer>
|
#include <QPointer>
|
||||||
#include <QVector>
|
|
||||||
|
|
||||||
namespace KWin
|
namespace KWin
|
||||||
{
|
{
|
||||||
|
@ -26,11 +26,11 @@ public:
|
||||||
|
|
||||||
void renderingSurface();
|
void renderingSurface();
|
||||||
void scanoutSuccessful(SurfaceInterface *surface);
|
void scanoutSuccessful(SurfaceInterface *surface);
|
||||||
void scanoutFailed(SurfaceInterface *surface, const QMap<uint32_t, QVector<uint64_t>> &formats);
|
void scanoutFailed(SurfaceInterface *surface, const QMap<uint32_t, QList<uint64_t>> &formats);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QPointer<SurfaceInterface> m_surface;
|
QPointer<SurfaceInterface> m_surface;
|
||||||
QMap<uint32_t, QVector<uint64_t>> m_attemptedFormats;
|
QMap<uint32_t, QList<uint64_t>> m_attemptedFormats;
|
||||||
bool m_attemptedThisFrame = false;
|
bool m_attemptedThisFrame = false;
|
||||||
|
|
||||||
DrmGpu *const m_gpu;
|
DrmGpu *const m_gpu;
|
||||||
|
|
|
@ -27,9 +27,9 @@
|
||||||
namespace KWin
|
namespace KWin
|
||||||
{
|
{
|
||||||
|
|
||||||
static const QVector<uint64_t> linearModifier = {DRM_FORMAT_MOD_LINEAR};
|
static const QList<uint64_t> linearModifier = {DRM_FORMAT_MOD_LINEAR};
|
||||||
static const QVector<uint64_t> implicitModifier = {DRM_FORMAT_MOD_INVALID};
|
static const QList<uint64_t> implicitModifier = {DRM_FORMAT_MOD_INVALID};
|
||||||
static const QVector<uint32_t> cpuCopyFormats = {DRM_FORMAT_ARGB8888, DRM_FORMAT_XRGB8888};
|
static const QList<uint32_t> cpuCopyFormats = {DRM_FORMAT_ARGB8888, DRM_FORMAT_XRGB8888};
|
||||||
|
|
||||||
static const bool bufferAgeEnabled = qEnvironmentVariable("KWIN_USE_BUFFER_AGE") != QStringLiteral("0");
|
static const bool bufferAgeEnabled = qEnvironmentVariable("KWIN_USE_BUFFER_AGE") != QStringLiteral("0");
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ void EglGbmLayerSurface::destroyResources()
|
||||||
m_oldSurface = {};
|
m_oldSurface = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
std::optional<OutputLayerBeginFrameInfo> EglGbmLayerSurface::startRendering(const QSize &bufferSize, TextureTransforms transformation, const QMap<uint32_t, QVector<uint64_t>> &formats, const ColorDescription &colorDescription, const QVector3D &channelFactors, bool enableColormanagement)
|
std::optional<OutputLayerBeginFrameInfo> EglGbmLayerSurface::startRendering(const QSize &bufferSize, TextureTransforms transformation, const QMap<uint32_t, QList<uint64_t>> &formats, const ColorDescription &colorDescription, const QVector3D &channelFactors, bool enableColormanagement)
|
||||||
{
|
{
|
||||||
if (!checkSurface(bufferSize, formats)) {
|
if (!checkSurface(bufferSize, formats)) {
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
|
@ -206,7 +206,7 @@ const ColorDescription &EglGbmLayerSurface::colorDescription() const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool EglGbmLayerSurface::doesSurfaceFit(const QSize &size, const QMap<uint32_t, QVector<uint64_t>> &formats) const
|
bool EglGbmLayerSurface::doesSurfaceFit(const QSize &size, const QMap<uint32_t, QList<uint64_t>> &formats) const
|
||||||
{
|
{
|
||||||
return doesSurfaceFit(m_surface.get(), size, formats);
|
return doesSurfaceFit(m_surface.get(), size, formats);
|
||||||
}
|
}
|
||||||
|
@ -220,7 +220,7 @@ std::shared_ptr<GLTexture> EglGbmLayerSurface::texture() const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<DrmFramebuffer> EglGbmLayerSurface::renderTestBuffer(const QSize &bufferSize, const QMap<uint32_t, QVector<uint64_t>> &formats)
|
std::shared_ptr<DrmFramebuffer> EglGbmLayerSurface::renderTestBuffer(const QSize &bufferSize, const QMap<uint32_t, QList<uint64_t>> &formats)
|
||||||
{
|
{
|
||||||
if (checkSurface(bufferSize, formats)) {
|
if (checkSurface(bufferSize, formats)) {
|
||||||
return m_surface->currentFramebuffer;
|
return m_surface->currentFramebuffer;
|
||||||
|
@ -229,7 +229,7 @@ std::shared_ptr<DrmFramebuffer> EglGbmLayerSurface::renderTestBuffer(const QSize
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool EglGbmLayerSurface::checkSurface(const QSize &size, const QMap<uint32_t, QVector<uint64_t>> &formats)
|
bool EglGbmLayerSurface::checkSurface(const QSize &size, const QMap<uint32_t, QList<uint64_t>> &formats)
|
||||||
{
|
{
|
||||||
if (doesSurfaceFit(m_surface.get(), size, formats)) {
|
if (doesSurfaceFit(m_surface.get(), size, formats)) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -246,7 +246,7 @@ bool EglGbmLayerSurface::checkSurface(const QSize &size, const QMap<uint32_t, QV
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool EglGbmLayerSurface::doesSurfaceFit(Surface *surface, const QSize &size, const QMap<uint32_t, QVector<uint64_t>> &formats) const
|
bool EglGbmLayerSurface::doesSurfaceFit(Surface *surface, const QSize &size, const QMap<uint32_t, QList<uint64_t>> &formats) const
|
||||||
{
|
{
|
||||||
if (!surface) {
|
if (!surface) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -258,10 +258,10 @@ bool EglGbmLayerSurface::doesSurfaceFit(Surface *surface, const QSize &size, con
|
||||||
&& (surface->forceLinear || swapchain->modifier() == DRM_FORMAT_MOD_INVALID || formats[swapchain->format()].contains(swapchain->modifier()));
|
&& (surface->forceLinear || swapchain->modifier() == DRM_FORMAT_MOD_INVALID || formats[swapchain->format()].contains(swapchain->modifier()));
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<EglGbmLayerSurface::Surface> EglGbmLayerSurface::createSurface(const QSize &size, const QMap<uint32_t, QVector<uint64_t>> &formats) const
|
std::unique_ptr<EglGbmLayerSurface::Surface> EglGbmLayerSurface::createSurface(const QSize &size, const QMap<uint32_t, QList<uint64_t>> &formats) const
|
||||||
{
|
{
|
||||||
QVector<FormatInfo> preferredFormats;
|
QList<FormatInfo> preferredFormats;
|
||||||
QVector<FormatInfo> fallbackFormats;
|
QList<FormatInfo> fallbackFormats;
|
||||||
for (auto it = formats.begin(); it != formats.end(); it++) {
|
for (auto it = formats.begin(); it != formats.end(); it++) {
|
||||||
const auto format = formatInfo(it.key());
|
const auto format = formatInfo(it.key());
|
||||||
if (format.has_value() && format->bitsPerColor >= 8) {
|
if (format.has_value() && format->bitsPerColor >= 8) {
|
||||||
|
@ -284,7 +284,7 @@ std::unique_ptr<EglGbmLayerSurface::Surface> EglGbmLayerSurface::createSurface(c
|
||||||
return lhs.bitsPerPixel < rhs.bitsPerPixel;
|
return lhs.bitsPerPixel < rhs.bitsPerPixel;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const auto doTestFormats = [this, &size, &formats](const QVector<FormatInfo> &gbmFormats, MultiGpuImportMode importMode) -> std::unique_ptr<Surface> {
|
const auto doTestFormats = [this, &size, &formats](const QList<FormatInfo> &gbmFormats, MultiGpuImportMode importMode) -> std::unique_ptr<Surface> {
|
||||||
for (const auto &format : gbmFormats) {
|
for (const auto &format : gbmFormats) {
|
||||||
if (m_formatOption == FormatOption::RequireAlpha && format.alphaBits == 0) {
|
if (m_formatOption == FormatOption::RequireAlpha && format.alphaBits == 0) {
|
||||||
continue;
|
continue;
|
||||||
|
@ -296,7 +296,7 @@ std::unique_ptr<EglGbmLayerSurface::Surface> EglGbmLayerSurface::createSurface(c
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
};
|
};
|
||||||
const auto testFormats = [this, &sort, &doTestFormats](QVector<FormatInfo> &formats) -> std::unique_ptr<Surface> {
|
const auto testFormats = [this, &sort, &doTestFormats](QList<FormatInfo> &formats) -> std::unique_ptr<Surface> {
|
||||||
std::sort(formats.begin(), formats.end(), sort);
|
std::sort(formats.begin(), formats.end(), sort);
|
||||||
if (m_gpu == m_eglBackend->gpu()) {
|
if (m_gpu == m_eglBackend->gpu()) {
|
||||||
return doTestFormats(formats, MultiGpuImportMode::None);
|
return doTestFormats(formats, MultiGpuImportMode::None);
|
||||||
|
@ -328,9 +328,9 @@ std::unique_ptr<EglGbmLayerSurface::Surface> EglGbmLayerSurface::createSurface(c
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static QVector<uint64_t> filterModifiers(const QVector<uint64_t> &one, const QVector<uint64_t> &two)
|
static QList<uint64_t> filterModifiers(const QList<uint64_t> &one, const QList<uint64_t> &two)
|
||||||
{
|
{
|
||||||
QVector<uint64_t> ret = one;
|
QList<uint64_t> ret = one;
|
||||||
ret.erase(std::remove_if(ret.begin(), ret.end(), [&two](uint64_t mod) {
|
ret.erase(std::remove_if(ret.begin(), ret.end(), [&two](uint64_t mod) {
|
||||||
return !two.contains(mod);
|
return !two.contains(mod);
|
||||||
}),
|
}),
|
||||||
|
@ -338,10 +338,10 @@ static QVector<uint64_t> filterModifiers(const QVector<uint64_t> &one, const QVe
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<EglGbmLayerSurface::Surface> EglGbmLayerSurface::createSurface(const QSize &size, uint32_t format, const QVector<uint64_t> &modifiers, MultiGpuImportMode importMode) const
|
std::unique_ptr<EglGbmLayerSurface::Surface> EglGbmLayerSurface::createSurface(const QSize &size, uint32_t format, const QList<uint64_t> &modifiers, MultiGpuImportMode importMode) const
|
||||||
{
|
{
|
||||||
const bool cpuCopy = importMode == MultiGpuImportMode::DumbBuffer || m_bufferTarget == BufferTarget::Dumb;
|
const bool cpuCopy = importMode == MultiGpuImportMode::DumbBuffer || m_bufferTarget == BufferTarget::Dumb;
|
||||||
QVector<uint64_t> renderModifiers;
|
QList<uint64_t> renderModifiers;
|
||||||
auto ret = std::make_unique<Surface>();
|
auto ret = std::make_unique<Surface>();
|
||||||
if (importMode == MultiGpuImportMode::Egl) {
|
if (importMode == MultiGpuImportMode::Egl) {
|
||||||
ret->importContext = m_eglBackend->contextForGpu(m_gpu);
|
ret->importContext = m_eglBackend->contextForGpu(m_gpu);
|
||||||
|
@ -384,7 +384,7 @@ std::unique_ptr<EglGbmLayerSurface::Surface> EglGbmLayerSurface::createSurface(c
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<EglSwapchain> EglGbmLayerSurface::createGbmSwapchain(DrmGpu *gpu, EglContext *context, const QSize &size, uint32_t format, const QVector<uint64_t> &modifiers, bool preferLinear) const
|
std::shared_ptr<EglSwapchain> EglGbmLayerSurface::createGbmSwapchain(DrmGpu *gpu, EglContext *context, const QSize &size, uint32_t format, const QList<uint64_t> &modifiers, bool preferLinear) const
|
||||||
{
|
{
|
||||||
static bool modifiersEnvSet = false;
|
static bool modifiersEnvSet = false;
|
||||||
static const bool modifiersEnv = qEnvironmentVariableIntValue("KWIN_DRM_USE_MODIFIERS", &modifiersEnvSet) != 0;
|
static const bool modifiersEnv = qEnvironmentVariableIntValue("KWIN_DRM_USE_MODIFIERS", &modifiersEnvSet) != 0;
|
||||||
|
|
|
@ -53,15 +53,15 @@ public:
|
||||||
EglGbmLayerSurface(DrmGpu *gpu, EglGbmBackend *eglBackend, BufferTarget target = BufferTarget::Normal, FormatOption formatOption = FormatOption::PreferAlpha);
|
EglGbmLayerSurface(DrmGpu *gpu, EglGbmBackend *eglBackend, BufferTarget target = BufferTarget::Normal, FormatOption formatOption = FormatOption::PreferAlpha);
|
||||||
~EglGbmLayerSurface();
|
~EglGbmLayerSurface();
|
||||||
|
|
||||||
std::optional<OutputLayerBeginFrameInfo> startRendering(const QSize &bufferSize, TextureTransforms transformation, const QMap<uint32_t, QVector<uint64_t>> &formats, const ColorDescription &colorDescription, const QVector3D &channelFactors, bool enableColormanagement);
|
std::optional<OutputLayerBeginFrameInfo> startRendering(const QSize &bufferSize, TextureTransforms transformation, const QMap<uint32_t, QList<uint64_t>> &formats, const ColorDescription &colorDescription, const QVector3D &channelFactors, bool enableColormanagement);
|
||||||
bool endRendering(const QRegion &damagedRegion);
|
bool endRendering(const QRegion &damagedRegion);
|
||||||
std::chrono::nanoseconds queryRenderTime() const;
|
std::chrono::nanoseconds queryRenderTime() const;
|
||||||
|
|
||||||
bool doesSurfaceFit(const QSize &size, const QMap<uint32_t, QVector<uint64_t>> &formats) const;
|
bool doesSurfaceFit(const QSize &size, const QMap<uint32_t, QList<uint64_t>> &formats) const;
|
||||||
std::shared_ptr<GLTexture> texture() const;
|
std::shared_ptr<GLTexture> texture() const;
|
||||||
void destroyResources();
|
void destroyResources();
|
||||||
EglGbmBackend *eglBackend() const;
|
EglGbmBackend *eglBackend() const;
|
||||||
std::shared_ptr<DrmFramebuffer> renderTestBuffer(const QSize &bufferSize, const QMap<uint32_t, QVector<uint64_t>> &formats);
|
std::shared_ptr<DrmFramebuffer> renderTestBuffer(const QSize &bufferSize, const QMap<uint32_t, QList<uint64_t>> &formats);
|
||||||
|
|
||||||
std::shared_ptr<DrmFramebuffer> currentBuffer() const;
|
std::shared_ptr<DrmFramebuffer> currentBuffer() const;
|
||||||
const ColorDescription &colorDescription() const;
|
const ColorDescription &colorDescription() const;
|
||||||
|
@ -103,11 +103,11 @@ private:
|
||||||
std::chrono::steady_clock::time_point renderStart;
|
std::chrono::steady_clock::time_point renderStart;
|
||||||
std::chrono::steady_clock::time_point renderEnd;
|
std::chrono::steady_clock::time_point renderEnd;
|
||||||
};
|
};
|
||||||
bool checkSurface(const QSize &size, const QMap<uint32_t, QVector<uint64_t>> &formats);
|
bool checkSurface(const QSize &size, const QMap<uint32_t, QList<uint64_t>> &formats);
|
||||||
bool doesSurfaceFit(Surface *surface, const QSize &size, const QMap<uint32_t, QVector<uint64_t>> &formats) const;
|
bool doesSurfaceFit(Surface *surface, const QSize &size, const QMap<uint32_t, QList<uint64_t>> &formats) const;
|
||||||
std::unique_ptr<Surface> createSurface(const QSize &size, const QMap<uint32_t, QVector<uint64_t>> &formats) const;
|
std::unique_ptr<Surface> createSurface(const QSize &size, const QMap<uint32_t, QList<uint64_t>> &formats) const;
|
||||||
std::unique_ptr<Surface> createSurface(const QSize &size, uint32_t format, const QVector<uint64_t> &modifiers, MultiGpuImportMode importMode) const;
|
std::unique_ptr<Surface> createSurface(const QSize &size, uint32_t format, const QList<uint64_t> &modifiers, MultiGpuImportMode importMode) const;
|
||||||
std::shared_ptr<EglSwapchain> createGbmSwapchain(DrmGpu *gpu, EglContext *context, const QSize &size, uint32_t format, const QVector<uint64_t> &modifiers, bool forceLinear) const;
|
std::shared_ptr<EglSwapchain> createGbmSwapchain(DrmGpu *gpu, EglContext *context, const QSize &size, uint32_t format, const QList<uint64_t> &modifiers, bool forceLinear) const;
|
||||||
|
|
||||||
std::shared_ptr<DrmFramebuffer> doRenderTestBuffer(Surface *surface) const;
|
std::shared_ptr<DrmFramebuffer> doRenderTestBuffer(Surface *surface) const;
|
||||||
std::shared_ptr<DrmFramebuffer> importBuffer(Surface *surface, EglSwapchainSlot *source) const;
|
std::shared_ptr<DrmFramebuffer> importBuffer(Surface *surface, EglSwapchainSlot *source) const;
|
||||||
|
|
|
@ -180,11 +180,11 @@ void DrmGpu::initDrmResources()
|
||||||
qCCritical(KWIN_DRM) << "drmModeGetResources for getting CRTCs failed on GPU" << m_devNode;
|
qCCritical(KWIN_DRM) << "drmModeGetResources for getting CRTCs failed on GPU" << m_devNode;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
QVector<DrmPlane *> assignedPlanes;
|
QList<DrmPlane *> assignedPlanes;
|
||||||
for (int i = 0; i < resources->count_crtcs; ++i) {
|
for (int i = 0; i < resources->count_crtcs; ++i) {
|
||||||
uint32_t crtcId = resources->crtcs[i];
|
uint32_t crtcId = resources->crtcs[i];
|
||||||
QVector<DrmPlane *> primaryCandidates;
|
QList<DrmPlane *> primaryCandidates;
|
||||||
QVector<DrmPlane *> cursorCandidates;
|
QList<DrmPlane *> cursorCandidates;
|
||||||
for (const auto &plane : m_planes) {
|
for (const auto &plane : m_planes) {
|
||||||
if (plane->isCrtcSupported(i) && !assignedPlanes.contains(plane.get())) {
|
if (plane->isCrtcSupported(i) && !assignedPlanes.contains(plane.get())) {
|
||||||
if (plane->type.enumValue() == DrmPlane::TypeIndex::Primary) {
|
if (plane->type.enumValue() == DrmPlane::TypeIndex::Primary) {
|
||||||
|
@ -198,7 +198,7 @@ void DrmGpu::initDrmResources()
|
||||||
qCWarning(KWIN_DRM) << "Could not find a suitable primary plane for crtc" << resources->crtcs[i];
|
qCWarning(KWIN_DRM) << "Could not find a suitable primary plane for crtc" << resources->crtcs[i];
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const auto findBestPlane = [crtcId](const QVector<DrmPlane *> &list) {
|
const auto findBestPlane = [crtcId](const QList<DrmPlane *> &list) {
|
||||||
// if the plane is already used with this crtc, prefer it
|
// if the plane is already used with this crtc, prefer it
|
||||||
const auto connected = std::find_if(list.begin(), list.end(), [crtcId](DrmPlane *plane) {
|
const auto connected = std::find_if(list.begin(), list.end(), [crtcId](DrmPlane *plane) {
|
||||||
return plane->crtcId.value() == crtcId;
|
return plane->crtcId.value() == crtcId;
|
||||||
|
@ -261,8 +261,8 @@ bool DrmGpu::updateOutputs()
|
||||||
}
|
}
|
||||||
|
|
||||||
// check for added and removed connectors
|
// check for added and removed connectors
|
||||||
QVector<DrmConnector *> existing;
|
QList<DrmConnector *> existing;
|
||||||
QVector<DrmOutput *> addedOutputs;
|
QList<DrmOutput *> addedOutputs;
|
||||||
for (int i = 0; i < resources->count_connectors; ++i) {
|
for (int i = 0; i < resources->count_connectors; ++i) {
|
||||||
const uint32_t currentConnector = resources->connectors[i];
|
const uint32_t currentConnector = resources->connectors[i];
|
||||||
const auto it = std::find_if(m_connectors.begin(), m_connectors.end(), [currentConnector](const auto &connector) {
|
const auto it = std::find_if(m_connectors.begin(), m_connectors.end(), [currentConnector](const auto &connector) {
|
||||||
|
@ -367,7 +367,7 @@ void DrmGpu::removeOutputs()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DrmPipeline::Error DrmGpu::checkCrtcAssignment(QVector<DrmConnector *> connectors, const QVector<DrmCrtc *> &crtcs)
|
DrmPipeline::Error DrmGpu::checkCrtcAssignment(QList<DrmConnector *> connectors, const QList<DrmCrtc *> &crtcs)
|
||||||
{
|
{
|
||||||
if (connectors.isEmpty() || crtcs.isEmpty()) {
|
if (connectors.isEmpty() || crtcs.isEmpty()) {
|
||||||
if (m_pipelines.isEmpty()) {
|
if (m_pipelines.isEmpty()) {
|
||||||
|
@ -426,8 +426,8 @@ DrmPipeline::Error DrmGpu::checkCrtcAssignment(QVector<DrmConnector *> connector
|
||||||
|
|
||||||
DrmPipeline::Error DrmGpu::testPendingConfiguration()
|
DrmPipeline::Error DrmGpu::testPendingConfiguration()
|
||||||
{
|
{
|
||||||
QVector<DrmConnector *> connectors;
|
QList<DrmConnector *> connectors;
|
||||||
QVector<DrmCrtc *> crtcs;
|
QList<DrmCrtc *> crtcs;
|
||||||
// only change resources that aren't currently leased away
|
// only change resources that aren't currently leased away
|
||||||
for (const auto &conn : m_connectors) {
|
for (const auto &conn : m_connectors) {
|
||||||
bool isLeased = std::any_of(m_drmOutputs.cbegin(), m_drmOutputs.cend(), [&conn](const auto output) {
|
bool isLeased = std::any_of(m_drmOutputs.cbegin(), m_drmOutputs.cend(), [&conn](const auto output) {
|
||||||
|
@ -456,7 +456,7 @@ DrmPipeline::Error DrmGpu::testPendingConfiguration()
|
||||||
|
|
||||||
DrmPipeline::Error DrmGpu::testPipelines()
|
DrmPipeline::Error DrmGpu::testPipelines()
|
||||||
{
|
{
|
||||||
QVector<DrmPipeline *> inactivePipelines;
|
QList<DrmPipeline *> inactivePipelines;
|
||||||
std::copy_if(m_pipelines.constBegin(), m_pipelines.constEnd(), std::back_inserter(inactivePipelines), [](const auto pipeline) {
|
std::copy_if(m_pipelines.constBegin(), m_pipelines.constEnd(), std::back_inserter(inactivePipelines), [](const auto pipeline) {
|
||||||
return pipeline->enabled() && !pipeline->active();
|
return pipeline->enabled() && !pipeline->active();
|
||||||
});
|
});
|
||||||
|
@ -582,7 +582,7 @@ DrmBackend *DrmGpu::platform() const
|
||||||
return m_platform;
|
return m_platform;
|
||||||
}
|
}
|
||||||
|
|
||||||
const QVector<DrmPipeline *> DrmGpu::pipelines() const
|
const QList<DrmPipeline *> DrmGpu::pipelines() const
|
||||||
{
|
{
|
||||||
return m_pipelines;
|
return m_pipelines;
|
||||||
}
|
}
|
||||||
|
@ -603,9 +603,9 @@ void DrmGpu::removeVirtualOutput(DrmVirtualOutput *output)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<DrmLease> DrmGpu::leaseOutputs(const QVector<DrmOutput *> &outputs)
|
std::unique_ptr<DrmLease> DrmGpu::leaseOutputs(const QList<DrmOutput *> &outputs)
|
||||||
{
|
{
|
||||||
QVector<uint32_t> objects;
|
QList<uint32_t> objects;
|
||||||
for (DrmOutput *output : outputs) {
|
for (DrmOutput *output : outputs) {
|
||||||
if (output->lease() || !output->addLeaseObjects(objects)) {
|
if (output->lease() || !output->addLeaseObjects(objects)) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -630,12 +630,12 @@ std::unique_ptr<DrmLease> DrmGpu::leaseOutputs(const QVector<DrmOutput *> &outpu
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector<DrmVirtualOutput *> DrmGpu::virtualOutputs() const
|
QList<DrmVirtualOutput *> DrmGpu::virtualOutputs() const
|
||||||
{
|
{
|
||||||
return m_virtualOutputs;
|
return m_virtualOutputs;
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector<DrmOutput *> DrmGpu::drmOutputs() const
|
QList<DrmOutput *> DrmGpu::drmOutputs() const
|
||||||
{
|
{
|
||||||
return m_drmOutputs;
|
return m_drmOutputs;
|
||||||
}
|
}
|
||||||
|
@ -773,12 +773,12 @@ bool DrmGpu::maybeModeset()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector<DrmObject *> DrmGpu::unusedObjects() const
|
QList<DrmObject *> DrmGpu::unusedObjects() const
|
||||||
{
|
{
|
||||||
if (!m_atomicModeSetting) {
|
if (!m_atomicModeSetting) {
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
QVector<DrmObject *> ret = m_allObjects;
|
QList<DrmObject *> ret = m_allObjects;
|
||||||
for (const auto &pipeline : m_pipelines) {
|
for (const auto &pipeline : m_pipelines) {
|
||||||
ret.removeOne(pipeline->connector());
|
ret.removeOne(pipeline->connector());
|
||||||
if (pipeline->crtc()) {
|
if (pipeline->crtc()) {
|
||||||
|
@ -906,7 +906,7 @@ std::shared_ptr<DrmFramebuffer> DrmGpu::importBuffer(GraphicsBuffer *buffer)
|
||||||
return std::make_shared<DrmFramebuffer>(this, framebufferId, buffer);
|
return std::make_shared<DrmFramebuffer>(this, framebufferId, buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
DrmLease::DrmLease(DrmGpu *gpu, FileDescriptor &&fd, uint32_t lesseeId, const QVector<DrmOutput *> &outputs)
|
DrmLease::DrmLease(DrmGpu *gpu, FileDescriptor &&fd, uint32_t lesseeId, const QList<DrmOutput *> &outputs)
|
||||||
: m_gpu(gpu)
|
: m_gpu(gpu)
|
||||||
, m_fd(std::move(fd))
|
, m_fd(std::move(fd))
|
||||||
, m_lesseeId(lesseeId)
|
, m_lesseeId(lesseeId)
|
||||||
|
|
|
@ -11,10 +11,10 @@
|
||||||
#include "drm_pipeline.h"
|
#include "drm_pipeline.h"
|
||||||
#include "utils/filedescriptor.h"
|
#include "utils/filedescriptor.h"
|
||||||
|
|
||||||
|
#include <QList>
|
||||||
#include <QPointer>
|
#include <QPointer>
|
||||||
#include <QSize>
|
#include <QSize>
|
||||||
#include <QSocketNotifier>
|
#include <QSocketNotifier>
|
||||||
#include <QVector>
|
|
||||||
#include <qobject.h>
|
#include <qobject.h>
|
||||||
|
|
||||||
#include <epoxy/egl.h>
|
#include <epoxy/egl.h>
|
||||||
|
@ -43,7 +43,7 @@ class DrmLease : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
DrmLease(DrmGpu *gpu, FileDescriptor &&fd, uint32_t lesseeId, const QVector<DrmOutput *> &outputs);
|
DrmLease(DrmGpu *gpu, FileDescriptor &&fd, uint32_t lesseeId, const QList<DrmOutput *> &outputs);
|
||||||
~DrmLease();
|
~DrmLease();
|
||||||
|
|
||||||
FileDescriptor &fd();
|
FileDescriptor &fd();
|
||||||
|
@ -56,7 +56,7 @@ private:
|
||||||
DrmGpu *const m_gpu;
|
DrmGpu *const m_gpu;
|
||||||
FileDescriptor m_fd;
|
FileDescriptor m_fd;
|
||||||
const uint32_t m_lesseeId;
|
const uint32_t m_lesseeId;
|
||||||
const QVector<DrmOutput *> m_outputs;
|
const QList<DrmOutput *> m_outputs;
|
||||||
};
|
};
|
||||||
|
|
||||||
class DrmGpu : public QObject
|
class DrmGpu : public QObject
|
||||||
|
@ -89,9 +89,9 @@ public:
|
||||||
clockid_t presentationClock() const;
|
clockid_t presentationClock() const;
|
||||||
QSize cursorSize() const;
|
QSize cursorSize() const;
|
||||||
|
|
||||||
QVector<DrmVirtualOutput *> virtualOutputs() const;
|
QList<DrmVirtualOutput *> virtualOutputs() const;
|
||||||
QVector<DrmOutput *> drmOutputs() const;
|
QList<DrmOutput *> drmOutputs() const;
|
||||||
const QVector<DrmPipeline *> pipelines() const;
|
const QList<DrmPipeline *> pipelines() const;
|
||||||
|
|
||||||
void setEglDisplay(std::unique_ptr<EglDisplay> &&display);
|
void setEglDisplay(std::unique_ptr<EglDisplay> &&display);
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ public:
|
||||||
void recreateSurfaces();
|
void recreateSurfaces();
|
||||||
|
|
||||||
FileDescriptor createNonMasterFd() const;
|
FileDescriptor createNonMasterFd() const;
|
||||||
std::unique_ptr<DrmLease> leaseOutputs(const QVector<DrmOutput *> &outputs);
|
std::unique_ptr<DrmLease> leaseOutputs(const QList<DrmOutput *> &outputs);
|
||||||
void waitIdle();
|
void waitIdle();
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
|
@ -125,9 +125,9 @@ private:
|
||||||
void removeOutput(DrmOutput *output);
|
void removeOutput(DrmOutput *output);
|
||||||
void initDrmResources();
|
void initDrmResources();
|
||||||
|
|
||||||
DrmPipeline::Error checkCrtcAssignment(QVector<DrmConnector *> connectors, const QVector<DrmCrtc *> &crtcs);
|
DrmPipeline::Error checkCrtcAssignment(QList<DrmConnector *> connectors, const QList<DrmCrtc *> &crtcs);
|
||||||
DrmPipeline::Error testPipelines();
|
DrmPipeline::Error testPipelines();
|
||||||
QVector<DrmObject *> unusedObjects() const;
|
QList<DrmObject *> unusedObjects() const;
|
||||||
|
|
||||||
static void pageFlipHandler(int fd, unsigned int sequence, unsigned int sec, unsigned int usec, unsigned int crtc_id, void *user_data);
|
static void pageFlipHandler(int fd, unsigned int sequence, unsigned int sec, unsigned int usec, unsigned int crtc_id, void *user_data);
|
||||||
|
|
||||||
|
@ -151,11 +151,11 @@ private:
|
||||||
std::vector<std::unique_ptr<DrmPlane>> m_planes;
|
std::vector<std::unique_ptr<DrmPlane>> m_planes;
|
||||||
std::vector<std::unique_ptr<DrmCrtc>> m_crtcs;
|
std::vector<std::unique_ptr<DrmCrtc>> m_crtcs;
|
||||||
std::vector<std::shared_ptr<DrmConnector>> m_connectors;
|
std::vector<std::shared_ptr<DrmConnector>> m_connectors;
|
||||||
QVector<DrmObject *> m_allObjects;
|
QList<DrmObject *> m_allObjects;
|
||||||
QVector<DrmPipeline *> m_pipelines;
|
QList<DrmPipeline *> m_pipelines;
|
||||||
|
|
||||||
QVector<DrmOutput *> m_drmOutputs;
|
QList<DrmOutput *> m_drmOutputs;
|
||||||
QVector<DrmVirtualOutput *> m_virtualOutputs;
|
QList<DrmVirtualOutput *> m_virtualOutputs;
|
||||||
|
|
||||||
std::unique_ptr<QSocketNotifier> m_socketNotifier;
|
std::unique_ptr<QSocketNotifier> m_socketNotifier;
|
||||||
QSize m_cursorSize;
|
QSize m_cursorSize;
|
||||||
|
|
|
@ -9,8 +9,8 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <QByteArray>
|
#include <QByteArray>
|
||||||
|
#include <QList>
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
#include <QVector>
|
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
|
|
@ -105,7 +105,7 @@ DrmOutput::~DrmOutput()
|
||||||
m_pipeline->setOutput(nullptr);
|
m_pipeline->setOutput(nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DrmOutput::addLeaseObjects(QVector<uint32_t> &objectList)
|
bool DrmOutput::addLeaseObjects(QList<uint32_t> &objectList)
|
||||||
{
|
{
|
||||||
if (!m_pipeline->crtc()) {
|
if (!m_pipeline->crtc()) {
|
||||||
qCWarning(KWIN_DRM) << "Can't lease connector: No suitable crtc available";
|
qCWarning(KWIN_DRM) << "Can't lease connector: No suitable crtc available";
|
||||||
|
|
|
@ -12,12 +12,12 @@
|
||||||
#include "drm_object.h"
|
#include "drm_object.h"
|
||||||
#include "drm_plane.h"
|
#include "drm_plane.h"
|
||||||
|
|
||||||
|
#include <QList>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QPoint>
|
#include <QPoint>
|
||||||
#include <QPointer>
|
#include <QPointer>
|
||||||
#include <QSize>
|
#include <QSize>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <QVector>
|
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <xf86drmMode.h>
|
#include <xf86drmMode.h>
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ public:
|
||||||
bool updateCursorLayer() override;
|
bool updateCursorLayer() override;
|
||||||
|
|
||||||
DrmLease *lease() const;
|
DrmLease *lease() const;
|
||||||
bool addLeaseObjects(QVector<uint32_t> &objectList);
|
bool addLeaseObjects(QList<uint32_t> &objectList);
|
||||||
void leased(DrmLease *lease);
|
void leased(DrmLease *lease);
|
||||||
void leaseEnded();
|
void leaseEnded();
|
||||||
|
|
||||||
|
|
|
@ -33,9 +33,9 @@ using namespace std::literals;
|
||||||
namespace KWin
|
namespace KWin
|
||||||
{
|
{
|
||||||
|
|
||||||
static const QVector<uint64_t> implicitModifier = {DRM_FORMAT_MOD_INVALID};
|
static const QList<uint64_t> implicitModifier = {DRM_FORMAT_MOD_INVALID};
|
||||||
static const QMap<uint32_t, QVector<uint64_t>> legacyFormats = {{DRM_FORMAT_XRGB8888, implicitModifier}};
|
static const QMap<uint32_t, QList<uint64_t>> legacyFormats = {{DRM_FORMAT_XRGB8888, implicitModifier}};
|
||||||
static const QMap<uint32_t, QVector<uint64_t>> legacyCursorFormats = {{DRM_FORMAT_ARGB8888, implicitModifier}};
|
static const QMap<uint32_t, QList<uint64_t>> legacyCursorFormats = {{DRM_FORMAT_ARGB8888, implicitModifier}};
|
||||||
|
|
||||||
DrmPipeline::DrmPipeline(DrmConnector *conn)
|
DrmPipeline::DrmPipeline(DrmConnector *conn)
|
||||||
: m_connector(conn)
|
: m_connector(conn)
|
||||||
|
@ -79,7 +79,7 @@ DrmPipeline::Error DrmPipeline::present()
|
||||||
Q_ASSERT(m_pending.crtc);
|
Q_ASSERT(m_pending.crtc);
|
||||||
if (gpu()->atomicModeSetting()) {
|
if (gpu()->atomicModeSetting()) {
|
||||||
// test the full state, to take pending commits into account
|
// test the full state, to take pending commits into account
|
||||||
auto fullState = std::make_unique<DrmAtomicCommit>(QVector<DrmPipeline *>{this});
|
auto fullState = std::make_unique<DrmAtomicCommit>(QList<DrmPipeline *>{this});
|
||||||
if (Error err = prepareAtomicPresentation(fullState.get()); err != Error::None) {
|
if (Error err = prepareAtomicPresentation(fullState.get()); err != Error::None) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
@ -90,7 +90,7 @@ DrmPipeline::Error DrmPipeline::present()
|
||||||
return errnoToError();
|
return errnoToError();
|
||||||
}
|
}
|
||||||
// only give the actual state update to the commit thread, so that it can potentially reorder the commits
|
// only give the actual state update to the commit thread, so that it can potentially reorder the commits
|
||||||
auto primaryPlaneUpdate = std::make_unique<DrmAtomicCommit>(QVector<DrmPipeline *>{this});
|
auto primaryPlaneUpdate = std::make_unique<DrmAtomicCommit>(QList<DrmPipeline *>{this});
|
||||||
if (Error err = prepareAtomicPresentation(primaryPlaneUpdate.get()); err != Error::None) {
|
if (Error err = prepareAtomicPresentation(primaryPlaneUpdate.get()); err != Error::None) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
@ -111,7 +111,7 @@ bool DrmPipeline::maybeModeset()
|
||||||
return gpu()->maybeModeset();
|
return gpu()->maybeModeset();
|
||||||
}
|
}
|
||||||
|
|
||||||
DrmPipeline::Error DrmPipeline::commitPipelines(const QVector<DrmPipeline *> &pipelines, CommitMode mode, const QVector<DrmObject *> &unusedObjects)
|
DrmPipeline::Error DrmPipeline::commitPipelines(const QList<DrmPipeline *> &pipelines, CommitMode mode, const QList<DrmObject *> &unusedObjects)
|
||||||
{
|
{
|
||||||
Q_ASSERT(!pipelines.isEmpty());
|
Q_ASSERT(!pipelines.isEmpty());
|
||||||
if (pipelines[0]->gpu()->atomicModeSetting()) {
|
if (pipelines[0]->gpu()->atomicModeSetting()) {
|
||||||
|
@ -121,7 +121,7 @@ DrmPipeline::Error DrmPipeline::commitPipelines(const QVector<DrmPipeline *> &pi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DrmPipeline::Error DrmPipeline::commitPipelinesAtomic(const QVector<DrmPipeline *> &pipelines, CommitMode mode, const QVector<DrmObject *> &unusedObjects)
|
DrmPipeline::Error DrmPipeline::commitPipelinesAtomic(const QList<DrmPipeline *> &pipelines, CommitMode mode, const QList<DrmObject *> &unusedObjects)
|
||||||
{
|
{
|
||||||
auto commit = std::make_unique<DrmAtomicCommit>(pipelines);
|
auto commit = std::make_unique<DrmAtomicCommit>(pipelines);
|
||||||
if (mode == CommitMode::Test) {
|
if (mode == CommitMode::Test) {
|
||||||
|
@ -376,7 +376,7 @@ bool DrmPipeline::updateCursor()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// test the full state, to take pending commits into account
|
// test the full state, to take pending commits into account
|
||||||
auto fullState = std::make_unique<DrmAtomicCommit>(QVector<DrmPipeline *>{this});
|
auto fullState = std::make_unique<DrmAtomicCommit>(QList<DrmPipeline *>{this});
|
||||||
if (prepareAtomicPresentation(fullState.get()) != Error::None) {
|
if (prepareAtomicPresentation(fullState.get()) != Error::None) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -385,7 +385,7 @@ bool DrmPipeline::updateCursor()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// only give the actual state update to the commit thread, so that it can potentially reorder the commits
|
// only give the actual state update to the commit thread, so that it can potentially reorder the commits
|
||||||
auto cursorOnly = std::make_unique<DrmAtomicCommit>(QVector<DrmPipeline *>{this});
|
auto cursorOnly = std::make_unique<DrmAtomicCommit>(QList<DrmPipeline *>{this});
|
||||||
prepareAtomicCursor(cursorOnly.get());
|
prepareAtomicCursor(cursorOnly.get());
|
||||||
cursorOnly->setCursorOnly(true);
|
cursorOnly->setCursorOnly(true);
|
||||||
m_commitThread->addCommit(std::move(cursorOnly));
|
m_commitThread->addCommit(std::move(cursorOnly));
|
||||||
|
@ -434,12 +434,12 @@ DrmOutput *DrmPipeline::output() const
|
||||||
return m_output;
|
return m_output;
|
||||||
}
|
}
|
||||||
|
|
||||||
QMap<uint32_t, QVector<uint64_t>> DrmPipeline::formats() const
|
QMap<uint32_t, QList<uint64_t>> DrmPipeline::formats() const
|
||||||
{
|
{
|
||||||
return m_pending.formats;
|
return m_pending.formats;
|
||||||
}
|
}
|
||||||
|
|
||||||
QMap<uint32_t, QVector<uint64_t>> DrmPipeline::cursorFormats() const
|
QMap<uint32_t, QList<uint64_t>> DrmPipeline::cursorFormats() const
|
||||||
{
|
{
|
||||||
if (m_pending.crtc && m_pending.crtc->cursorPlane()) {
|
if (m_pending.crtc && m_pending.crtc->cursorPlane()) {
|
||||||
return m_pending.crtc->cursorPlane()->formats();
|
return m_pending.crtc->cursorPlane()->formats();
|
||||||
|
@ -502,7 +502,7 @@ DrmGammaRamp::DrmGammaRamp(DrmCrtc *crtc, const std::shared_ptr<ColorTransformat
|
||||||
: m_lut(transformation, crtc->gammaRampSize())
|
: m_lut(transformation, crtc->gammaRampSize())
|
||||||
{
|
{
|
||||||
if (crtc->gpu()->atomicModeSetting()) {
|
if (crtc->gpu()->atomicModeSetting()) {
|
||||||
QVector<drm_color_lut> atomicLut(m_lut.size());
|
QList<drm_color_lut> atomicLut(m_lut.size());
|
||||||
for (uint32_t i = 0; i < m_lut.size(); i++) {
|
for (uint32_t i = 0; i < m_lut.size(); i++) {
|
||||||
atomicLut[i].red = m_lut.red()[i];
|
atomicLut[i].red = m_lut.red()[i];
|
||||||
atomicLut[i].green = m_lut.green()[i];
|
atomicLut[i].green = m_lut.green()[i];
|
||||||
|
|
|
@ -9,9 +9,9 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <QList>
|
||||||
#include <QPoint>
|
#include <QPoint>
|
||||||
#include <QSize>
|
#include <QSize>
|
||||||
#include <QVector>
|
|
||||||
|
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <xf86drmMode.h>
|
#include <xf86drmMode.h>
|
||||||
|
@ -93,8 +93,8 @@ public:
|
||||||
bool modesetPresentPending() const;
|
bool modesetPresentPending() const;
|
||||||
void resetModesetPresentPending();
|
void resetModesetPresentPending();
|
||||||
|
|
||||||
QMap<uint32_t, QVector<uint64_t>> formats() const;
|
QMap<uint32_t, QList<uint64_t>> formats() const;
|
||||||
QMap<uint32_t, QVector<uint64_t>> cursorFormats() const;
|
QMap<uint32_t, QList<uint64_t>> cursorFormats() const;
|
||||||
bool pruneModifier();
|
bool pruneModifier();
|
||||||
|
|
||||||
void setOutput(DrmOutput *output);
|
void setOutput(DrmOutput *output);
|
||||||
|
@ -139,7 +139,7 @@ public:
|
||||||
CommitModeset
|
CommitModeset
|
||||||
};
|
};
|
||||||
Q_ENUM(CommitMode)
|
Q_ENUM(CommitMode)
|
||||||
static Error commitPipelines(const QVector<DrmPipeline *> &pipelines, CommitMode mode, const QVector<DrmObject *> &unusedObjects = {});
|
static Error commitPipelines(const QList<DrmPipeline *> &pipelines, CommitMode mode, const QList<DrmObject *> &unusedObjects = {});
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool isBufferForDirectScanout() const;
|
bool isBufferForDirectScanout() const;
|
||||||
|
@ -153,7 +153,7 @@ private:
|
||||||
Error legacyModeset();
|
Error legacyModeset();
|
||||||
Error applyPendingChangesLegacy();
|
Error applyPendingChangesLegacy();
|
||||||
bool setCursorLegacy();
|
bool setCursorLegacy();
|
||||||
static Error commitPipelinesLegacy(const QVector<DrmPipeline *> &pipelines, CommitMode mode);
|
static Error commitPipelinesLegacy(const QList<DrmPipeline *> &pipelines, CommitMode mode);
|
||||||
|
|
||||||
// atomic modesetting only
|
// atomic modesetting only
|
||||||
void atomicCommitSuccessful();
|
void atomicCommitSuccessful();
|
||||||
|
@ -161,7 +161,7 @@ private:
|
||||||
Error prepareAtomicPresentation(DrmAtomicCommit *commit);
|
Error prepareAtomicPresentation(DrmAtomicCommit *commit);
|
||||||
void prepareAtomicCursor(DrmAtomicCommit *commit);
|
void prepareAtomicCursor(DrmAtomicCommit *commit);
|
||||||
void prepareAtomicDisable(DrmAtomicCommit *commit);
|
void prepareAtomicDisable(DrmAtomicCommit *commit);
|
||||||
static Error commitPipelinesAtomic(const QVector<DrmPipeline *> &pipelines, CommitMode mode, const QVector<DrmObject *> &unusedObjects);
|
static Error commitPipelinesAtomic(const QList<DrmPipeline *> &pipelines, CommitMode mode, const QList<DrmObject *> &unusedObjects);
|
||||||
|
|
||||||
DrmOutput *m_output = nullptr;
|
DrmOutput *m_output = nullptr;
|
||||||
DrmConnector *m_connector = nullptr;
|
DrmConnector *m_connector = nullptr;
|
||||||
|
@ -172,7 +172,7 @@ private:
|
||||||
struct State
|
struct State
|
||||||
{
|
{
|
||||||
DrmCrtc *crtc = nullptr;
|
DrmCrtc *crtc = nullptr;
|
||||||
QMap<uint32_t, QVector<uint64_t>> formats;
|
QMap<uint32_t, QList<uint64_t>> formats;
|
||||||
bool active = true; // whether or not the pipeline should be currently used
|
bool active = true; // whether or not the pipeline should be currently used
|
||||||
bool enabled = true; // whether or not the pipeline needs a crtc
|
bool enabled = true; // whether or not the pipeline needs a crtc
|
||||||
bool needsModeset = false;
|
bool needsModeset = false;
|
||||||
|
|
|
@ -65,7 +65,7 @@ DrmPipeline::Error DrmPipeline::legacyModeset()
|
||||||
return Error::None;
|
return Error::None;
|
||||||
}
|
}
|
||||||
|
|
||||||
DrmPipeline::Error DrmPipeline::commitPipelinesLegacy(const QVector<DrmPipeline *> &pipelines, CommitMode mode)
|
DrmPipeline::Error DrmPipeline::commitPipelinesLegacy(const QList<DrmPipeline *> &pipelines, CommitMode mode)
|
||||||
{
|
{
|
||||||
Error err = Error::None;
|
Error err = Error::None;
|
||||||
for (const auto &pipeline : pipelines) {
|
for (const auto &pipeline : pipelines) {
|
||||||
|
|
|
@ -96,7 +96,7 @@ bool DrmPlane::updateProperties()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// if we don't have modifier support, assume the cursor needs a linear buffer
|
// if we don't have modifier support, assume the cursor needs a linear buffer
|
||||||
const QVector<uint64_t> modifiers = {type.enumValue() == TypeIndex::Cursor ? DRM_FORMAT_MOD_LINEAR : DRM_FORMAT_MOD_INVALID};
|
const QList<uint64_t> modifiers = {type.enumValue() == TypeIndex::Cursor ? DRM_FORMAT_MOD_LINEAR : DRM_FORMAT_MOD_INVALID};
|
||||||
for (uint32_t i = 0; i < p->count_formats; i++) {
|
for (uint32_t i = 0; i < p->count_formats; i++) {
|
||||||
m_supportedFormats.insert(p->formats[i], modifiers);
|
m_supportedFormats.insert(p->formats[i], modifiers);
|
||||||
}
|
}
|
||||||
|
@ -127,7 +127,7 @@ bool DrmPlane::isCrtcSupported(int pipeIndex) const
|
||||||
return (m_possibleCrtcs & (1 << pipeIndex));
|
return (m_possibleCrtcs & (1 << pipeIndex));
|
||||||
}
|
}
|
||||||
|
|
||||||
QMap<uint32_t, QVector<uint64_t>> DrmPlane::formats() const
|
QMap<uint32_t, QList<uint64_t>> DrmPlane::formats() const
|
||||||
{
|
{
|
||||||
return m_supportedFormats;
|
return m_supportedFormats;
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ public:
|
||||||
void disable(DrmAtomicCommit *commit) override;
|
void disable(DrmAtomicCommit *commit) override;
|
||||||
|
|
||||||
bool isCrtcSupported(int pipeIndex) const;
|
bool isCrtcSupported(int pipeIndex) const;
|
||||||
QMap<uint32_t, QVector<uint64_t>> formats() const;
|
QMap<uint32_t, QList<uint64_t>> formats() const;
|
||||||
|
|
||||||
std::shared_ptr<DrmFramebuffer> currentBuffer() const;
|
std::shared_ptr<DrmFramebuffer> currentBuffer() const;
|
||||||
void setCurrentBuffer(const std::shared_ptr<DrmFramebuffer> &b);
|
void setCurrentBuffer(const std::shared_ptr<DrmFramebuffer> &b);
|
||||||
|
@ -83,7 +83,7 @@ public:
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<DrmFramebuffer> m_current;
|
std::shared_ptr<DrmFramebuffer> m_current;
|
||||||
|
|
||||||
QMap<uint32_t, QVector<uint64_t>> m_supportedFormats;
|
QMap<uint32_t, QList<uint64_t>> m_supportedFormats;
|
||||||
uint32_t m_possibleCrtcs;
|
uint32_t m_possibleCrtcs;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
namespace KWin
|
namespace KWin
|
||||||
{
|
{
|
||||||
|
|
||||||
DrmProperty::DrmProperty(DrmObject *obj, const QByteArray &name, const QVector<QByteArray> &enumNames)
|
DrmProperty::DrmProperty(DrmObject *obj, const QByteArray &name, const QList<QByteArray> &enumNames)
|
||||||
: m_obj(obj)
|
: m_obj(obj)
|
||||||
, m_propName(name)
|
, m_propName(name)
|
||||||
, m_enumNames(enumNames)
|
, m_enumNames(enumNames)
|
||||||
|
|
|
@ -13,8 +13,8 @@
|
||||||
#include "drm_logging.h"
|
#include "drm_logging.h"
|
||||||
|
|
||||||
#include <QByteArray>
|
#include <QByteArray>
|
||||||
|
#include <QList>
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
#include <QVector>
|
|
||||||
|
|
||||||
#include <xf86drmMode.h>
|
#include <xf86drmMode.h>
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ class DrmPropertyList;
|
||||||
class DrmProperty
|
class DrmProperty
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
DrmProperty(DrmObject *obj, const QByteArray &name, const QVector<QByteArray> &enumNames = {});
|
DrmProperty(DrmObject *obj, const QByteArray &name, const QList<QByteArray> &enumNames = {});
|
||||||
|
|
||||||
const QByteArray &name() const;
|
const QByteArray &name() const;
|
||||||
DrmObject *drmObject() const;
|
DrmObject *drmObject() const;
|
||||||
|
@ -48,7 +48,7 @@ public:
|
||||||
protected:
|
protected:
|
||||||
DrmObject *const m_obj;
|
DrmObject *const m_obj;
|
||||||
const QByteArray m_propName;
|
const QByteArray m_propName;
|
||||||
const QVector<QByteArray> m_enumNames;
|
const QList<QByteArray> m_enumNames;
|
||||||
|
|
||||||
uint32_t m_propId = 0;
|
uint32_t m_propId = 0;
|
||||||
// the last known value from the kernel
|
// the last known value from the kernel
|
||||||
|
@ -69,7 +69,7 @@ template<typename Enum>
|
||||||
class DrmEnumProperty : public DrmProperty
|
class DrmEnumProperty : public DrmProperty
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
DrmEnumProperty(DrmObject *obj, const QByteArray &name, const QVector<QByteArray> &enumNames)
|
DrmEnumProperty(DrmObject *obj, const QByteArray &name, const QList<QByteArray> &enumNames)
|
||||||
: DrmProperty(obj, name, enumNames)
|
: DrmProperty(obj, name, enumNames)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,8 +10,8 @@
|
||||||
#include "drm_render_backend.h"
|
#include "drm_render_backend.h"
|
||||||
#include "platformsupport/scenes/qpainter/qpainterbackend.h"
|
#include "platformsupport/scenes/qpainter/qpainterbackend.h"
|
||||||
|
|
||||||
|
#include <QList>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QVector>
|
|
||||||
|
|
||||||
namespace KWin
|
namespace KWin
|
||||||
{
|
{
|
||||||
|
|
|
@ -117,7 +117,7 @@ std::shared_ptr<EglSwapchain> VirtualEglGbmLayer::createGbmSwapchain() const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static const QVector<uint64_t> implicitModifier{DRM_FORMAT_MOD_INVALID};
|
static const QList<uint64_t> implicitModifier{DRM_FORMAT_MOD_INVALID};
|
||||||
if (auto swapchain = EglSwapchain::create(m_eglBackend->gpu()->graphicsBufferAllocator(), m_eglBackend->contextObject(), size, format, implicitModifier)) {
|
if (auto swapchain = EglSwapchain::create(m_eglBackend->gpu()->graphicsBufferAllocator(), m_eglBackend->contextObject(), size, format, implicitModifier)) {
|
||||||
return swapchain;
|
return swapchain;
|
||||||
}
|
}
|
||||||
|
|
|
@ -226,7 +226,7 @@ KWin::TabletToolId createTabletId(libinput_tablet_tool *tool, Device *dev)
|
||||||
toolType = InputRedirection::Totem;
|
toolType = InputRedirection::Totem;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
QVector<InputRedirection::Capability> capabilities;
|
QList<InputRedirection::Capability> capabilities;
|
||||||
if (libinput_tablet_tool_has_pressure(tool)) {
|
if (libinput_tablet_tool_has_pressure(tool)) {
|
||||||
capabilities << InputRedirection::Pressure;
|
capabilities << InputRedirection::Pressure;
|
||||||
}
|
}
|
||||||
|
@ -586,7 +586,7 @@ void Connection::applyScreenToDevice(Device *device)
|
||||||
}
|
}
|
||||||
|
|
||||||
Output *deviceOutput = nullptr;
|
Output *deviceOutput = nullptr;
|
||||||
const QVector<Output *> outputs = kwinApp()->outputBackend()->outputs();
|
const QList<Output *> outputs = kwinApp()->outputBackend()->outputs();
|
||||||
|
|
||||||
// let's try to find a screen for it
|
// let's try to find a screen for it
|
||||||
if (!device->outputName().isEmpty()) {
|
if (!device->outputName().isEmpty()) {
|
||||||
|
|
|
@ -12,12 +12,12 @@
|
||||||
|
|
||||||
#include <KSharedConfig>
|
#include <KSharedConfig>
|
||||||
|
|
||||||
|
#include <QList>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QPointer>
|
#include <QPointer>
|
||||||
#include <QRecursiveMutex>
|
#include <QRecursiveMutex>
|
||||||
#include <QSize>
|
#include <QSize>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
#include <QVector>
|
|
||||||
#include <deque>
|
#include <deque>
|
||||||
|
|
||||||
class QSocketNotifier;
|
class QSocketNotifier;
|
||||||
|
@ -76,7 +76,7 @@ private:
|
||||||
std::unique_ptr<QSocketNotifier> m_notifier;
|
std::unique_ptr<QSocketNotifier> m_notifier;
|
||||||
QRecursiveMutex m_mutex;
|
QRecursiveMutex m_mutex;
|
||||||
std::deque<std::unique_ptr<Event>> m_eventQueue;
|
std::deque<std::unique_ptr<Event>> m_eventQueue;
|
||||||
QVector<Device *> m_devices;
|
QList<Device *> m_devices;
|
||||||
KSharedConfigPtr m_config;
|
KSharedConfigPtr m_config;
|
||||||
std::unique_ptr<ConnectionAdaptor> m_connectionAdaptor;
|
std::unique_ptr<ConnectionAdaptor> m_connectionAdaptor;
|
||||||
std::unique_ptr<Context> m_input;
|
std::unique_ptr<Context> m_input;
|
||||||
|
|
|
@ -14,11 +14,11 @@
|
||||||
|
|
||||||
#include <KConfigGroup>
|
#include <KConfigGroup>
|
||||||
|
|
||||||
|
#include <QList>
|
||||||
#include <QMatrix4x4>
|
#include <QMatrix4x4>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QPointer>
|
#include <QPointer>
|
||||||
#include <QSizeF>
|
#include <QSizeF>
|
||||||
#include <QVector>
|
|
||||||
|
|
||||||
struct libinput_device;
|
struct libinput_device;
|
||||||
|
|
||||||
|
|
|
@ -186,9 +186,9 @@ InputRedirection::PointerButtonState PointerEvent::buttonState() const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector<InputRedirection::PointerAxis> PointerEvent::axis() const
|
QList<InputRedirection::PointerAxis> PointerEvent::axis() const
|
||||||
{
|
{
|
||||||
QVector<InputRedirection::PointerAxis> a;
|
QList<InputRedirection::PointerAxis> a;
|
||||||
if (libinput_event_pointer_has_axis(m_pointerEvent, LIBINPUT_POINTER_AXIS_SCROLL_HORIZONTAL)) {
|
if (libinput_event_pointer_has_axis(m_pointerEvent, LIBINPUT_POINTER_AXIS_SCROLL_HORIZONTAL)) {
|
||||||
a << InputRedirection::PointerAxisHorizontal;
|
a << InputRedirection::PointerAxisHorizontal;
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,7 +84,7 @@ public:
|
||||||
uint32_t button() const;
|
uint32_t button() const;
|
||||||
InputRedirection::PointerButtonState buttonState() const;
|
InputRedirection::PointerButtonState buttonState() const;
|
||||||
std::chrono::microseconds time() const;
|
std::chrono::microseconds time() const;
|
||||||
QVector<InputRedirection::PointerAxis> axis() const;
|
QList<InputRedirection::PointerAxis> axis() const;
|
||||||
qreal scrollValue(InputRedirection::PointerAxis a) const;
|
qreal scrollValue(InputRedirection::PointerAxis a) const;
|
||||||
qint32 scrollValueV120(InputRedirection::PointerAxis axis) const;
|
qint32 scrollValueV120(InputRedirection::PointerAxis axis) const;
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ static FileDescriptor findRenderDevice()
|
||||||
return FileDescriptor{};
|
return FileDescriptor{};
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector<drmDevice *> devices(deviceCount);
|
QList<drmDevice *> devices(deviceCount);
|
||||||
if (drmGetDevices2(0, devices.data(), devices.size()) < 0) {
|
if (drmGetDevices2(0, devices.data(), devices.size()) < 0) {
|
||||||
return FileDescriptor{};
|
return FileDescriptor{};
|
||||||
}
|
}
|
||||||
|
@ -76,9 +76,9 @@ bool VirtualBackend::initialize()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector<CompositingType> VirtualBackend::supportedCompositors() const
|
QList<CompositingType> VirtualBackend::supportedCompositors() const
|
||||||
{
|
{
|
||||||
QVector<CompositingType> compositingTypes;
|
QList<CompositingType> compositingTypes;
|
||||||
if (m_gbmDevice) {
|
if (m_gbmDevice) {
|
||||||
compositingTypes.append(OpenGLCompositing);
|
compositingTypes.append(OpenGLCompositing);
|
||||||
}
|
}
|
||||||
|
@ -123,9 +123,9 @@ Output *VirtualBackend::addOutput(const OutputInfo &info)
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
void VirtualBackend::setVirtualOutputs(const QVector<OutputInfo> &infos)
|
void VirtualBackend::setVirtualOutputs(const QList<OutputInfo> &infos)
|
||||||
{
|
{
|
||||||
const QVector<VirtualOutput *> removed = m_outputs;
|
const QList<VirtualOutput *> removed = m_outputs;
|
||||||
|
|
||||||
for (const auto &info : infos) {
|
for (const auto &info : infos) {
|
||||||
createOutput(info);
|
createOutput(info);
|
||||||
|
|
|
@ -40,11 +40,11 @@ public:
|
||||||
bool internal = false;
|
bool internal = false;
|
||||||
};
|
};
|
||||||
Output *addOutput(const OutputInfo &info);
|
Output *addOutput(const OutputInfo &info);
|
||||||
void setVirtualOutputs(const QVector<OutputInfo> &infos);
|
void setVirtualOutputs(const QList<OutputInfo> &infos);
|
||||||
|
|
||||||
Outputs outputs() const override;
|
Outputs outputs() const override;
|
||||||
|
|
||||||
QVector<CompositingType> supportedCompositors() const override;
|
QList<CompositingType> supportedCompositors() const override;
|
||||||
|
|
||||||
void setEglDisplay(std::unique_ptr<EglDisplay> &&display);
|
void setEglDisplay(std::unique_ptr<EglDisplay> &&display);
|
||||||
EglDisplay *sceneEglDisplayObject() const override;
|
EglDisplay *sceneEglDisplayObject() const override;
|
||||||
|
@ -57,7 +57,7 @@ Q_SIGNALS:
|
||||||
private:
|
private:
|
||||||
VirtualOutput *createOutput(const OutputInfo &info);
|
VirtualOutput *createOutput(const OutputInfo &info);
|
||||||
|
|
||||||
QVector<VirtualOutput *> m_outputs;
|
QList<VirtualOutput *> m_outputs;
|
||||||
std::unique_ptr<EglDisplay> m_display;
|
std::unique_ptr<EglDisplay> m_display;
|
||||||
FileDescriptor m_drmFileDescriptor;
|
FileDescriptor m_drmFileDescriptor;
|
||||||
gbm_device *m_gbmDevice = nullptr;
|
gbm_device *m_gbmDevice = nullptr;
|
||||||
|
|
|
@ -11,9 +11,9 @@
|
||||||
#include "core/outputlayer.h"
|
#include "core/outputlayer.h"
|
||||||
#include "platformsupport/scenes/qpainter/qpainterbackend.h"
|
#include "platformsupport/scenes/qpainter/qpainterbackend.h"
|
||||||
|
|
||||||
|
#include <QList>
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QVector>
|
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
|
|
@ -562,9 +562,9 @@ void WaylandBackend::togglePointerLock()
|
||||||
m_pointerLockRequested = !m_pointerLockRequested;
|
m_pointerLockRequested = !m_pointerLockRequested;
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector<CompositingType> WaylandBackend::supportedCompositors() const
|
QList<CompositingType> WaylandBackend::supportedCompositors() const
|
||||||
{
|
{
|
||||||
QVector<CompositingType> ret;
|
QList<CompositingType> ret;
|
||||||
if (m_display->linuxDmabuf() && m_gbmDevice) {
|
if (m_display->linuxDmabuf() && m_gbmDevice) {
|
||||||
ret.append(OpenGLCompositing);
|
ret.append(OpenGLCompositing);
|
||||||
}
|
}
|
||||||
|
|
|
@ -227,11 +227,11 @@ public:
|
||||||
bool supportsPointerLock();
|
bool supportsPointerLock();
|
||||||
void togglePointerLock();
|
void togglePointerLock();
|
||||||
|
|
||||||
QVector<CompositingType> supportedCompositors() const override;
|
QList<CompositingType> supportedCompositors() const override;
|
||||||
|
|
||||||
WaylandOutput *findOutput(KWayland::Client::Surface *nativeSurface) const;
|
WaylandOutput *findOutput(KWayland::Client::Surface *nativeSurface) const;
|
||||||
Outputs outputs() const override;
|
Outputs outputs() const override;
|
||||||
QVector<WaylandOutput *> waylandOutputs() const
|
QList<WaylandOutput *> waylandOutputs() const
|
||||||
{
|
{
|
||||||
return m_outputs;
|
return m_outputs;
|
||||||
}
|
}
|
||||||
|
@ -265,7 +265,7 @@ private:
|
||||||
std::unique_ptr<WaylandDisplay> m_display;
|
std::unique_ptr<WaylandDisplay> m_display;
|
||||||
std::unique_ptr<WaylandSeat> m_seat;
|
std::unique_ptr<WaylandSeat> m_seat;
|
||||||
WaylandEglBackend *m_eglBackend = nullptr;
|
WaylandEglBackend *m_eglBackend = nullptr;
|
||||||
QVector<WaylandOutput *> m_outputs;
|
QList<WaylandOutput *> m_outputs;
|
||||||
bool m_pointerLockRequested = false;
|
bool m_pointerLockRequested = false;
|
||||||
FileDescriptor m_drmFileDescriptor;
|
FileDescriptor m_drmFileDescriptor;
|
||||||
gbm_device *m_gbmDevice = nullptr;
|
gbm_device *m_gbmDevice = nullptr;
|
||||||
|
|
|
@ -187,7 +187,7 @@ public:
|
||||||
dev_t mainDeviceId = 0;
|
dev_t mainDeviceId = 0;
|
||||||
dev_t trancheDeviceId = 0;
|
dev_t trancheDeviceId = 0;
|
||||||
MemoryMap formatTable;
|
MemoryMap formatTable;
|
||||||
QHash<uint32_t, QVector<uint64_t>> formats;
|
QHash<uint32_t, QList<uint64_t>> formats;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static void done(void *data, zwp_linux_dmabuf_feedback_v1 *zwp_linux_dmabuf_feedback_v1)
|
static void done(void *data, zwp_linux_dmabuf_feedback_v1 *zwp_linux_dmabuf_feedback_v1)
|
||||||
|
@ -299,7 +299,7 @@ QByteArray WaylandLinuxDmabufV1::mainDevice() const
|
||||||
return m_defaultFeedback->mainDevice;
|
return m_defaultFeedback->mainDevice;
|
||||||
}
|
}
|
||||||
|
|
||||||
QHash<uint32_t, QVector<uint64_t>> WaylandLinuxDmabufV1::formats() const
|
QHash<uint32_t, QList<uint64_t>> WaylandLinuxDmabufV1::formats() const
|
||||||
{
|
{
|
||||||
return m_defaultFeedback->formats;
|
return m_defaultFeedback->formats;
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@ public:
|
||||||
|
|
||||||
zwp_linux_dmabuf_v1 *handle() const;
|
zwp_linux_dmabuf_v1 *handle() const;
|
||||||
QByteArray mainDevice() const;
|
QByteArray mainDevice() const;
|
||||||
QHash<uint32_t, QVector<uint64_t>> formats() const;
|
QHash<uint32_t, QList<uint64_t>> formats() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static void format(void *data, struct zwp_linux_dmabuf_v1 *zwp_linux_dmabuf_v1, uint32_t format);
|
static void format(void *data, struct zwp_linux_dmabuf_v1 *zwp_linux_dmabuf_v1, uint32_t format);
|
||||||
|
|
|
@ -62,9 +62,9 @@ std::optional<OutputLayerBeginFrameInfo> WaylandEglPrimaryLayer::beginFrame()
|
||||||
|
|
||||||
const QSize nativeSize = m_waylandOutput->modeSize();
|
const QSize nativeSize = m_waylandOutput->modeSize();
|
||||||
if (!m_swapchain || m_swapchain->size() != nativeSize) {
|
if (!m_swapchain || m_swapchain->size() != nativeSize) {
|
||||||
const QHash<uint32_t, QVector<uint64_t>> formatTable = m_backend->backend()->display()->linuxDmabuf()->formats();
|
const QHash<uint32_t, QList<uint64_t>> formatTable = m_backend->backend()->display()->linuxDmabuf()->formats();
|
||||||
uint32_t format = DRM_FORMAT_INVALID;
|
uint32_t format = DRM_FORMAT_INVALID;
|
||||||
QVector<uint64_t> modifiers;
|
QList<uint64_t> modifiers;
|
||||||
for (const uint32_t &candidateFormat : {DRM_FORMAT_XRGB2101010, DRM_FORMAT_XRGB8888}) {
|
for (const uint32_t &candidateFormat : {DRM_FORMAT_XRGB2101010, DRM_FORMAT_XRGB8888}) {
|
||||||
auto it = formatTable.constFind(candidateFormat);
|
auto it = formatTable.constFind(candidateFormat);
|
||||||
if (it != formatTable.constEnd()) {
|
if (it != formatTable.constEnd()) {
|
||||||
|
@ -156,9 +156,9 @@ std::optional<OutputLayerBeginFrameInfo> WaylandEglCursorLayer::beginFrame()
|
||||||
const auto tmp = size().expandedTo(QSize(64, 64));
|
const auto tmp = size().expandedTo(QSize(64, 64));
|
||||||
const QSize bufferSize(std::ceil(tmp.width()), std::ceil(tmp.height()));
|
const QSize bufferSize(std::ceil(tmp.width()), std::ceil(tmp.height()));
|
||||||
if (!m_swapchain || m_swapchain->size() != bufferSize) {
|
if (!m_swapchain || m_swapchain->size() != bufferSize) {
|
||||||
const QHash<uint32_t, QVector<uint64_t>> formatTable = m_backend->backend()->display()->linuxDmabuf()->formats();
|
const QHash<uint32_t, QList<uint64_t>> formatTable = m_backend->backend()->display()->linuxDmabuf()->formats();
|
||||||
uint32_t format = DRM_FORMAT_INVALID;
|
uint32_t format = DRM_FORMAT_INVALID;
|
||||||
QVector<uint64_t> modifiers;
|
QList<uint64_t> modifiers;
|
||||||
for (const uint32_t &candidateFormat : {DRM_FORMAT_ARGB2101010, DRM_FORMAT_ARGB8888}) {
|
for (const uint32_t &candidateFormat : {DRM_FORMAT_ARGB2101010, DRM_FORMAT_ARGB8888}) {
|
||||||
auto it = formatTable.constFind(candidateFormat);
|
auto it = formatTable.constFind(candidateFormat);
|
||||||
if (it != formatTable.constEnd()) {
|
if (it != formatTable.constEnd()) {
|
||||||
|
|
|
@ -256,9 +256,9 @@ void X11StandaloneBackend::createEffectsHandler(Compositor *compositor, Workspac
|
||||||
new EffectsHandlerImplX11(compositor, scene);
|
new EffectsHandlerImplX11(compositor, scene);
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector<CompositingType> X11StandaloneBackend::supportedCompositors() const
|
QList<CompositingType> X11StandaloneBackend::supportedCompositors() const
|
||||||
{
|
{
|
||||||
QVector<CompositingType> compositors;
|
QList<CompositingType> compositors;
|
||||||
#if HAVE_GLX
|
#if HAVE_GLX
|
||||||
compositors << OpenGLCompositing;
|
compositors << OpenGLCompositing;
|
||||||
#endif
|
#endif
|
||||||
|
@ -286,9 +286,9 @@ void X11StandaloneBackend::updateOutputs()
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void X11StandaloneBackend::doUpdateOutputs()
|
void X11StandaloneBackend::doUpdateOutputs()
|
||||||
{
|
{
|
||||||
QVector<Output *> changed;
|
QList<Output *> changed;
|
||||||
QVector<Output *> added;
|
QList<Output *> added;
|
||||||
QVector<Output *> removed = m_outputs;
|
QList<Output *> removed = m_outputs;
|
||||||
|
|
||||||
if (Xcb::Extensions::self()->isRandrAvailable()) {
|
if (Xcb::Extensions::self()->isRandrAvailable()) {
|
||||||
T resources(rootWindow());
|
T resources(rootWindow());
|
||||||
|
@ -481,7 +481,7 @@ static int currentRefreshRate()
|
||||||
return refreshRate;
|
return refreshRate;
|
||||||
}
|
}
|
||||||
|
|
||||||
const QVector<Output *> outputs = kwinApp()->outputBackend()->outputs();
|
const QList<Output *> outputs = kwinApp()->outputBackend()->outputs();
|
||||||
if (outputs.isEmpty()) {
|
if (outputs.isEmpty()) {
|
||||||
return 60000;
|
return 60000;
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,7 +52,7 @@ public:
|
||||||
xcb_window_t rootWindow() const;
|
xcb_window_t rootWindow() const;
|
||||||
|
|
||||||
std::unique_ptr<OpenGLBackend> createOpenGLBackend() override;
|
std::unique_ptr<OpenGLBackend> createOpenGLBackend() override;
|
||||||
QVector<CompositingType> supportedCompositors() const override;
|
QList<CompositingType> supportedCompositors() const override;
|
||||||
|
|
||||||
void initOutputs();
|
void initOutputs();
|
||||||
void scheduleUpdateOutputs();
|
void scheduleUpdateOutputs();
|
||||||
|
@ -101,7 +101,7 @@ private:
|
||||||
std::unique_ptr<X11EventFilter> m_randrEventFilter;
|
std::unique_ptr<X11EventFilter> m_randrEventFilter;
|
||||||
std::unique_ptr<X11Keyboard> m_keyboard;
|
std::unique_ptr<X11Keyboard> m_keyboard;
|
||||||
std::unique_ptr<RenderLoop> m_renderLoop;
|
std::unique_ptr<RenderLoop> m_renderLoop;
|
||||||
QVector<Output *> m_outputs;
|
QList<Output *> m_outputs;
|
||||||
std::unique_ptr<EglDisplay> m_eglDisplay;
|
std::unique_ptr<EglDisplay> m_eglDisplay;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ namespace KWin
|
||||||
{
|
{
|
||||||
|
|
||||||
EffectsKeyboardInterceptionX11Filter::EffectsKeyboardInterceptionX11Filter(EffectsHandlerImpl *effects, X11Keyboard *keyboard)
|
EffectsKeyboardInterceptionX11Filter::EffectsKeyboardInterceptionX11Filter(EffectsHandlerImpl *effects, X11Keyboard *keyboard)
|
||||||
: X11EventFilter(QVector<int>{XCB_KEY_PRESS, XCB_KEY_RELEASE})
|
: X11EventFilter(QList<int>{XCB_KEY_PRESS, XCB_KEY_RELEASE})
|
||||||
, m_effects(effects)
|
, m_effects(effects)
|
||||||
, m_keyboard(keyboard)
|
, m_keyboard(keyboard)
|
||||||
{
|
{
|
||||||
|
|
|
@ -16,7 +16,7 @@ namespace KWin
|
||||||
{
|
{
|
||||||
|
|
||||||
EffectsMouseInterceptionX11Filter::EffectsMouseInterceptionX11Filter(xcb_window_t window, EffectsHandlerImpl *effects)
|
EffectsMouseInterceptionX11Filter::EffectsMouseInterceptionX11Filter(xcb_window_t window, EffectsHandlerImpl *effects)
|
||||||
: X11EventFilter(QVector<int>{XCB_BUTTON_PRESS, XCB_BUTTON_RELEASE, XCB_MOTION_NOTIFY})
|
: X11EventFilter(QList<int>{XCB_BUTTON_PRESS, XCB_BUTTON_RELEASE, XCB_MOTION_NOTIFY})
|
||||||
, m_effects(effects)
|
, m_effects(effects)
|
||||||
, m_window(window)
|
, m_window(window)
|
||||||
{
|
{
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
#include "workspace.h"
|
#include "workspace.h"
|
||||||
#include "x11_standalone_backend.h"
|
#include "x11_standalone_backend.h"
|
||||||
|
|
||||||
#include <QVector>
|
#include <QList>
|
||||||
|
|
||||||
#include <xcb/composite.h>
|
#include <xcb/composite.h>
|
||||||
#include <xcb/shape.h>
|
#include <xcb/shape.h>
|
||||||
|
@ -29,7 +29,7 @@ namespace KWin
|
||||||
{
|
{
|
||||||
OverlayWindowX11::OverlayWindowX11(X11StandaloneBackend *backend)
|
OverlayWindowX11::OverlayWindowX11(X11StandaloneBackend *backend)
|
||||||
: OverlayWindow()
|
: OverlayWindow()
|
||||||
, X11EventFilter(QVector<int>{XCB_EXPOSE, XCB_VISIBILITY_NOTIFY})
|
, X11EventFilter(QList<int>{XCB_EXPOSE, XCB_VISIBILITY_NOTIFY})
|
||||||
, m_backend(backend)
|
, m_backend(backend)
|
||||||
, m_visible(true)
|
, m_visible(true)
|
||||||
, m_shown(false)
|
, m_shown(false)
|
||||||
|
@ -120,7 +120,7 @@ void OverlayWindowX11::setShape(const QRegion ®)
|
||||||
if (reg == m_shape) {
|
if (reg == m_shape) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const QVector<xcb_rectangle_t> xrects = Xcb::regionToRects(reg);
|
const QList<xcb_rectangle_t> xrects = Xcb::regionToRects(reg);
|
||||||
xcb_shape_rectangles(connection(), XCB_SHAPE_SO_SET, XCB_SHAPE_SK_BOUNDING, XCB_CLIP_ORDERING_UNSORTED,
|
xcb_shape_rectangles(connection(), XCB_SHAPE_SO_SET, XCB_SHAPE_SK_BOUNDING, XCB_CLIP_ORDERING_UNSORTED,
|
||||||
m_window, 0, 0, xrects.count(), xrects.data());
|
m_window, 0, 0, xrects.count(), xrects.data());
|
||||||
setupInputShape(m_window);
|
setupInputShape(m_window);
|
||||||
|
|
|
@ -18,7 +18,7 @@ namespace KWin
|
||||||
{
|
{
|
||||||
|
|
||||||
ScreenEdgesFilter::ScreenEdgesFilter()
|
ScreenEdgesFilter::ScreenEdgesFilter()
|
||||||
: X11EventFilter(QVector<int>{XCB_MOTION_NOTIFY, XCB_ENTER_NOTIFY, XCB_CLIENT_MESSAGE})
|
: X11EventFilter(QList<int>{XCB_MOTION_NOTIFY, XCB_ENTER_NOTIFY, XCB_CLIENT_MESSAGE})
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ namespace KWin
|
||||||
{
|
{
|
||||||
|
|
||||||
WindowSelector::WindowSelector()
|
WindowSelector::WindowSelector()
|
||||||
: X11EventFilter(QVector<int>{
|
: X11EventFilter(QList<int>{
|
||||||
XCB_BUTTON_PRESS,
|
XCB_BUTTON_PRESS,
|
||||||
XCB_BUTTON_RELEASE,
|
XCB_BUTTON_RELEASE,
|
||||||
XCB_MOTION_NOTIFY,
|
XCB_MOTION_NOTIFY,
|
||||||
|
|
|
@ -14,7 +14,7 @@ namespace KWin
|
||||||
{
|
{
|
||||||
|
|
||||||
XFixesCursorEventFilter::XFixesCursorEventFilter(X11Cursor *cursor)
|
XFixesCursorEventFilter::XFixesCursorEventFilter(X11Cursor *cursor)
|
||||||
: X11EventFilter(QVector<int>{Xcb::Extensions::self()->fixesCursorNotifyEvent()})
|
: X11EventFilter(QList<int>{Xcb::Extensions::self()->fixesCursorNotifyEvent()})
|
||||||
, m_cursor(cursor)
|
, m_cursor(cursor)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,7 +42,7 @@ class XInputEventFilter : public X11EventFilter
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
XInputEventFilter(int xi_opcode)
|
XInputEventFilter(int xi_opcode)
|
||||||
: X11EventFilter(XCB_GE_GENERIC, xi_opcode, QVector<int>{XI_RawMotion, XI_RawButtonPress, XI_RawButtonRelease, XI_RawKeyPress, XI_RawKeyRelease, XI_TouchBegin, XI_TouchUpdate, XI_TouchOwnership, XI_TouchEnd})
|
: X11EventFilter(XCB_GE_GENERIC, xi_opcode, QList<int>{XI_RawMotion, XI_RawButtonPress, XI_RawButtonRelease, XI_RawKeyPress, XI_RawKeyRelease, XI_TouchBegin, XI_TouchUpdate, XI_TouchOwnership, XI_TouchEnd})
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
~XInputEventFilter() override = default;
|
~XInputEventFilter() override = default;
|
||||||
|
|
|
@ -324,7 +324,7 @@ void X11WindowedBackend::initDri3()
|
||||||
while (it.rem > 0) {
|
while (it.rem > 0) {
|
||||||
uint32_t format = driFormatForDepth(it.data->depth);
|
uint32_t format = driFormatForDepth(it.data->depth);
|
||||||
if (format) {
|
if (format) {
|
||||||
QVector<uint64_t> &mods = m_driFormats[format];
|
QList<uint64_t> &mods = m_driFormats[format];
|
||||||
|
|
||||||
if (m_driMajorVersion > 1 || m_driMinorVersion >= 2) {
|
if (m_driMajorVersion > 1 || m_driMinorVersion >= 2) {
|
||||||
xcb_dri3_get_supported_modifiers_cookie_t cookie = xcb_dri3_get_supported_modifiers(m_connection, m_screen->root, it.data->depth, 32);
|
xcb_dri3_get_supported_modifiers_cookie_t cookie = xcb_dri3_get_supported_modifiers(m_connection, m_screen->root, it.data->depth, 32);
|
||||||
|
@ -754,7 +754,7 @@ bool X11WindowedBackend::hasXInput() const
|
||||||
return m_hasXInput;
|
return m_hasXInput;
|
||||||
}
|
}
|
||||||
|
|
||||||
QHash<uint32_t, QVector<uint64_t>> X11WindowedBackend::driFormats() const
|
QHash<uint32_t, QList<uint64_t>> X11WindowedBackend::driFormats() const
|
||||||
{
|
{
|
||||||
return m_driFormats;
|
return m_driFormats;
|
||||||
}
|
}
|
||||||
|
@ -781,9 +781,9 @@ int X11WindowedBackend::driMinorVersion() const
|
||||||
return m_driMinorVersion;
|
return m_driMinorVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector<CompositingType> X11WindowedBackend::supportedCompositors() const
|
QList<CompositingType> X11WindowedBackend::supportedCompositors() const
|
||||||
{
|
{
|
||||||
QVector<CompositingType> ret;
|
QList<CompositingType> ret;
|
||||||
if (m_gbmDevice) {
|
if (m_gbmDevice) {
|
||||||
ret.append(OpenGLCompositing);
|
ret.append(OpenGLCompositing);
|
||||||
}
|
}
|
||||||
|
|
|
@ -108,7 +108,7 @@ public:
|
||||||
|
|
||||||
bool hasXInput() const;
|
bool hasXInput() const;
|
||||||
|
|
||||||
QHash<uint32_t, QVector<uint64_t>> driFormats() const;
|
QHash<uint32_t, QList<uint64_t>> driFormats() const;
|
||||||
uint32_t driFormatForDepth(int depth) const;
|
uint32_t driFormatForDepth(int depth) const;
|
||||||
int driMajorVersion() const;
|
int driMajorVersion() const;
|
||||||
int driMinorVersion() const;
|
int driMinorVersion() const;
|
||||||
|
@ -117,7 +117,7 @@ public:
|
||||||
std::unique_ptr<OpenGLBackend> createOpenGLBackend() override;
|
std::unique_ptr<OpenGLBackend> createOpenGLBackend() override;
|
||||||
std::unique_ptr<QPainterBackend> createQPainterBackend() override;
|
std::unique_ptr<QPainterBackend> createQPainterBackend() override;
|
||||||
std::unique_ptr<InputBackend> createInputBackend() override;
|
std::unique_ptr<InputBackend> createInputBackend() override;
|
||||||
QVector<CompositingType> supportedCompositors() const override;
|
QList<CompositingType> supportedCompositors() const override;
|
||||||
Outputs outputs() const override;
|
Outputs outputs() const override;
|
||||||
|
|
||||||
X11WindowedInputDevice *pointerDevice() const;
|
X11WindowedInputDevice *pointerDevice() const;
|
||||||
|
@ -173,13 +173,13 @@ private:
|
||||||
bool m_hasDri = false;
|
bool m_hasDri = false;
|
||||||
int m_driMajorVersion = 0;
|
int m_driMajorVersion = 0;
|
||||||
int m_driMinorVersion = 0;
|
int m_driMinorVersion = 0;
|
||||||
QHash<uint32_t, QVector<uint64_t>> m_driFormats;
|
QHash<uint32_t, QList<uint64_t>> m_driFormats;
|
||||||
|
|
||||||
FileDescriptor m_drmFileDescriptor;
|
FileDescriptor m_drmFileDescriptor;
|
||||||
gbm_device *m_gbmDevice = nullptr;
|
gbm_device *m_gbmDevice = nullptr;
|
||||||
std::unique_ptr<EglDisplay> m_eglDisplay;
|
std::unique_ptr<EglDisplay> m_eglDisplay;
|
||||||
|
|
||||||
QVector<X11WindowedOutput *> m_outputs;
|
QList<X11WindowedOutput *> m_outputs;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace KWin
|
} // namespace KWin
|
||||||
|
|
|
@ -39,7 +39,7 @@ std::optional<OutputLayerBeginFrameInfo> X11WindowedEglPrimaryLayer::beginFrame(
|
||||||
const QSize bufferSize = m_output->modeSize();
|
const QSize bufferSize = m_output->modeSize();
|
||||||
if (!m_swapchain || m_swapchain->size() != bufferSize) {
|
if (!m_swapchain || m_swapchain->size() != bufferSize) {
|
||||||
const uint32_t format = DRM_FORMAT_XRGB8888;
|
const uint32_t format = DRM_FORMAT_XRGB8888;
|
||||||
const QHash<uint32_t, QVector<uint64_t>> formatTable = m_backend->backend()->driFormats();
|
const QHash<uint32_t, QList<uint64_t>> formatTable = m_backend->backend()->driFormats();
|
||||||
if (!formatTable.contains(format)) {
|
if (!formatTable.contains(format)) {
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,8 +12,8 @@
|
||||||
#include "platformsupport/scenes/qpainter/qpainterbackend.h"
|
#include "platformsupport/scenes/qpainter/qpainterbackend.h"
|
||||||
|
|
||||||
#include <QImage>
|
#include <QImage>
|
||||||
|
#include <QList>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QVector>
|
|
||||||
|
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
|
@ -18,7 +18,7 @@ namespace KWin
|
||||||
class ColorManagerPrivate
|
class ColorManagerPrivate
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
QVector<ColorDevice *> devices;
|
QList<ColorDevice *> devices;
|
||||||
};
|
};
|
||||||
|
|
||||||
ColorManager::ColorManager()
|
ColorManager::ColorManager()
|
||||||
|
@ -36,7 +36,7 @@ ColorManager::ColorManager()
|
||||||
|
|
||||||
ColorManager::~ColorManager() = default;
|
ColorManager::~ColorManager() = default;
|
||||||
|
|
||||||
QVector<ColorDevice *> ColorManager::devices() const
|
QList<ColorDevice *> ColorManager::devices() const
|
||||||
{
|
{
|
||||||
return d->devices;
|
return d->devices;
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* Returns the list of all available color devices.
|
* Returns the list of all available color devices.
|
||||||
*/
|
*/
|
||||||
QVector<ColorDevice *> devices() const;
|
QList<ColorDevice *> devices() const;
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -120,8 +120,8 @@ void WaylandCompositor::start()
|
||||||
m_state = State::Starting;
|
m_state = State::Starting;
|
||||||
|
|
||||||
// If compositing has been restarted, try to use the last used compositing type.
|
// If compositing has been restarted, try to use the last used compositing type.
|
||||||
const QVector<CompositingType> availableCompositors = kwinApp()->outputBackend()->supportedCompositors();
|
const QList<CompositingType> availableCompositors = kwinApp()->outputBackend()->supportedCompositors();
|
||||||
QVector<CompositingType> candidateCompositors;
|
QList<CompositingType> candidateCompositors;
|
||||||
|
|
||||||
if (m_selectedCompositor != NoCompositing) {
|
if (m_selectedCompositor != NoCompositing) {
|
||||||
candidateCompositors.append(m_selectedCompositor);
|
candidateCompositors.append(m_selectedCompositor);
|
||||||
|
|
|
@ -280,7 +280,7 @@ void X11Compositor::start()
|
||||||
XCB_COMPOSITE_REDIRECT_MANUAL);
|
XCB_COMPOSITE_REDIRECT_MANUAL);
|
||||||
|
|
||||||
// Decide what compositing types can be used.
|
// Decide what compositing types can be used.
|
||||||
QVector<CompositingType> candidateCompositors = kwinApp()->outputBackend()->supportedCompositors();
|
QList<CompositingType> candidateCompositors = kwinApp()->outputBackend()->supportedCompositors();
|
||||||
const auto userConfigIt = std::find(candidateCompositors.begin(), candidateCompositors.end(), options->compositingMode());
|
const auto userConfigIt = std::find(candidateCompositors.begin(), candidateCompositors.end(), options->compositingMode());
|
||||||
if (userConfigIt != candidateCompositors.end()) {
|
if (userConfigIt != candidateCompositors.end()) {
|
||||||
candidateCompositors.erase(userConfigIt);
|
candidateCompositors.erase(userConfigIt);
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
*/
|
*/
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <QVector>
|
#include <QList>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
#include "kwin_export.h"
|
#include "kwin_export.h"
|
||||||
|
@ -30,7 +30,7 @@ public:
|
||||||
std::shared_ptr<ColorTransformation> transformation() const;
|
std::shared_ptr<ColorTransformation> transformation() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QVector<uint16_t> m_data;
|
QList<uint16_t> m_data;
|
||||||
const std::shared_ptr<ColorTransformation> m_transformation;
|
const std::shared_ptr<ColorTransformation> m_transformation;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
|
|
||||||
#include "kwin_export.h"
|
#include "kwin_export.h"
|
||||||
|
|
||||||
|
#include <QList>
|
||||||
#include <QSize>
|
#include <QSize>
|
||||||
#include <QVector>
|
|
||||||
|
|
||||||
namespace KWin
|
namespace KWin
|
||||||
{
|
{
|
||||||
|
@ -28,7 +28,7 @@ struct GraphicsBufferOptions
|
||||||
uint32_t format;
|
uint32_t format;
|
||||||
|
|
||||||
/// An optional list of modifiers, see DRM_FORMAT_MOD_*.
|
/// An optional list of modifiers, see DRM_FORMAT_MOD_*.
|
||||||
QVector<uint64_t> modifiers;
|
QList<uint64_t> modifiers;
|
||||||
|
|
||||||
/// Whether the graphics buffer should be suitable for software rendering.
|
/// Whether the graphics buffer should be suitable for software rendering.
|
||||||
bool software = false;
|
bool software = false;
|
||||||
|
|
|
@ -14,13 +14,13 @@
|
||||||
#include "utils/edid.h"
|
#include "utils/edid.h"
|
||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
#include <QList>
|
||||||
#include <QMatrix3x3>
|
#include <QMatrix3x3>
|
||||||
#include <QMatrix4x4>
|
#include <QMatrix4x4>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QRect>
|
#include <QRect>
|
||||||
#include <QSize>
|
#include <QSize>
|
||||||
#include <QUuid>
|
#include <QUuid>
|
||||||
#include <QVector>
|
|
||||||
|
|
||||||
namespace KWin
|
namespace KWin
|
||||||
{
|
{
|
||||||
|
|
|
@ -46,8 +46,8 @@ std::unique_ptr<QPainterBackend> OutputBackend::createQPainterBackend()
|
||||||
bool OutputBackend::applyOutputChanges(const OutputConfiguration &config)
|
bool OutputBackend::applyOutputChanges(const OutputConfiguration &config)
|
||||||
{
|
{
|
||||||
const auto availableOutputs = outputs();
|
const auto availableOutputs = outputs();
|
||||||
QVector<Output *> toBeEnabledOutputs;
|
QList<Output *> toBeEnabledOutputs;
|
||||||
QVector<Output *> toBeDisabledOutputs;
|
QList<Output *> toBeDisabledOutputs;
|
||||||
for (const auto &output : availableOutputs) {
|
for (const auto &output : availableOutputs) {
|
||||||
if (const auto changeset = config.constChangeSet(output)) {
|
if (const auto changeset = config.constChangeSet(output)) {
|
||||||
if (changeset->enabled) {
|
if (changeset->enabled) {
|
||||||
|
|
|
@ -29,12 +29,12 @@ class OutputConfiguration;
|
||||||
class EglDisplay;
|
class EglDisplay;
|
||||||
class Session;
|
class Session;
|
||||||
|
|
||||||
class KWIN_EXPORT Outputs : public QVector<Output *>
|
class KWIN_EXPORT Outputs : public QList<Output *>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Outputs(){};
|
Outputs(){};
|
||||||
template<typename T>
|
template<typename T>
|
||||||
Outputs(const QVector<T> &other)
|
Outputs(const QList<T> &other)
|
||||||
{
|
{
|
||||||
resize(other.size());
|
resize(other.size());
|
||||||
std::copy(other.constBegin(), other.constEnd(), begin());
|
std::copy(other.constBegin(), other.constEnd(), begin());
|
||||||
|
@ -72,7 +72,7 @@ public:
|
||||||
* The first item should be the most preferred one.
|
* The first item should be the most preferred one.
|
||||||
* @since 5.11
|
* @since 5.11
|
||||||
*/
|
*/
|
||||||
virtual QVector<CompositingType> supportedCompositors() const = 0;
|
virtual QList<CompositingType> supportedCompositors() const = 0;
|
||||||
|
|
||||||
virtual Outputs outputs() const = 0;
|
virtual Outputs outputs() const = 0;
|
||||||
Output *findOutput(const QString &name) const;
|
Output *findOutput(const QString &name) const;
|
||||||
|
|
|
@ -42,9 +42,9 @@ bool RenderBackend::testImportBuffer(GraphicsBuffer *buffer)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
QHash<uint32_t, QVector<uint64_t>> RenderBackend::supportedFormats() const
|
QHash<uint32_t, QList<uint64_t>> RenderBackend::supportedFormats() const
|
||||||
{
|
{
|
||||||
return QHash<uint32_t, QVector<uint64_t>>{{DRM_FORMAT_XRGB8888, QVector<uint64_t>{DRM_FORMAT_MOD_LINEAR}}};
|
return QHash<uint32_t, QList<uint64_t>>{{DRM_FORMAT_XRGB8888, QList<uint64_t>{DRM_FORMAT_MOD_LINEAR}}};
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<SurfaceTexture> RenderBackend::createSurfaceTextureX11(SurfacePixmapX11 *pixmap)
|
std::unique_ptr<SurfaceTexture> RenderBackend::createSurfaceTextureX11(SurfacePixmapX11 *pixmap)
|
||||||
|
|
|
@ -47,7 +47,7 @@ public:
|
||||||
virtual GraphicsBufferAllocator *graphicsBufferAllocator() const;
|
virtual GraphicsBufferAllocator *graphicsBufferAllocator() const;
|
||||||
|
|
||||||
virtual bool testImportBuffer(GraphicsBuffer *buffer);
|
virtual bool testImportBuffer(GraphicsBuffer *buffer);
|
||||||
virtual QHash<uint32_t, QVector<uint64_t>> supportedFormats() const;
|
virtual QHash<uint32_t, QList<uint64_t>> supportedFormats() const;
|
||||||
|
|
||||||
virtual std::unique_ptr<SurfaceTexture> createSurfaceTextureX11(SurfacePixmapX11 *pixmap);
|
virtual std::unique_ptr<SurfaceTexture> createSurfaceTextureX11(SurfacePixmapX11 *pixmap);
|
||||||
virtual std::unique_ptr<SurfaceTexture> createSurfaceTextureWayland(SurfacePixmap *pixmap);
|
virtual std::unique_ptr<SurfaceTexture> createSurfaceTextureWayland(SurfacePixmap *pixmap);
|
||||||
|
|
|
@ -330,9 +330,9 @@ void Cursor::doStopCursorTracking()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector<QByteArray> Cursor::cursorAlternativeNames(const QByteArray &name)
|
QList<QByteArray> Cursor::cursorAlternativeNames(const QByteArray &name)
|
||||||
{
|
{
|
||||||
static const QHash<QByteArray, QVector<QByteArray>> alternatives = {
|
static const QHash<QByteArray, QList<QByteArray>> alternatives = {
|
||||||
{
|
{
|
||||||
QByteArrayLiteral("left_ptr"),
|
QByteArrayLiteral("left_ptr"),
|
||||||
{
|
{
|
||||||
|
@ -604,7 +604,7 @@ QVector<QByteArray> Cursor::cursorAlternativeNames(const QByteArray &name)
|
||||||
if (it != alternatives.end()) {
|
if (it != alternatives.end()) {
|
||||||
return it.value();
|
return it.value();
|
||||||
}
|
}
|
||||||
return QVector<QByteArray>();
|
return QList<QByteArray>();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString Cursor::defaultThemeName()
|
QString Cursor::defaultThemeName()
|
||||||
|
|
|
@ -139,7 +139,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* @return list of alternative names for the cursor with @p name
|
* @return list of alternative names for the cursor with @p name
|
||||||
*/
|
*/
|
||||||
static QVector<QByteArray> cursorAlternativeNames(const QByteArray &name);
|
static QList<QByteArray> cursorAlternativeNames(const QByteArray &name);
|
||||||
/**
|
/**
|
||||||
* Returns the default Xcursor theme name.
|
* Returns the default Xcursor theme name.
|
||||||
*/
|
*/
|
||||||
|
@ -304,7 +304,7 @@ private:
|
||||||
static Cursors *s_self;
|
static Cursors *s_self;
|
||||||
Cursor *m_currentCursor = nullptr;
|
Cursor *m_currentCursor = nullptr;
|
||||||
Cursor *m_mouse = nullptr;
|
Cursor *m_mouse = nullptr;
|
||||||
QVector<Cursor *> m_cursors;
|
QList<Cursor *> m_cursors;
|
||||||
int m_cursorHideCounter = 0;
|
int m_cursorHideCounter = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -66,7 +66,7 @@ private:
|
||||||
|
|
||||||
KXcursorTheme m_theme;
|
KXcursorTheme m_theme;
|
||||||
QByteArray m_shape;
|
QByteArray m_shape;
|
||||||
QVector<KXcursorSprite> m_sprites;
|
QList<KXcursorSprite> m_sprites;
|
||||||
QTimer m_delayTimer;
|
QTimer m_delayTimer;
|
||||||
QImage m_image;
|
QImage m_image;
|
||||||
int m_currentSprite = -1;
|
int m_currentSprite = -1;
|
||||||
|
|
|
@ -361,7 +361,7 @@ VirtualDesktopManagerDBusInterface::VirtualDesktopManagerDBusInterface(VirtualDe
|
||||||
|
|
||||||
connect(m_manager, &VirtualDesktopManager::rowsChanged, this, &VirtualDesktopManagerDBusInterface::rowsChanged);
|
connect(m_manager, &VirtualDesktopManager::rowsChanged, this, &VirtualDesktopManagerDBusInterface::rowsChanged);
|
||||||
|
|
||||||
const QVector<VirtualDesktop *> allDesks = m_manager->desktops();
|
const QList<VirtualDesktop *> allDesks = m_manager->desktops();
|
||||||
for (auto *vd : allDesks) {
|
for (auto *vd : allDesks) {
|
||||||
connect(vd, &VirtualDesktop::x11DesktopNumberChanged, this, [this, vd]() {
|
connect(vd, &VirtualDesktop::x11DesktopNumberChanged, this, [this, vd]() {
|
||||||
DBusDesktopDataStruct data{.position = vd->x11DesktopNumber() - 1, .id = vd->id(), .name = vd->name()};
|
DBusDesktopDataStruct data{.position = vd->x11DesktopNumber() - 1, .id = vd->id(), .name = vd->name()};
|
||||||
|
|
|
@ -899,7 +899,7 @@ static const quint32 s_windowBitMask = 0x0000FFFF;
|
||||||
static const quint32 s_idDistance = 10000;
|
static const quint32 s_idDistance = 10000;
|
||||||
|
|
||||||
template<class T>
|
template<class T>
|
||||||
void DebugConsoleModel::add(int parentRow, QVector<T *> &windows, T *window)
|
void DebugConsoleModel::add(int parentRow, QList<T *> &windows, T *window)
|
||||||
{
|
{
|
||||||
beginInsertRows(index(parentRow, 0, QModelIndex()), windows.count(), windows.count());
|
beginInsertRows(index(parentRow, 0, QModelIndex()), windows.count(), windows.count());
|
||||||
windows.append(window);
|
windows.append(window);
|
||||||
|
@ -907,7 +907,7 @@ void DebugConsoleModel::add(int parentRow, QVector<T *> &windows, T *window)
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class T>
|
template<class T>
|
||||||
void DebugConsoleModel::remove(int parentRow, QVector<T *> &windows, T *window)
|
void DebugConsoleModel::remove(int parentRow, QList<T *> &windows, T *window)
|
||||||
{
|
{
|
||||||
const int remove = windows.indexOf(window);
|
const int remove = windows.indexOf(window);
|
||||||
if (remove == -1) {
|
if (remove == -1) {
|
||||||
|
@ -1032,7 +1032,7 @@ int DebugConsoleModel::rowCount(const QModelIndex &parent) const
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class T>
|
template<class T>
|
||||||
QModelIndex DebugConsoleModel::indexForWindow(int row, int column, const QVector<T *> &windows, int id) const
|
QModelIndex DebugConsoleModel::indexForWindow(int row, int column, const QList<T *> &windows, int id) const
|
||||||
{
|
{
|
||||||
if (column != 0) {
|
if (column != 0) {
|
||||||
return QModelIndex();
|
return QModelIndex();
|
||||||
|
@ -1187,7 +1187,7 @@ QVariant DebugConsoleModel::propertyData(QObject *object, const QModelIndex &ind
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class T>
|
template<class T>
|
||||||
QVariant DebugConsoleModel::windowData(const QModelIndex &index, int role, const QVector<T *> windows, const std::function<QString(T *)> &toString) const
|
QVariant DebugConsoleModel::windowData(const QModelIndex &index, int role, const QList<T *> windows, const std::function<QString(T *)> &toString) const
|
||||||
{
|
{
|
||||||
if (index.row() >= windows.count()) {
|
if (index.row() >= windows.count()) {
|
||||||
return QVariant();
|
return QVariant();
|
||||||
|
@ -1273,7 +1273,7 @@ QVariant DebugConsoleModel::data(const QModelIndex &index, int role) const
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class T>
|
template<class T>
|
||||||
static T *windowForIndex(const QModelIndex &index, const QVector<T *> &windows, int id)
|
static T *windowForIndex(const QModelIndex &index, const QList<T *> &windows, int id)
|
||||||
{
|
{
|
||||||
const qint32 row = (index.internalId() & s_windowBitMask) - (s_idDistance * id);
|
const qint32 row = (index.internalId() & s_windowBitMask) - (s_idDistance * id);
|
||||||
if (row < 0 || row >= windows.count()) {
|
if (row < 0 || row >= windows.count()) {
|
||||||
|
@ -1561,7 +1561,7 @@ void InputDeviceModel::slotPropertyChanged()
|
||||||
if (metaProperty.notifySignalIndex() == senderSignalIndex()) {
|
if (metaProperty.notifySignalIndex() == senderSignalIndex()) {
|
||||||
const QModelIndex parent = index(m_devices.indexOf(device), 0, QModelIndex());
|
const QModelIndex parent = index(m_devices.indexOf(device), 0, QModelIndex());
|
||||||
const QModelIndex child = index(i, 1, parent);
|
const QModelIndex child = index(i, 1, parent);
|
||||||
Q_EMIT dataChanged(child, child, QVector<int>{Qt::DisplayRole});
|
Q_EMIT dataChanged(child, child, QList<int>{Qt::DisplayRole});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,8 +14,8 @@
|
||||||
#include <kwin_export.h>
|
#include <kwin_export.h>
|
||||||
|
|
||||||
#include <QAbstractItemModel>
|
#include <QAbstractItemModel>
|
||||||
|
#include <QList>
|
||||||
#include <QStyledItemDelegate>
|
#include <QStyledItemDelegate>
|
||||||
#include <QVector>
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
@ -55,28 +55,28 @@ private Q_SLOTS:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
template<class T>
|
template<class T>
|
||||||
QModelIndex indexForWindow(int row, int column, const QVector<T *> &windows, int id) const;
|
QModelIndex indexForWindow(int row, int column, const QList<T *> &windows, int id) const;
|
||||||
template<class T>
|
template<class T>
|
||||||
QModelIndex indexForProperty(int row, int column, const QModelIndex &parent, T *(DebugConsoleModel::*filter)(const QModelIndex &) const) const;
|
QModelIndex indexForProperty(int row, int column, const QModelIndex &parent, T *(DebugConsoleModel::*filter)(const QModelIndex &) const) const;
|
||||||
template<class T>
|
template<class T>
|
||||||
int propertyCount(const QModelIndex &parent, T *(DebugConsoleModel::*filter)(const QModelIndex &) const) const;
|
int propertyCount(const QModelIndex &parent, T *(DebugConsoleModel::*filter)(const QModelIndex &) const) const;
|
||||||
QVariant propertyData(QObject *object, const QModelIndex &index, int role) const;
|
QVariant propertyData(QObject *object, const QModelIndex &index, int role) const;
|
||||||
template<class T>
|
template<class T>
|
||||||
QVariant windowData(const QModelIndex &index, int role, const QVector<T *> windows, const std::function<QString(T *)> &toString) const;
|
QVariant windowData(const QModelIndex &index, int role, const QList<T *> windows, const std::function<QString(T *)> &toString) const;
|
||||||
template<class T>
|
template<class T>
|
||||||
void add(int parentRow, QVector<T *> &windows, T *window);
|
void add(int parentRow, QList<T *> &windows, T *window);
|
||||||
template<class T>
|
template<class T>
|
||||||
void remove(int parentRow, QVector<T *> &windows, T *window);
|
void remove(int parentRow, QList<T *> &windows, T *window);
|
||||||
WaylandWindow *waylandWindow(const QModelIndex &index) const;
|
WaylandWindow *waylandWindow(const QModelIndex &index) const;
|
||||||
InternalWindow *internalWindow(const QModelIndex &index) const;
|
InternalWindow *internalWindow(const QModelIndex &index) const;
|
||||||
X11Window *x11Window(const QModelIndex &index) const;
|
X11Window *x11Window(const QModelIndex &index) const;
|
||||||
X11Window *unmanaged(const QModelIndex &index) const;
|
X11Window *unmanaged(const QModelIndex &index) const;
|
||||||
int topLevelRowCount() const;
|
int topLevelRowCount() const;
|
||||||
|
|
||||||
QVector<WaylandWindow *> m_waylandWindows;
|
QList<WaylandWindow *> m_waylandWindows;
|
||||||
QVector<InternalWindow *> m_internalWindows;
|
QList<InternalWindow *> m_internalWindows;
|
||||||
QVector<X11Window *> m_x11Windows;
|
QList<X11Window *> m_x11Windows;
|
||||||
QVector<X11Window *> m_unmanageds;
|
QList<X11Window *> m_unmanageds;
|
||||||
};
|
};
|
||||||
|
|
||||||
class DebugConsoleDelegate : public QStyledItemDelegate
|
class DebugConsoleDelegate : public QStyledItemDelegate
|
||||||
|
@ -196,6 +196,6 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
AbstractDataSource *m_source = nullptr;
|
AbstractDataSource *m_source = nullptr;
|
||||||
QVector<QByteArray> m_data;
|
QList<QByteArray> m_data;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -251,8 +251,8 @@ static QString settingsProperty(const QVariant &variant)
|
||||||
{
|
{
|
||||||
if (QLatin1String(variant.typeName()) == QLatin1String("KDecoration2::BorderSize")) {
|
if (QLatin1String(variant.typeName()) == QLatin1String("KDecoration2::BorderSize")) {
|
||||||
return QString::number(variant.toInt());
|
return QString::number(variant.toInt());
|
||||||
} else if (QLatin1String(variant.typeName()) == QLatin1String("QVector<KDecoration2::DecorationButtonType>")) {
|
} else if (QLatin1String(variant.typeName()) == QLatin1String("QList<KDecoration2::DecorationButtonType>")) {
|
||||||
const auto &b = variant.value<QVector<KDecoration2::DecorationButtonType>>();
|
const auto &b = variant.value<QList<KDecoration2::DecorationButtonType>>();
|
||||||
QString buffer;
|
QString buffer;
|
||||||
for (auto it = b.begin(); it != b.end(); ++it) {
|
for (auto it = b.begin(); it != b.end(); ++it) {
|
||||||
if (it != b.begin()) {
|
if (it != b.begin()) {
|
||||||
|
|
|
@ -82,7 +82,7 @@ static void initButtons()
|
||||||
s_buttonNames[KDecoration2::DecorationButtonType::Shade] = QChar('L');
|
s_buttonNames[KDecoration2::DecorationButtonType::Shade] = QChar('L');
|
||||||
}
|
}
|
||||||
|
|
||||||
static QString buttonsToString(const QVector<KDecoration2::DecorationButtonType> &buttons)
|
static QString buttonsToString(const QList<KDecoration2::DecorationButtonType> &buttons)
|
||||||
{
|
{
|
||||||
auto buttonToString = [](KDecoration2::DecorationButtonType button) -> QChar {
|
auto buttonToString = [](KDecoration2::DecorationButtonType button) -> QChar {
|
||||||
const auto it = s_buttonNames.constFind(button);
|
const auto it = s_buttonNames.constFind(button);
|
||||||
|
@ -98,13 +98,13 @@ static QString buttonsToString(const QVector<KDecoration2::DecorationButtonType>
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector<KDecoration2::DecorationButtonType> SettingsImpl::readDecorationButtons(const KConfigGroup &config,
|
QList<KDecoration2::DecorationButtonType> SettingsImpl::readDecorationButtons(const KConfigGroup &config,
|
||||||
const char *key,
|
const char *key,
|
||||||
const QVector<KDecoration2::DecorationButtonType> &defaultValue) const
|
const QList<KDecoration2::DecorationButtonType> &defaultValue) const
|
||||||
{
|
{
|
||||||
initButtons();
|
initButtons();
|
||||||
auto buttonsFromString = [](const QString &buttons) -> QVector<KDecoration2::DecorationButtonType> {
|
auto buttonsFromString = [](const QString &buttons) -> QList<KDecoration2::DecorationButtonType> {
|
||||||
QVector<KDecoration2::DecorationButtonType> ret;
|
QList<KDecoration2::DecorationButtonType> ret;
|
||||||
for (auto it = buttons.begin(); it != buttons.end(); ++it) {
|
for (auto it = buttons.begin(); it != buttons.end(); ++it) {
|
||||||
for (auto it2 = s_buttonNames.constBegin(); it2 != s_buttonNames.constEnd(); ++it2) {
|
for (auto it2 = s_buttonNames.constBegin(); it2 != s_buttonNames.constEnd(); ++it2) {
|
||||||
if (it2.value() == (*it)) {
|
if (it2.value() == (*it)) {
|
||||||
|
@ -139,12 +139,12 @@ static KDecoration2::BorderSize stringToSize(const QString &name)
|
||||||
void SettingsImpl::readSettings()
|
void SettingsImpl::readSettings()
|
||||||
{
|
{
|
||||||
KConfigGroup config = kwinApp()->config()->group(QStringLiteral("org.kde.kdecoration2"));
|
KConfigGroup config = kwinApp()->config()->group(QStringLiteral("org.kde.kdecoration2"));
|
||||||
const auto &left = readDecorationButtons(config, "ButtonsOnLeft", QVector<KDecoration2::DecorationButtonType>({KDecoration2::DecorationButtonType::Menu, KDecoration2::DecorationButtonType::OnAllDesktops}));
|
const auto &left = readDecorationButtons(config, "ButtonsOnLeft", QList<KDecoration2::DecorationButtonType>({KDecoration2::DecorationButtonType::Menu, KDecoration2::DecorationButtonType::OnAllDesktops}));
|
||||||
if (left != m_leftButtons) {
|
if (left != m_leftButtons) {
|
||||||
m_leftButtons = left;
|
m_leftButtons = left;
|
||||||
Q_EMIT decorationSettings()->decorationButtonsLeftChanged(m_leftButtons);
|
Q_EMIT decorationSettings()->decorationButtonsLeftChanged(m_leftButtons);
|
||||||
}
|
}
|
||||||
const auto &right = readDecorationButtons(config, "ButtonsOnRight", QVector<KDecoration2::DecorationButtonType>({KDecoration2::DecorationButtonType::ContextHelp, KDecoration2::DecorationButtonType::Minimize, KDecoration2::DecorationButtonType::Maximize, KDecoration2::DecorationButtonType::Close}));
|
const auto &right = readDecorationButtons(config, "ButtonsOnRight", QList<KDecoration2::DecorationButtonType>({KDecoration2::DecorationButtonType::ContextHelp, KDecoration2::DecorationButtonType::Minimize, KDecoration2::DecorationButtonType::Maximize, KDecoration2::DecorationButtonType::Close}));
|
||||||
if (right != m_rightButtons) {
|
if (right != m_rightButtons) {
|
||||||
m_rightButtons = right;
|
m_rightButtons = right;
|
||||||
Q_EMIT decorationSettings()->decorationButtonsRightChanged(m_rightButtons);
|
Q_EMIT decorationSettings()->decorationButtonsRightChanged(m_rightButtons);
|
||||||
|
|
|
@ -32,11 +32,11 @@ public:
|
||||||
{
|
{
|
||||||
return m_borderSize;
|
return m_borderSize;
|
||||||
}
|
}
|
||||||
QVector<KDecoration2::DecorationButtonType> decorationButtonsLeft() const override
|
QList<KDecoration2::DecorationButtonType> decorationButtonsLeft() const override
|
||||||
{
|
{
|
||||||
return m_leftButtons;
|
return m_leftButtons;
|
||||||
}
|
}
|
||||||
QVector<KDecoration2::DecorationButtonType> decorationButtonsRight() const override
|
QList<KDecoration2::DecorationButtonType> decorationButtonsRight() const override
|
||||||
{
|
{
|
||||||
return m_rightButtons;
|
return m_rightButtons;
|
||||||
}
|
}
|
||||||
|
@ -47,11 +47,11 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void readSettings();
|
void readSettings();
|
||||||
QVector<KDecoration2::DecorationButtonType> readDecorationButtons(const KConfigGroup &config,
|
QList<KDecoration2::DecorationButtonType> readDecorationButtons(const KConfigGroup &config,
|
||||||
const char *key,
|
const char *key,
|
||||||
const QVector<KDecoration2::DecorationButtonType> &defaultValue) const;
|
const QList<KDecoration2::DecorationButtonType> &defaultValue) const;
|
||||||
QVector<KDecoration2::DecorationButtonType> m_leftButtons;
|
QList<KDecoration2::DecorationButtonType> m_leftButtons;
|
||||||
QVector<KDecoration2::DecorationButtonType> m_rightButtons;
|
QList<KDecoration2::DecorationButtonType> m_rightButtons;
|
||||||
KDecoration2::BorderSize m_borderSize;
|
KDecoration2::BorderSize m_borderSize;
|
||||||
bool m_autoBorderSize = true;
|
bool m_autoBorderSize = true;
|
||||||
bool m_closeDoubleClickMenu = false;
|
bool m_closeDoubleClickMenu = false;
|
||||||
|
|
|
@ -36,7 +36,7 @@ public:
|
||||||
private:
|
private:
|
||||||
void notify();
|
void notify();
|
||||||
QElapsedTimer m_doubleTapTimer;
|
QElapsedTimer m_doubleTapTimer;
|
||||||
QVector<qint32> m_touchPoints;
|
QList<qint32> m_touchPoints;
|
||||||
bool m_secondTap = false;
|
bool m_secondTap = false;
|
||||||
bool m_enableDoubleTap;
|
bool m_enableDoubleTap;
|
||||||
};
|
};
|
||||||
|
|
|
@ -390,7 +390,7 @@ void PluginEffectLoader::queryAndLoadAll()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector<KPluginMetaData> PluginEffectLoader::findAllEffects() const
|
QList<KPluginMetaData> PluginEffectLoader::findAllEffects() const
|
||||||
{
|
{
|
||||||
return KPluginMetaData::findPlugins(m_pluginSubDirectory);
|
return KPluginMetaData::findPlugins(m_pluginSubDirectory);
|
||||||
}
|
}
|
||||||
|
|
|
@ -317,7 +317,7 @@ public:
|
||||||
void setPluginSubDirectory(const QString &directory);
|
void setPluginSubDirectory(const QString &directory);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QVector<KPluginMetaData> findAllEffects() const;
|
QList<KPluginMetaData> findAllEffects() const;
|
||||||
KPluginMetaData findEffect(const QString &name) const;
|
KPluginMetaData findEffect(const QString &name) const;
|
||||||
EffectPluginFactory *factory(const KPluginMetaData &info) const;
|
EffectPluginFactory *factory(const KPluginMetaData &info) const;
|
||||||
QStringList m_loadedEffects;
|
QStringList m_loadedEffects;
|
||||||
|
|
|
@ -128,7 +128,7 @@ EffectsHandlerImpl::EffectsHandlerImpl(Compositor *compositor, WorkspaceScene *s
|
||||||
, m_effectLoader(new EffectLoader(this))
|
, m_effectLoader(new EffectLoader(this))
|
||||||
, m_trackingCursorChanges(0)
|
, m_trackingCursorChanges(0)
|
||||||
{
|
{
|
||||||
qRegisterMetaType<QVector<KWin::EffectWindow *>>();
|
qRegisterMetaType<QList<KWin::EffectWindow *>>();
|
||||||
qRegisterMetaType<KWin::SessionState>();
|
qRegisterMetaType<KWin::SessionState>();
|
||||||
connect(m_effectLoader, &AbstractEffectLoader::effectLoaded, this, [this](Effect *effect, const QString &name) {
|
connect(m_effectLoader, &AbstractEffectLoader::effectLoaded, this, [this](Effect *effect, const QString &name) {
|
||||||
effect_order.insert(effect->requestedEffectChainPosition(), EffectPair(name, effect));
|
effect_order.insert(effect->requestedEffectChainPosition(), EffectPair(name, effect));
|
||||||
|
@ -369,7 +369,7 @@ void EffectsHandlerImpl::startPaint()
|
||||||
{
|
{
|
||||||
m_activeEffects.clear();
|
m_activeEffects.clear();
|
||||||
m_activeEffects.reserve(loaded_effects.count());
|
m_activeEffects.reserve(loaded_effects.count());
|
||||||
for (QVector<KWin::EffectPair>::const_iterator it = loaded_effects.constBegin(); it != loaded_effects.constEnd(); ++it) {
|
for (QList<KWin::EffectPair>::const_iterator it = loaded_effects.constBegin(); it != loaded_effects.constEnd(); ++it) {
|
||||||
if (it->second->isActive()) {
|
if (it->second->isActive()) {
|
||||||
m_activeEffects << it->second;
|
m_activeEffects << it->second;
|
||||||
}
|
}
|
||||||
|
@ -720,20 +720,20 @@ void EffectsHandlerImpl::moveWindow(EffectWindow *w, const QPoint &pos, bool sna
|
||||||
|
|
||||||
void EffectsHandlerImpl::windowToDesktop(EffectWindow *w, int desktop)
|
void EffectsHandlerImpl::windowToDesktop(EffectWindow *w, int desktop)
|
||||||
{
|
{
|
||||||
QVector<uint> desktopIds;
|
QList<uint> desktopIds;
|
||||||
if (desktop != -1) {
|
if (desktop != -1) {
|
||||||
desktopIds.append(desktop);
|
desktopIds.append(desktop);
|
||||||
}
|
}
|
||||||
windowToDesktops(w, desktopIds);
|
windowToDesktops(w, desktopIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EffectsHandlerImpl::windowToDesktops(EffectWindow *w, const QVector<uint> &desktopIds)
|
void EffectsHandlerImpl::windowToDesktops(EffectWindow *w, const QList<uint> &desktopIds)
|
||||||
{
|
{
|
||||||
auto window = static_cast<EffectWindowImpl *>(w)->window();
|
auto window = static_cast<EffectWindowImpl *>(w)->window();
|
||||||
if (!window->isClient() || window->isDesktop() || window->isDock()) {
|
if (!window->isClient() || window->isDesktop() || window->isDock()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
QVector<VirtualDesktop *> desktops;
|
QList<VirtualDesktop *> desktops;
|
||||||
desktops.reserve(desktopIds.count());
|
desktops.reserve(desktopIds.count());
|
||||||
for (uint x11Id : desktopIds) {
|
for (uint x11Id : desktopIds) {
|
||||||
if (x11Id > VirtualDesktopManager::self()->count()) {
|
if (x11Id > VirtualDesktopManager::self()->count()) {
|
||||||
|
@ -1242,7 +1242,7 @@ void EffectsHandlerImpl::destroyEffect(Effect *effect)
|
||||||
|
|
||||||
void EffectsHandlerImpl::reconfigureEffect(const QString &name)
|
void EffectsHandlerImpl::reconfigureEffect(const QString &name)
|
||||||
{
|
{
|
||||||
for (QVector<EffectPair>::const_iterator it = loaded_effects.constBegin(); it != loaded_effects.constEnd(); ++it) {
|
for (QList<EffectPair>::const_iterator it = loaded_effects.constBegin(); it != loaded_effects.constEnd(); ++it) {
|
||||||
if ((*it).first == name) {
|
if ((*it).first == name) {
|
||||||
kwinApp()->config()->reparseConfiguration();
|
kwinApp()->config()->reparseConfiguration();
|
||||||
makeOpenGLContextCurrent();
|
makeOpenGLContextCurrent();
|
||||||
|
@ -1289,7 +1289,7 @@ QList<bool> EffectsHandlerImpl::areEffectsSupported(const QStringList &names)
|
||||||
void EffectsHandlerImpl::reloadEffect(Effect *effect)
|
void EffectsHandlerImpl::reloadEffect(Effect *effect)
|
||||||
{
|
{
|
||||||
QString effectName;
|
QString effectName;
|
||||||
for (QVector<EffectPair>::const_iterator it = loaded_effects.constBegin(); it != loaded_effects.constEnd(); ++it) {
|
for (QList<EffectPair>::const_iterator it = loaded_effects.constBegin(); it != loaded_effects.constEnd(); ++it) {
|
||||||
if ((*it).second == effect) {
|
if ((*it).second == effect) {
|
||||||
effectName = (*it).first;
|
effectName = (*it).first;
|
||||||
break;
|
break;
|
||||||
|
@ -1320,8 +1320,8 @@ void EffectsHandlerImpl::effectsChanged()
|
||||||
QStringList EffectsHandlerImpl::activeEffects() const
|
QStringList EffectsHandlerImpl::activeEffects() const
|
||||||
{
|
{
|
||||||
QStringList ret;
|
QStringList ret;
|
||||||
for (QVector<KWin::EffectPair>::const_iterator it = loaded_effects.constBegin(),
|
for (QList<KWin::EffectPair>::const_iterator it = loaded_effects.constBegin(),
|
||||||
end = loaded_effects.constEnd();
|
end = loaded_effects.constEnd();
|
||||||
it != end; ++it) {
|
it != end; ++it) {
|
||||||
if (it->second->isActive()) {
|
if (it->second->isActive()) {
|
||||||
ret << it->first;
|
ret << it->first;
|
||||||
|
@ -1413,7 +1413,7 @@ bool EffectsHandlerImpl::isScreenLocked() const
|
||||||
QString EffectsHandlerImpl::debug(const QString &name, const QString ¶meter) const
|
QString EffectsHandlerImpl::debug(const QString &name, const QString ¶meter) const
|
||||||
{
|
{
|
||||||
QString internalName = name.toLower();
|
QString internalName = name.toLower();
|
||||||
for (QVector<EffectPair>::const_iterator it = loaded_effects.constBegin(); it != loaded_effects.constEnd(); ++it) {
|
for (QList<EffectPair>::const_iterator it = loaded_effects.constBegin(); it != loaded_effects.constEnd(); ++it) {
|
||||||
if ((*it).first == internalName) {
|
if ((*it).first == internalName) {
|
||||||
return it->second->debug(parameter);
|
return it->second->debug(parameter);
|
||||||
}
|
}
|
||||||
|
@ -1441,7 +1441,7 @@ bool EffectsHandlerImpl::animationsSupported() const
|
||||||
return m_scene->animationsSupported();
|
return m_scene->animationsSupported();
|
||||||
}
|
}
|
||||||
|
|
||||||
void EffectsHandlerImpl::highlightWindows(const QVector<EffectWindow *> &windows)
|
void EffectsHandlerImpl::highlightWindows(const QList<EffectWindow *> &windows)
|
||||||
{
|
{
|
||||||
Effect *e = provides(Effect::HighlightWindows);
|
Effect *e = provides(Effect::HighlightWindows);
|
||||||
if (!e) {
|
if (!e) {
|
||||||
|
@ -1955,10 +1955,10 @@ qlonglong EffectWindowImpl::windowId() const
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector<uint> EffectWindowImpl::desktops() const
|
QList<uint> EffectWindowImpl::desktops() const
|
||||||
{
|
{
|
||||||
const auto desks = m_window->desktops();
|
const auto desks = m_window->desktops();
|
||||||
QVector<uint> ids;
|
QList<uint> ids;
|
||||||
ids.reserve(desks.count());
|
ids.reserve(desks.count());
|
||||||
std::transform(desks.constBegin(), desks.constEnd(), std::back_inserter(ids), [](const VirtualDesktop *vd) {
|
std::transform(desks.constBegin(), desks.constEnd(), std::back_inserter(ids), [](const VirtualDesktop *vd) {
|
||||||
return vd->x11DesktopNumber();
|
return vd->x11DesktopNumber();
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue