diff options
author | kraxel <kraxel> | 2007-02-08 12:48:32 +0000 |
---|---|---|
committer | kraxel <kraxel> | 2007-02-08 12:48:32 +0000 |
commit | 2eb0fefb223dc0f9d04bed54b8e5e1979015f877 (patch) | |
tree | 83b880b44de5c0f836c83617dfe0019127f2d66d | |
parent | 458c67d2ebc30f6c49718131a693e6281a04643e (diff) | |
download | xenwatch-2eb0fefb223dc0f9d04bed54b8e5e1979015f877.tar.gz |
vnc cleanup
-rw-r--r-- | vnc.c | 11 |
1 files changed, 6 insertions, 5 deletions
@@ -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); |