/** Save the collection DAG in the database. * * @param dag The collection DAG to save. */ void xmms_collection_dag_save (xmms_coll_dag_t *dag) { gint i; xmms_medialib_session_t *session; session = xmms_medialib_begin_write (); /* Empty Collection* tables */ xmms_medialib_select (session, "DELETE FROM CollectionAttributes", NULL); xmms_medialib_select (session, "DELETE FROM CollectionConnections", NULL); xmms_medialib_select (session, "DELETE FROM CollectionIdlists", NULL); xmms_medialib_select (session, "DELETE FROM CollectionLabels", NULL); xmms_medialib_select (session, "DELETE FROM CollectionOperators", NULL); /* Write all collections in all namespaces */ coll_dbwrite_t dbinfos = { session, 1, 0 }; /* ids start at 1 */ for (i = 0; i < XMMS_COLLECTION_NUM_NAMESPACES; ++i) { dbinfos.nsid = i; xmms_collection_foreach_in_namespace (dag, i, dbwrite_operator, &dbinfos); } xmms_collection_foreach_in_namespace (dag, XMMS_COLLECTION_NSID_ALL, dbwrite_strip_tmpprops, NULL); xmms_medialib_end (session); }
static void on_medialib_entry_removed (xmms_object_t *object, xmmsv_t *val, gpointer udata) { xmms_playlist_t *playlist = (xmms_playlist_t *) udata; playlist_remove_context_t ctx; gint entry; g_return_if_fail (playlist); g_return_if_fail (xmmsv_get_int (val, &entry)); ctx.pls = playlist; ctx.entry = entry; g_mutex_lock (playlist->mutex); xmms_collection_foreach_in_namespace (playlist->colldag, XMMS_COLLECTION_NSID_PLAYLISTS, remove_from_playlist, &ctx); g_mutex_unlock (playlist->mutex); }