static void rb_grilo_source_dispose (GObject *object) { RBGriloSource *source = RB_GRILO_SOURCE (object); if (source->priv->browse_op != 0) { grl_operation_cancel (source->priv->browse_op); source->priv->browse_op = 0; } if (source->priv->media_browse_op != 0) { grl_operation_cancel (source->priv->media_browse_op); source->priv->media_browse_op = 0; } if (source->priv->query_model != NULL) { g_object_unref (source->priv->query_model); source->priv->query_model = NULL; } if (source->priv->entry_type != NULL) { g_object_unref (source->priv->entry_type); source->priv->entry_type = NULL; } if (source->priv->maybe_expand_idle != 0) { g_source_remove (source->priv->maybe_expand_idle); source->priv->maybe_expand_idle = 0; } G_OBJECT_CLASS (rb_grilo_source_parent_class)->dispose (object); }
static void start_media_browse (RBGriloSource *source, GrlMedia *container, GtkTreeIter *container_iter, guint limit) { rb_debug ("starting media browse for %s", grl_source_get_name (source->priv->grilo_source)); /* cancel existing operation? */ if (source->priv->media_browse_op != 0) { grl_operation_cancel (source->priv->media_browse_op); } if (source->priv->media_browse_container != NULL) { g_object_unref (source->priv->media_browse_container); } source->priv->media_browse_container = container; if (container_iter != NULL) { /* hrm, probably have to use row references here.. */ source->priv->media_browse_container_iter = *container_iter; } source->priv->media_browse_position = 0; source->priv->media_browse_limit = limit; source->priv->media_browse_got_containers = FALSE; if (source->priv->query_model != NULL) { g_object_unref (source->priv->query_model); } source->priv->query_model = rhythmdb_query_model_new_empty (source->priv->db); rb_entry_view_set_model (RB_ENTRY_VIEW (source->priv->entry_view), source->priv->query_model); g_object_set (source, "query-model", source->priv->query_model, NULL); media_browse_next (source); }
static void browse_cb (GrlSource *source, guint browse_id, GrlMedia *media, guint remaining, gpointer user_data, const GError *error) { GHashTable *prop_table; GriloMs2Data *grdata = (GriloMs2Data *) user_data; gboolean add_media = FALSE; if (error) { grdata->error = g_error_copy (error); grdata->updated = TRUE; return; } if (media) { if ((grdata->list_type == LIST_ITEMS && !grl_media_is_container (media)) || (grdata->list_type == LIST_CONTAINERS && grl_media_is_container (media))) { if (grdata->offset == 0) { add_media = TRUE; } else { grdata->offset--; } } else if (grdata->list_type == LIST_ALL) { add_media = TRUE; } } if (add_media) { if (grdata->parent_id) { grl_media_set_grilo_ms2_parent (media, grdata->parent_id); } prop_table = ms2_server_new_properties_hashtable (); fill_properties_table (grdata->server, prop_table, grdata->keys, media); fill_other_properties_table (grdata->server, source, prop_table, grdata->other_keys, media); grdata->children = g_list_prepend (grdata->children, prop_table); grl_operation_options_set_count (grdata->options, grl_operation_options_get_count (grdata->options) -1); } if (!remaining) { grdata->children = g_list_reverse (grdata->children); grdata->updated = TRUE; } else if (grl_operation_options_get_count (grdata->options) == 0) { grl_operation_cancel (grdata->operation_id); } }
static void impl_delete_thyself (RBDisplayPage *page) { RBGriloSource *source = RB_GRILO_SOURCE (page); RhythmDBEntryType *entry_type; if (source->priv->browse_op != 0) { grl_operation_cancel (source->priv->browse_op); source->priv->browse_op = 0; } if (source->priv->media_browse_op != 0) { grl_operation_cancel (source->priv->media_browse_op); source->priv->media_browse_op = 0; } g_object_get (source, "entry-type", &entry_type, NULL); rhythmdb_entry_delete_by_type (source->priv->db, entry_type); g_object_unref (entry_type); rhythmdb_commit (source->priv->db); }
static void mex_grilo_feed_stop_op (MexGriloFeed *feed) { MexGriloFeedPrivate *priv = feed->priv; if (!priv->op) return; if (!priv->op->op_id) return; grl_operation_cancel (priv->op->op_id); priv->op->op_id = 0; if (priv->completed) { priv->completed = FALSE; g_object_notify (G_OBJECT (feed), "completed"); } }
static void start_browse (RBGriloSource *source, GrlMedia *container, GtkTreeIter *container_iter, int position) { rb_debug ("starting browse op for %s", grl_source_get_name (source->priv->grilo_source)); /* cancel existing operation? */ if (source->priv->browse_op != 0) { grl_operation_cancel (source->priv->browse_op); } if (source->priv->browse_container != NULL) { g_object_unref (source->priv->browse_container); } source->priv->browse_container = container; if (container_iter != NULL) { /* hrm, probably have to use row references here.. */ source->priv->browse_container_iter = *container_iter; } source->priv->browse_position = position; source->priv->browse_got_media = FALSE; browse_next (source); }