diff options
Diffstat (limited to 'vnc.c')
-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); |