diff options
author | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2015-05-16 15:12:19 +0200 |
---|---|---|
committer | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2015-05-16 15:12:19 +0200 |
commit | 91ac79ecc1fdb18ad90a19e5333f32107e78836f (patch) | |
tree | 70958289c2188a2a2f6d3b340422a80a197f41cd | |
parent | ab96962b14e67fe7a05856758b51d345c5de06fe (diff) | |
parent | 4fefe352c9d93b0a51ed2e7c34f47a0d951413db (diff) | |
download | nx-libs-91ac79ecc1fdb18ad90a19e5333f32107e78836f.tar.gz nx-libs-91ac79ecc1fdb18ad90a19e5333f32107e78836f.tar.bz2 nx-libs-91ac79ecc1fdb18ad90a19e5333f32107e78836f.zip |
Merge pull request #25 from nitomartinez/nxtranscleanup_for_reconnect
This patch allows to cleanup the nxcomp resources to allow for a seco…
-rw-r--r-- | nxcomp/Loop.cpp | 27 | ||||
-rw-r--r-- | nxcomp/Misc.h | 1 | ||||
-rw-r--r-- | nxcomp/NX.h | 8 |
3 files changed, 36 insertions, 0 deletions
diff --git a/nxcomp/Loop.cpp b/nxcomp/Loop.cpp index 7bc154f36..f25aed353 100644 --- a/nxcomp/Loop.cpp +++ b/nxcomp/Loop.cpp @@ -1311,6 +1311,11 @@ void NXTransCleanup() HandleCleanup(); } +void NXTransCleanupForReconnect() +{ + HandleCleanupForReconnect(); +} + // // Check the parameters for subsequent // initialization of the NX transport. @@ -4873,6 +4878,28 @@ int StartKeeper() return 1; } +void HandleCleanupForReconnect() +{ + #ifdef TEST + *logofs << "Loop: Going to clean up system resources for Reconnect " + << "in process '" << getpid() << "'.\n" + << logofs_flush; + #endif + handleTerminatedInLoop(); + DisableSignals(); + if (control) + CleanupChildren(); + CleanupListeners(); + CleanupSockets(); + CleanupKeeper(); + CleanupStreams(); + CleanupLocal(); + CleanupGlobal(); + RestoreSignals(); + ServerCache::lastInitReply.set(0,NULL); + ServerCache::lastKeymap.set(0,NULL); + ServerCache::getKeyboardMappingLastMap.set(0,NULL); +} void HandleCleanup(int code) { #ifdef TEST diff --git a/nxcomp/Misc.h b/nxcomp/Misc.h index 21a503082..0cc396933 100644 --- a/nxcomp/Misc.h +++ b/nxcomp/Misc.h @@ -140,6 +140,7 @@ void HandleShutdown() __attribute__((noreturn)); extern "C" { void HandleCleanup(int code = 0) __attribute__((noreturn)); + void HandleCleanupForReconnect(); } // diff --git a/nxcomp/NX.h b/nxcomp/NX.h index 2dbf68662..0e4734e5f 100644 --- a/nxcomp/NX.h +++ b/nxcomp/NX.h @@ -442,6 +442,14 @@ extern int NXTransParseEnvironment(const char *env, int force); extern void NXTransCleanup(void) __attribute__((noreturn)); +/* + * Cleans up the global and local state + * (the same way as NXTransCleanup does) + * but does not exit the process + * Needed for IOS platform + */ +extern void NXTransCleanupForReconnect(void); + extern const char* NXVersion(); extern int NXMajorVersion(); extern int NXMinorVersion(); |