diff --git a/server/cursor-channel.c b/server/cursor-channel.c index 202ec896..e421bf70 100644 --- a/server/cursor-channel.c +++ b/server/cursor-channel.c @@ -437,11 +437,26 @@ void cursor_channel_connect(CursorChannel *cursor, RedClient *client, RedsStream cursor_channel_init_client(cursor, ccc); } +static void +cursor_channel_finalize(GObject *object) +{ + CursorChannel *self = CURSOR_CHANNEL(object); + + if (self->item) { + cursor_item_unref(self->item); + } + + G_OBJECT_CLASS(cursor_channel_parent_class)->finalize(object); +} + static void cursor_channel_class_init(CursorChannelClass *klass) { + GObjectClass *object_class = G_OBJECT_CLASS(klass); RedChannelClass *channel_class = RED_CHANNEL_CLASS(klass); + object_class->finalize = cursor_channel_finalize; + channel_class->parser = spice_get_client_channel_parser(SPICE_CHANNEL_CURSOR, NULL); channel_class->handle_parsed = red_channel_client_handle_message;