[X2go-Commits] x2godesktopsharing.git - master (branch) updated: 3.0.1.2-18-g91df9e9
X2go dev team
git-admin at x2go.org
Wed Sep 28 15:50:21 CEST 2011
The branch, master has been updated
via 91df9e9278ea7dcb4bc17d1f8a934af0dfdd909d (commit)
from 3c4601b7ec0af5717bdd9e6983e451efd1c4b67f (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 91df9e9278ea7dcb4bc17d1f8a934af0dfdd909d
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date: Wed Sep 28 15:50:17 2011 +0200
add signal handler for SIGABRT
-----------------------------------------------------------------------
Summary of changes:
main.cpp | 9 ++++++++-
sharetray.cpp | 24 ++++++++++++++++++++++++
sharetray.h | 4 ++++
3 files changed, 36 insertions(+), 1 deletions(-)
The diff of changes is:
diff --git a/main.cpp b/main.cpp
index fa54d3d..b435d48 100644
--- a/main.cpp
+++ b/main.cpp
@@ -83,7 +83,7 @@ void client ( const QStringList & cmd )
static int setup_unix_signal_handlers()
{
- struct sigaction keybint, term;
+ struct sigaction keybint, term, abort;
keybint.sa_handler = ShareTray::keybintSignalHandler;
sigemptyset(&keybint.sa_mask);
@@ -100,6 +100,13 @@ static int setup_unix_signal_handlers()
if (sigaction(SIGTERM, &term, 0) > 0)
return 2;
+ abort.sa_handler = ShareTray::abortSignalHandler;
+ sigemptyset(&abort.sa_mask);
+ abort.sa_flags |= SA_RESTART;
+
+ if (sigaction(SIGABRT, &abort, 0) > 0)
+ return 3;
+
return 0;
}
diff --git a/sharetray.cpp b/sharetray.cpp
index 9e81db8..7c00b1e 100644
--- a/sharetray.cpp
+++ b/sharetray.cpp
@@ -40,6 +40,7 @@
//needed to not get an undefined reference to static members
int ShareTray::sigkeybintFd[2];
int ShareTray::sigtermFd[2];
+int ShareTray::sigabortFd[2];
ShareTray::ShareTray()
: QMainWindow()
@@ -177,10 +178,15 @@ ShareTray::ShareTray()
if (::socketpair(AF_UNIX, SOCK_STREAM, 0, sigtermFd))
qFatal("Couldn't create TERM socketpair");
+ if (::socketpair(AF_UNIX, SOCK_STREAM, 0, sigabortFd))
+ qFatal("Couldn't create ABRT socketpair");
+
snKeybInt = new QSocketNotifier(sigkeybintFd[1], QSocketNotifier::Read, this);
connect(snKeybInt, SIGNAL(activated(int)), this, SLOT(handleSigKeybInt()));
snTerm = new QSocketNotifier(sigtermFd[1], QSocketNotifier::Read, this);
connect(snTerm, SIGNAL(activated(int)), this, SLOT(handleSigTerm()));
+ snAbort = new QSocketNotifier(sigabortFd[1], QSocketNotifier::Read, this);
+ connect(snAbort, SIGNAL(activated(int)), this, SLOT(handleSigAbort()));
QTimer *timer = new QTimer ( this );
connect ( timer, SIGNAL ( timeout() ), this, SLOT ( slotTimer() ) );
@@ -226,6 +232,18 @@ void ShareTray::handleSigTerm()
snTerm->setEnabled(true);
}
+void ShareTray::handleSigAbort()
+{
+ snAbort->setEnabled(false);
+ char tmp;
+ ::read(sigabortFd[1], &tmp, sizeof(tmp));
+
+ // do Qt stuff here
+ slotMenuClose();
+
+ snAbort->setEnabled(true);
+}
+
void ShareTray::keybintSignalHandler(int)
{
char a = 1;
@@ -238,6 +256,12 @@ void ShareTray::termSignalHandler(int)
::write(sigtermFd[0], &a, sizeof(a));
}
+void ShareTray::abortSignalHandler(int)
+{
+ char a = 1;
+ ::write(sigabortFd[0], &a, sizeof(a));
+}
+
void ShareTray::slotStopSharing()
{
if ( serverSocket )
diff --git a/sharetray.h b/sharetray.h
index 4119244..c7fe8eb 100644
--- a/sharetray.h
+++ b/sharetray.h
@@ -36,6 +36,7 @@ public:
// Unix signal handlers.
static void keybintSignalHandler(int unused);
static void termSignalHandler(int unused);
+ static void abortSignalHandler(int unused);
// desktop sharing socket
QString getSocketAnswer(QString message);
void closeSocket(SimpleLocalSocket* sock);
@@ -65,6 +66,7 @@ public slots:
// Qt signal handlers.
void handleSigKeybInt();
void handleSigTerm();
+ void handleSigAbort();
private slots:
void slotStopSharing();
void slotStartSharing();
@@ -91,8 +93,10 @@ private:
// unix file sockets for signal handler communication (unix <-> Qt)
static int sigkeybintFd[2];
static int sigtermFd[2];
+ static int sigabortFd[2];
QSocketNotifier *snKeybInt;
QSocketNotifier *snTerm;
+ QSocketNotifier *snAbort;
};
#endif
hooks/post-receive
--
x2godesktopsharing.git (Desktop Sharing for X2go)
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "x2godesktopsharing.git" (Desktop Sharing for X2go).
More information about the x2go-commits
mailing list