From 2eb0fefb223dc0f9d04bed54b8e5e1979015f877 Mon Sep 17 00:00:00 2001 From: kraxel Date: Thu, 8 Feb 2007 12:48:32 +0000 Subject: vnc cleanup --- vnc.c | 11 ++++++----- 1 file 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); -- cgit