Example #1
0
/** 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);
}
Example #2
0
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);
}