static void spice_display_dispose(GObject *obj) { SpiceDisplay *display = SPICE_DISPLAY(obj); SpiceDisplayPrivate *d = SPICE_DISPLAY_GET_PRIVATE(display); SPICE_DEBUG("spice display dispose"); disconnect_main(display); disconnect_display(display); //disconnect_cursor(display); //if (d->clipboard) { // g_signal_handlers_disconnect_by_func(d->clipboard, G_CALLBACK(clipboard_owner_change), // display); // d->clipboard = NULL; //} //if (d->clipboard_primary) { // g_signal_handlers_disconnect_by_func(d->clipboard_primary, G_CALLBACK(clipboard_owner_change), // display); // d->clipboard_primary = NULL; //} if (d->session) { g_signal_handlers_disconnect_by_func(d->session, G_CALLBACK(channel_new), display); g_signal_handlers_disconnect_by_func(d->session, G_CALLBACK(channel_destroy), display); g_object_unref(d->session); d->session = NULL; } }
static void primary_destroy(SpiceChannel *channel, gpointer data) { SpiceDisplay *display = SPICE_DISPLAY(data); SpiceDisplayPrivate *d = SPICE_DISPLAY_GET_PRIVATE(display); //spicex_image_destroy(display); d->format = 0; d->width = 0; d->height = 0; d->stride = 0; d->shmid = 0; d->data = 0; d->data_origin = 0; }
static void spice_display_dispose(GObject *obj) { SpiceDisplay *display = SPICE_DISPLAY(obj); SpiceDisplayPrivate *d = SPICE_DISPLAY_GET_PRIVATE(display); SPICE_DEBUG("spice display dispose"); disconnect_main(display); disconnect_display(display); disconnect_cursor(display); if (d->session) { g_signal_handlers_disconnect_by_func(d->session, G_CALLBACK(channel_new), display); g_signal_handlers_disconnect_by_func(d->session, G_CALLBACK(channel_destroy), display); g_object_unref(d->session); d->session = NULL; } G_OBJECT_CLASS(spice_display_parent_class)->dispose(obj); }