diff --git a/compositor-message/main.cpp b/compositor-message/main.cpp index 0b13f75ee2aed8106dafbd605b1bb573c78b813d..1a3bad738315e43b000d8c15cd748633c6054663 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 38ff1aa566f0f219827066a9ebf89fc541ebef26..52ed2d98b1d6014a8ceca409a04dca9122a7e6f1 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 cb70d0a376dc6bcaef2494ef99df9698b720c9b7..256c7f9827fe7b9fad37505802532dd3aaf7403d 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 7916cd2a6c50eea3bc7195cf634083a74f42a5b9..09499fab250d08f6b1ad58eef4fcf6559fe7f6b8 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 1e3916f2379b27c671eae37ee78d54195541319d..65550f6e75198aa55c94cdf5bac39738585e4818 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 32874d930673b2a1c0fb099bbebf0fecfc11f076..85dc5fda275106e4fb3655c686956d6fdf2bcd26 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 b75fe94bf16fa5cf7493bc7f63fa6f206f613bfb..05e0b708efff36a12132b6b0805075123293d57c 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){