aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkraxel <kraxel>2007-02-08 12:48:32 +0000
committerkraxel <kraxel>2007-02-08 12:48:32 +0000
commit2eb0fefb223dc0f9d04bed54b8e5e1979015f877 (patch)
tree83b880b44de5c0f836c83617dfe0019127f2d66d
parent458c67d2ebc30f6c49718131a693e6281a04643e (diff)
downloadxenwatch-2eb0fefb223dc0f9d04bed54b8e5e1979015f877.tar.gz
vnc cleanup
-rw-r--r--vnc.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/vnc.c b/vnc.c
index 18e68e2..793687e 100644
--- a/vnc.c
+++ b/vnc.c
@@ -30,7 +30,7 @@ struct vnc_window {
char display[128];
rfbClient *client;
GIOChannel *ch;
- guint id;
+ guint id, connected;
/* gtk */
GtkWidget *win;
GtkWidget *draw;
@@ -161,10 +161,10 @@ static void vnc_release(struct vnc_window *vnc)
{
if (NULL == vnc)
return;
-#if 0 /* FIXME: segfaults ??? */
- if (vnc->client)
- rfbClientCleanup(vnc->client);
-#endif
+ if (vnc->connected) {
+ if (vnc->client)
+ rfbClientCleanup(vnc->client);
+ }
if (vnc->filter_installed)
gdk_window_remove_filter(vnc->draw->window, event_filter, vnc);
if (vnc->id)
@@ -647,6 +647,7 @@ GtkWidget *vnc_open(char *hostname, int tcpport, unsigned long flags,
goto err;
vnc->ch = g_io_channel_unix_new(vnc->client->sock);
vnc->id = g_io_add_watch(vnc->ch, G_IO_IN, vnc_data_cb, vnc);
+ vnc->connected = 1;
/* gtk toplevel */
vnc->win = gtk_window_new(GTK_WINDOW_TOPLEVEL);