This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2gokdriveclient. commit ff3dd40688d8c7a9d5d6ea1fdaeeaf738ceb75f9 Author: Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> Date: Mon Aug 24 11:06:40 2020 -0500 send a recive feature versions. --- client.cpp | 38 ++++++++++++++++++++++++++++++++++++++ client.h | 20 +++++++++++++++++++- debian/changelog | 1 + 3 files changed, 58 insertions(+), 1 deletion(-) diff --git a/client.cpp b/client.cpp index 612519b..565c30b 100644 --- a/client.cpp +++ b/client.cpp @@ -798,6 +798,13 @@ void Client::setCursor() { } +void Client::getServerversion() +{ + serverVersion=*((uint16_t*)messageBuffer+2); + qDebug()<<"server version:"<<serverVersion; +} + + void Client::getCursor() { @@ -1082,6 +1089,11 @@ void Client::readDataHeader() getSelection(); break; } + case SERVER_VERSION: + { + getServerversion(); + break; + } default: { qDebug()<<"Unsupported header type: "<<data_type; @@ -1199,6 +1211,7 @@ void Client::socketConnected() } connected=true; + if(geometry().width() != width || geometry().height() != height ) resize(width, height); else @@ -1207,6 +1220,8 @@ void Client::socketConnected() sendGeometryEvent(); } + sendClientVersion(); + if(fullscreen) { QTimer::singleShot(1000, this, SLOT( slotFS())); @@ -1343,6 +1358,29 @@ void Client::sendGeometryEvent() } +void Client::sendClientVersion() +{ + //sending the feature vesrion and OS version to the server + char evmsg[EVLENGTH]{}; + uint16_t version, os; + uint32_t etype; + version=FEATURE_VERSION; + os=OS_LINUX; +#ifdef Q_OS_WIN + os=OS_WIN; +#endif +#ifdef Q_OS_DARWIN + os=OS_DARWIN +#endif + etype=CLIENTVERSION; + memcpy(evmsg,(char*)&etype,4); + memcpy(evmsg+4,(char*)&version,2); + memcpy(evmsg+6,(char*)&os,2); + qDebug()<<"Sending version:"<<version<<"OS:"<<os; + sendEvent(evmsg); +} + + void Client::geometryChanged() { if(!connected) diff --git a/client.h b/client.h index b706a4f..5aba47a 100644 --- a/client.h +++ b/client.h @@ -21,6 +21,16 @@ #ifndef CLIENT_H #define CLIENT_H + +//FEATURE_VERSION is not cooresponding to actual version of client +//it used to tell server which features are supported by client +//Changes 0 - 1: sending and recieving client and OS version +#define FEATURE_VERSION 1 + +//Version of client OS for same reason +enum OS_VERSION{OS_LINUX, OS_WINDOWS, OS_DARWIN}; + + #define EVLENGTH 41 @@ -47,6 +57,7 @@ #define GEOMETRY 7 #define UPDATE 8 #define SELECTIONEVENT 9 +#define CLIENTVERSION 10 #define ShiftMask (1<<0) #define LockMask (1<<1) @@ -71,6 +82,8 @@ enum SelectionType{PRIMARY,CLIPBOARD}; enum ClipboardMode{CLIP_BOTH, CLIP_SERVER, CLIP_CLIENT, CLIP_NONE}; + + #include <QMainWindow> #include <QAbstractSocket> #include <stdlib.h> @@ -189,8 +202,9 @@ public slots: private: enum{ HEADER, FRAMEREGION, REGIONDATA ,CURSORDATA, CURSORLIST, FRAMELIST, SELECTIONBUFFER } currentDataType; - enum HeaderType{ FRAME, DELETEDFRAMES, CURSOR, DELETEDCURSORS, SELECTION}; + enum HeaderType{ FRAME, DELETEDFRAMES, CURSOR, DELETEDCURSORS, SELECTION, SERVER_VERSION}; + void getServerversion(); void setUseRandr(bool use); void exitOnError(const QString& message); void getImageFrame(); @@ -210,6 +224,7 @@ private: void setCursor(); void sendGeometryEvent(); void setFS(int screenNumber); + void sendClientVersion(); bool wantRepaint=false; @@ -218,6 +233,9 @@ private: int width=800; int height=600; + //feature version of server + u_int16_t serverVersion=0; + bool fullscreen=false; bool multidisp=false; int dispNumber=1; diff --git a/debian/changelog b/debian/changelog index d3231a3..d4e2009 100644 --- a/debian/changelog +++ b/debian/changelog @@ -23,5 +23,6 @@ x2gokdriveclient (0.0.0.1-0x2go1) UNRELEASED; urgency=medium - not use QClipboard class on Linux. It has problems mit INCR properties. Using XCB API instead. - add xcb and xcb-fixes to deps. - add command line argument --selection (both|none|server|client) to specify selection mode. + - send a recive feature versions. -- Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Tue, 04 Jun 2019 11:10:43 +0200 -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2gokdriveclient.git