diff options
-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(); |