This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goclient. commit 24c27245242808c09bc8083e88e7bbf051647be9 Author: Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> Date: Fri Jul 11 10:04:08 2014 +0200 Start x2gohelper from X2Go Client. Revert name changing of X2Go Client and x2gohelper --- config_win.bat | 3 +-- debian/changelog | 2 ++ onmainwindow.cpp | 7 +++---- x2goclient.pro | 2 -- x2gohelper/x2gohelper.cpp | 47 +++++++++++++++++++++++---------------------- x2gohelper/x2gohelper.pro | 14 -------------- 6 files changed, 30 insertions(+), 45 deletions(-) diff --git a/config_win.bat b/config_win.bat index 8bd1f36..a96af19 100755 --- a/config_win.bat +++ b/config_win.bat @@ -3,6 +3,5 @@ lrelease x2goclient.pro set X2GO_CLIENT_TARGET= qmake cd x2gohelper -mingw32-make distclean -qmake +mingw32-make clean cd .. diff --git a/debian/changelog b/debian/changelog index 9b5ecfa..25a6049 100644 --- a/debian/changelog +++ b/debian/changelog @@ -25,6 +25,8 @@ x2goclient (4.0.3.0-0x2go1) UNRELEASED; urgency=low X2Go Client crashes. (Fixes: #525). - On Windows rename x2goclient.exe to x2goclient-mainprocess.exe and x2gohelper.exe to x2goclient.exe. + - Start x2gohelper from X2Go Client. Revert name changing of X2Go Client and + x2gohelper [ Mike DePaulo ] * New upstream release (4.0.3.0): diff --git a/onmainwindow.cpp b/onmainwindow.cpp index 8390cbe..8acec61 100644 --- a/onmainwindow.cpp +++ b/onmainwindow.cpp @@ -430,12 +430,11 @@ ONMainWindow::ONMainWindow ( QWidget *parent ) :QMainWindow ( parent ) } #ifdef Q_OS_WIN + QProcess::startDetached("x2gohelper.exe "+QString::number(GetCurrentProcessId())); QTimer::singleShot ( 500, this, SLOT ( startWinServers() ) ); - #endif - mainL->setSpacing ( 0 ); mainL->setMargin ( 0 ); mainL->insertWidget ( 0, bgFrame ); @@ -9842,11 +9841,11 @@ void ONMainWindow::startPulsed() ever ship 1.1 again. */ if (QSysInfo::WindowsVersion == QSysInfo::WV_XP || - QSysInfo::WindowsVersion == QSysInfo::WV_2003 ) + QSysInfo::WindowsVersion == QSysInfo::WV_2003 ) { x2goDebug<<"Windows XP or Server 2003 (R2) detected."; x2goDebug<<"Setting PulseAudio to \"Normal\" CPU priority."; - pulseArgs<<"--high-priority=no"; + pulseArgs<<"--high-priority=no"; } #else pulseArgs<<"--exit-idle-time=-1"<<"-n"<<"-F"<<pulseDir+"/config.pa"; diff --git a/x2goclient.pro b/x2goclient.pro index 386b6aa..99d0fb7 100755 --- a/x2goclient.pro +++ b/x2goclient.pro @@ -182,8 +182,6 @@ win32-* { message(building $$TARGET for windows without ldap and cups) LIBS += -lwinspool -lws2_32 CONFIG += static release - TARGET = x2goclient-mainprocess - } QT += svg network ICON = icons/x2go-mac.icns diff --git a/x2gohelper/x2gohelper.cpp b/x2gohelper/x2gohelper.cpp index d12214c..3a90e44 100644 --- a/x2gohelper/x2gohelper.cpp +++ b/x2gohelper/x2gohelper.cpp @@ -14,15 +14,9 @@ * You should have received a copy of the GNU General Public License * * along with this program. If not, see <http://www.gnu.org/licenses/>. * ***************************************************************************/ -#include <iostream> -using namespace std; #include <windows.h> #include <TlHelp32.h> -#include <QStringList> -#include <QProcess> -#include <QDebug> - void killProcess(DWORD pid) { HANDLE handle=OpenProcess(PROCESS_TERMINATE,0,pid); @@ -42,7 +36,7 @@ void enumerateFromParent(DWORD pid) HANDLE hndl=CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 ); if(hndl==INVALID_HANDLE_VALUE) { - qCritical()<<"failed to get system snapshot"; + //Failed to get system snapshot return; } PROCESSENTRY32 pentry; @@ -53,6 +47,11 @@ void enumerateFromParent(DWORD pid) { if(pid==pentry.th32ParentProcessID) { + if(pentry.th32ProcessID == GetCurrentProcessId()) + { + //skip own process + continue; + } enumerateFromParent(pentry.th32ProcessID); killProcess(pentry.th32ProcessID); } @@ -63,28 +62,30 @@ void enumerateFromParent(DWORD pid) int main(int argc, char* argv[]) { - QStringList args; - //argv[0] is allways "x2gohelper.exe" - for(int i=1; i< argc; ++i) + if(argc!=2) { - args<<argv[i]; + //wrong number of arguments + return -1; } - QProcess proc; - QString executable="x2goclient-mainprocess.exe"; - proc.start(executable, args); - if(!proc.waitForStarted(4000)) + + DWORD pid=atoi(argv[1]); + if(!pid) { - qCritical()<<"Can't start process"; + //error converting argument to int; return -1; } - DWORD pid=proc.pid()->dwProcessId; - while(!proc.waitForFinished(300)) + + HANDLE handle=OpenProcess(SYNCHRONIZE,0,pid); + if(!handle) { - QString err=proc.readAllStandardError(); - QString out=proc.readAllStandardOutput(); - std::cerr<<err.toStdString(); - std::cout<<out.toStdString(); + //error open process + return -1; + } + //waiting for process to finish + if(WaitForSingleObject(handle,INFINITE)!=WAIT_FAILED) + { + enumerateFromParent(pid); } - enumerateFromParent(pid); + CloseHandle(handle); return 0; } diff --git a/x2gohelper/x2gohelper.pro b/x2gohelper/x2gohelper.pro deleted file mode 100644 index f30508b..0000000 --- a/x2gohelper/x2gohelper.pro +++ /dev/null @@ -1,14 +0,0 @@ -###################################################################### -# Automatically generated by qmake (2.01a) Di. Jul 8 10:58:26 2014 -###################################################################### - -TEMPLATE = app -TARGET = x2goclient -DEPENDPATH += . -INCLUDEPATH += . - -# Input -SOURCES += x2gohelper.cpp -QT -= gui -CONFIG += static release -#CONFIG += console -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git