summaryrefslogtreecommitdiffstats
path: root/x11vnc.c
diff options
context:
space:
mode:
Diffstat (limited to 'x11vnc.c')
-rw-r--r--x11vnc.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/x11vnc.c b/x11vnc.c
index 922ba84..2ffb7e6 100644
--- a/x11vnc.c
+++ b/x11vnc.c
@@ -73,11 +73,13 @@ void init_keycodes()
XFree ((char *) keymap);
}
+static Bool shutDownServer=0;
+
/* the hooks */
void clientGone(rfbClientPtr cl)
{
- exit(0);
+ shutDownServer=-1;
}
enum rfbNewClientAction newClient(rfbClientPtr cl)
@@ -502,6 +504,15 @@ int main(int argc,char** argv)
#endif
rfbProcessEvents(screen,-1);
+ if(shutDownServer) {
+ free(backupImage);
+ rfbScreenCleanup(screen);
+ XFree(dpy);
+#ifndef NO_SHM
+ XShmDetach(dpy,framebufferImage);
+#endif
+ exit(0);
+ }
if(dontTile) {
if(gotInput) {