From ca91953e28ee2322e35fcdef9c08a3e807755f93 Mon Sep 17 00:00:00 2001 From: Alexander Tuxen <tuxen@silpion.de> Date: Fri, 11 Nov 2022 17:01:53 +0100 Subject: [PATCH] Fix data types and server status messages --- compositor-message/main.cpp | 6 ++--- .../compositor-messages.cpp | 2 +- multiscreen-compositor/compositor-messages.h | 2 +- multiscreen-compositor/main.cpp | 4 ++-- multiscreen-compositor/message-server.cpp | 4 ++-- multiscreen-compositor/message-server.h | 8 +++---- multiscreen-compositor/qml/main.qml | 23 ++++++++++++++----- 7 files changed, 30 insertions(+), 19 deletions(-) diff --git a/compositor-message/main.cpp b/compositor-message/main.cpp index 0b13f75..1a3bad7 100644 --- a/compositor-message/main.cpp +++ b/compositor-message/main.cpp @@ -18,15 +18,15 @@ int main(int argc, char *argv[]) parser.process(a); const QStringList args = parser.positionalArguments(); - if(args.length() < 2){ + if(args.length() < 1){ parser.showHelp(); exit(-1); } QString command; bool ok; - qint32 windowid; - qint32 screenid = 0; + qint32 windowid = -1; + qint32 screenid = -1; command = QString(args[0]); windowid = qint32(args[1].toInt(&ok)); diff --git a/multiscreen-compositor/compositor-messages.cpp b/multiscreen-compositor/compositor-messages.cpp index 38ff1aa..52ed2d9 100644 --- a/multiscreen-compositor/compositor-messages.cpp +++ b/multiscreen-compositor/compositor-messages.cpp @@ -8,7 +8,7 @@ CompositorMessages::CompositorMessages(QObject *parent) { } -void CompositorMessages::messageReceived(QString message, quint32 windowId, quint32 screenId){ +void CompositorMessages::messageReceived(QString message, qint32 windowId, qint32 screenId){ qDebug() << "CompositorMessage::messageReceived New message" << message; if(message == "moveWindowToScreen"){ diff --git a/multiscreen-compositor/compositor-messages.h b/multiscreen-compositor/compositor-messages.h index cb70d0a..256c7f9 100644 --- a/multiscreen-compositor/compositor-messages.h +++ b/multiscreen-compositor/compositor-messages.h @@ -12,7 +12,7 @@ public: Q_INVOKABLE bool isPidAlive(int pid); public slots: - void messageReceived(QString, quint32 value0, quint32 value2); + void messageReceived(QString, qint32 value0, qint32 value2); void screenInfoReceived(int screenId); signals: void moveWindowToScreen(qint32 windowid, qint32 screenid); diff --git a/multiscreen-compositor/main.cpp b/multiscreen-compositor/main.cpp index 7916cd2..09499fa 100644 --- a/multiscreen-compositor/main.cpp +++ b/multiscreen-compositor/main.cpp @@ -88,8 +88,8 @@ int main(int argc, char *argv[]) } CompositorMessages commands; - QObject::connect(&server, SIGNAL(newMessage(QString,quint32,quint32)), - &commands, SLOT(messageReceived(QString,quint32,quint32))); + QObject::connect(&server, SIGNAL(newMessage(QString,qint32,qint32)), + &commands, SLOT(messageReceived(QString,qint32,qint32))); QObject::connect(&commands, SIGNAL(sendStatus(int)), &server, SLOT(returnStatus(int))); diff --git a/multiscreen-compositor/message-server.cpp b/multiscreen-compositor/message-server.cpp index 1e3916f..65550f6 100644 --- a/multiscreen-compositor/message-server.cpp +++ b/multiscreen-compositor/message-server.cpp @@ -63,7 +63,7 @@ void MessageServer::connectionGone(MessageServerConnection* c){ delete c; } -void MessageServer::messageReceived(QString m, quint32 value0, quint32 value1) +void MessageServer::messageReceived(QString m, qint32 value0, qint32 value1) { qDebug() << "MessageServer::messageReceived Got message" << m << value0 << value1; emit newMessage(m , value0, value1); @@ -75,7 +75,7 @@ void MessageServer::returnStatus(int status) emit sendStatus(status); } -void MessageServer::broadcastMessage(QString msg, quint32 windowId, quint32 screenId) +void MessageServer::broadcastMessage(QString msg, qint32 windowId, qint32 screenId) { emit sendMessage(msg, windowId, screenId); } diff --git a/multiscreen-compositor/message-server.h b/multiscreen-compositor/message-server.h index 32874d9..85dc5fd 100644 --- a/multiscreen-compositor/message-server.h +++ b/multiscreen-compositor/message-server.h @@ -11,21 +11,21 @@ public: explicit MessageServer(QObject *parent = nullptr); bool listen(); - Q_INVOKABLE void broadcastMessage(QString msg, quint32 windowId, quint32 screenId); + Q_INVOKABLE void broadcastMessage(QString msg, qint32 windowId, qint32 screenId); Q_INVOKABLE void returnStatus(int); public slots: void destroy(); signals: - void newMessage(QString, quint32 value0, quint32 value2); + void newMessage(QString, qint32 value0, qint32 value2); void sendStatus(int); - void sendMessage(QString msg, quint32 windowId, quint32 screenId); + void sendMessage(QString msg, qint32 windowId, qint32 screenId); private slots: void handleConnection(void); void connectionGone(MessageServerConnection *c); - void messageReceived(QString, quint32, quint32); + void messageReceived(QString, qint32, qint32); private: static const QString socketName; diff --git a/multiscreen-compositor/qml/main.qml b/multiscreen-compositor/qml/main.qml index b75fe94..05e0b70 100644 --- a/multiscreen-compositor/qml/main.qml +++ b/multiscreen-compositor/qml/main.qml @@ -368,14 +368,20 @@ WaylandCompositor { function onMoveWindowToScreen(windowid, screenid) { console.log("Received a moveWindowToOutput Signal", windowid, screenid) - if( screenid > screens.count ){ + if( screenid >= screens.count || screenid < 0){ console.log("Given screen ID is out of range"); server.returnStatus(-1); return } var affectedSurfaces = getActiveSurfaces(getPidFromIviId(windowid)); - //if (affectedSurfaces.length === 0) return; + if (affectedSurfaces.length === 0) + { + console.log("no screens found for ID", screenid); + server.returnStatus(-1); + return; + } + for (var i=0; i < affectedSurfaces.length; i++) { var surface = affectedSurfaces[i]; @@ -386,14 +392,19 @@ WaylandCompositor { updateScreenAssignment(getPidFromIviId(windowid), screenid); } } - server.returnStatus(screenid); + server.returnStatus(0); server.sendMessage("Move", windowid, screenid); } function windowVisibility(windowid, show){ var ret = 0; var affectedSurfaces = getActiveSurfaces(getPidFromIviId(windowid)); - //if (affectedSurfaces.length === 0) return; + if (affectedSurfaces.length === 0) + { + server.returnStatus(-1); + return; + } + for (var i=0; i < affectedSurfaces.length; i++) { var surface = affectedSurfaces[i]; @@ -406,8 +417,8 @@ WaylandCompositor { } } - server.returnStatus(ret); - server.sendMessage(show ? "Show" : "Hide", windowid, null); + server.returnStatus(0); + server.sendMessage(show ? "Show" : "Hide", windowid, getScreenFromIviId(windowid)); } function onHideWindow(windowid){ -- GitLab