summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJens Georg <mail@jensge.org>2016-08-18 10:37:32 +0200
committerJens Georg <mail@jensge.org>2016-12-17 09:47:40 +0100
commit1c137d2bf3ae50dc45029755cbc49106fa8b3294 (patch)
tree1fbe88fd90fb5effc8544120d4de4c89bef5df0e /src
parentef02625498ed9f17d62128bf86f8e75da438d23b (diff)
downloadgupnp-tools-1c137d2bf3ae50dc45029755cbc49106fa8b3294.tar.gz
av-cp: Clean-up SearchDialog on destroy
Signed-off-by: Jens Georg <mail@jensge.org>
Diffstat (limited to 'src')
-rw-r--r--src/av-cp/playlist-treeview.c1
-rw-r--r--src/av-cp/search-dialog.c22
2 files changed, 23 insertions, 0 deletions
diff --git a/src/av-cp/playlist-treeview.c b/src/av-cp/playlist-treeview.c
index 00883bf..50a9f62 100644
--- a/src/av-cp/playlist-treeview.c
+++ b/src/av-cp/playlist-treeview.c
@@ -366,6 +366,7 @@ on_search_menu_item_activated (GtkMenuItem *menuitem,
search_dialog_set_container_title (SEARCH_DIALOG (search_dialog), title);
gtk_dialog_run (search_dialog);
+ gtk_widget_hide (GTK_WIDGET (search_dialog));
}
void
diff --git a/src/av-cp/search-dialog.c b/src/av-cp/search-dialog.c
index 5bd1dbf..9b48800 100644
--- a/src/av-cp/search-dialog.c
+++ b/src/av-cp/search-dialog.c
@@ -50,6 +50,9 @@ G_DEFINE_TYPE_WITH_PRIVATE (SearchDialog, search_dialog, GTK_TYPE_DIALOG)
void
search_dialog_on_search_activate (SearchDialog *self, GtkEntry *entry);
+static void
+search_dialog_finalize (GObject *object);
+
#define ITEM_CLASS_IMAGE "object.item.imageItem"
#define ITEM_CLASS_AUDIO "object.item.audioItem"
#define ITEM_CLASS_VIDEO "object.item.videoItem"
@@ -88,6 +91,7 @@ get_item_icon (GUPnPDIDLLiteObject *object)
static void
search_dialog_class_init (SearchDialogClass *klass)
{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
GError *error = NULL;
gchar *data = NULL;
@@ -112,6 +116,8 @@ search_dialog_class_init (SearchDialogClass *klass)
gtk_widget_class_bind_template_child_private (widget_class,
SearchDialog,
search_dialog_entry);
+
+ object_class->finalize = search_dialog_finalize;
}
static void
@@ -121,6 +127,22 @@ search_dialog_init (SearchDialog *self)
}
static void
+search_dialog_finalize (GObject *object)
+{
+ SearchDialog *self = SEARCH_DIALOG (object);
+ SearchDialogPrivate *priv = search_dialog_get_instance_private (self);
+ GObjectClass *parent_class =
+ G_OBJECT_CLASS (search_dialog_parent_class);
+
+ g_clear_pointer (&priv->id, g_free);
+ g_clear_pointer (&priv->title, g_free);
+
+ if (parent_class->finalize != NULL) {
+ parent_class->finalize (object);
+ }
+}
+
+static void
on_didl_object_available (GUPnPDIDLLiteParser *parser,
GUPnPDIDLLiteObject *object,
gpointer user_data)