summaryrefslogtreecommitdiffstats
path: root/src/server/net
diff options
context:
space:
mode:
authorSimon Rettberg2016-02-08 16:48:29 +0100
committerSimon Rettberg2016-02-08 16:48:29 +0100
commitde708185c77aa451682fa96fbca4dcc6c8091c44 (patch)
treee925e32649545dad8a4e373326da9314b4f1dd28 /src/server/net
parent[client] Remove jpeg quality debug message (diff)
downloadpvs2-de708185c77aa451682fa96fbca4dcc6c8091c44.tar.gz
pvs2-de708185c77aa451682fa96fbca4dcc6c8091c44.tar.xz
pvs2-de708185c77aa451682fa96fbca4dcc6c8091c44.zip
[*] Use thumbnail on vnc viewer window until connection is up
Diffstat (limited to 'src/server/net')
-rw-r--r--src/server/net/client.cpp12
-rw-r--r--src/server/net/client.h3
2 files changed, 11 insertions, 4 deletions
diff --git a/src/server/net/client.cpp b/src/server/net/client.cpp
index 5fb030e..029b88a 100644
--- a/src/server/net/client.cpp
+++ b/src/server/net/client.cpp
@@ -156,12 +156,14 @@ void Client::handleMsg()
if (id == _THUMB)
{
QPixmap pixmap;
- if (!pixmap.loadFromData(_fromClient.getFieldBytes("IMG")))
+ const QByteArray& rawImage = _fromClient.getFieldBytes("IMG");
+ if (!pixmap.loadFromData(rawImage))
{
qDebug("Could not decode thumbnail image from client.");
return;
}
- emit thumbUpdated(this, pixmap);
+ _rawRemoteScreen = QByteArray(rawImage);
+ emit thumbUpdated(this, pixmap, rawImage);
}
else if (id == _VNCSERVER)
{
@@ -298,10 +300,14 @@ void Client::startVncClient(const Client * const to)
NetworkMessage msg;
msg.setField(_ID, _VNCCLIENT);
msg.setField("HOST", to->_socket->peerAddress().toString());
- msg.setField("PORT", QString::number(to->_vncPort));
+ msg.setField(_PORT, QString::number(to->_vncPort));
msg.setField("ROPASS", to->_vncRoPass);
msg.setField("CLIENTID", QString::number(to->_id));
msg.setField("CAPTION", to->_name + " @ " + to->_host);
+ if (!to->_rawRemoteScreen.isEmpty())
+ {
+ msg.setField(_THUMB, to->_rawRemoteScreen);
+ }
sendMessage(msg);
}
diff --git a/src/server/net/client.h b/src/server/net/client.h
index 5e1b8b4..d2097ad 100644
--- a/src/server/net/client.h
+++ b/src/server/net/client.h
@@ -71,6 +71,7 @@ private:
int _projectionSource; // The source the client was or is connected to (depends on _isActiveVncClient)
bool _isActiveVncClient; // VNCclient state. indicating that the client is displaying a remote screen via VNC
bool _isTutor; // Flag indicating that the client has been set as a tutor
+ QByteArray _rawRemoteScreen;
static int _clientIdCounter;
@@ -85,7 +86,7 @@ protected:
signals:
void authenticating(Client* client, ClientLogin* request);
void authenticated(Client* client);
- void thumbUpdated(Client* client, const QPixmap& thumb);
+ void thumbUpdated(Client* client, const QPixmap& thumb, const QByteArray& rawImage);
void vncServerStateChange(Client* client);
void vncClientStateChange(Client* client);
void stateChanged();