static void xmms_playlist_destroy (xmms_object_t *object) { xmms_config_property_t *val; xmms_playlist_t *playlist = (xmms_playlist_t *) object; XMMS_DBG ("Deactivating playlist object"); g_return_if_fail (playlist); val = xmms_config_lookup ("playlist.repeat_one"); xmms_config_property_callback_remove (val, on_playlist_r_one_changed, playlist); val = xmms_config_lookup ("playlist.repeat_all"); xmms_config_property_callback_remove (val, on_playlist_r_all_changed, playlist); xmms_object_disconnect (XMMS_OBJECT (playlist->medialib), XMMS_IPC_SIGNAL_MEDIALIB_ENTRY_REMOVED, on_medialib_entry_removed, playlist); xmms_object_disconnect (XMMS_OBJECT (playlist->colldag), XMMS_IPC_SIGNAL_COLLECTION_CHANGED, on_collection_changed, playlist); xmms_object_unref (playlist->colldag); xmms_object_unref (playlist->medialib); g_mutex_free (playlist->mutex); xmms_playlist_unregister_ipc_commands (); }
/** * Unregister a signal */ void xmms_ipc_signal_unregister (xmms_ipc_signals_t signalid) { xmms_object_t *obj; g_mutex_lock (ipc_object_pool_lock); obj = ipc_object_pool->signals[signalid]; if (obj) { xmms_object_disconnect (obj, signalid, xmms_ipc_signal_cb, GUINT_TO_POINTER (signalid)); ipc_object_pool->signals[signalid] = NULL; } g_mutex_unlock (ipc_object_pool_lock); }
static void xmms_playlist_updater_destroy (xmms_object_t *object) { GList *it; xmms_playlist_updater_t *updater = (xmms_playlist_updater_t *) object; g_return_if_fail (updater != NULL); XMMS_DBG ("Deactivating playlist updater object."); xmms_object_disconnect (XMMS_OBJECT (updater->playlist), XMMS_IPC_SIGNAL_COLLECTION_CHANGED, xmms_playlist_updater_need_update, updater); xmms_object_disconnect (XMMS_OBJECT (updater->playlist), XMMS_IPC_SIGNAL_PLAYLIST_CHANGED, xmms_playlist_updater_need_update, updater); xmms_object_disconnect (XMMS_OBJECT (updater->playlist), XMMS_IPC_SIGNAL_PLAYLIST_CURRENT_POS, xmms_playlist_updater_need_update, updater); xmms_playlist_updater_stop (updater); xmms_object_unref (updater->playlist); for (it = updater->stack; it; it = g_list_next (it)) { gchar *plname; plname = (gchar *) it->data; g_free (plname); } g_list_free (updater->stack); g_mutex_free (updater->mutex); g_cond_free (updater->cond); }