/** * Delete a MIDI player instance. * @param player MIDI player instance * @return Always returns #FLUID_OK */ int delete_fluid_player(fluid_player_t *player) { fluid_list_t *q; fluid_playlist_item* pi; if (player == NULL) { return FLUID_OK; } fluid_player_stop(player); fluid_player_reset(player); while (player->playlist != NULL) { q = player->playlist->next; pi = (fluid_playlist_item*) player->playlist->data; FLUID_FREE(pi->filename); FLUID_FREE(pi->buffer); FLUID_FREE(pi); delete1_fluid_list(player->playlist); player->playlist = q; } FLUID_FREE(player); return FLUID_OK; }
/** * Delete a MIDI player instance. * @param player MIDI player instance * @return Always returns #FLUID_OK */ int delete_fluid_player(fluid_player_t* player) { fluid_list_t* q; if (player == NULL) { return FLUID_OK; } fluid_player_stop(player); fluid_player_reset(player); while (player->playlist != NULL) { q = player->playlist->next; FLUID_FREE(player->playlist->data); delete1_fluid_list(player->playlist); player->playlist = q; } FLUID_FREE(player); return FLUID_OK; }
/** * Unregister a previously registered client. * @param seq Sequencer object * @param id Client ID as returned by fluid_sequencer_register_client(). */ void fluid_sequencer_unregister_client (fluid_sequencer_t* seq, short id) { fluid_list_t *tmp; fluid_event_t* evt; if (seq->clients == NULL) return; evt = new_fluid_event(); if (evt != NULL) { fluid_event_unregistering(evt); fluid_event_set_dest(evt, id); } tmp = seq->clients; while (tmp) { fluid_sequencer_client_t *client = (fluid_sequencer_client_t*)tmp->data; if (client->id == id) { /* What should we really do if evt is null due to out-of-memory? */ if (client->callback != NULL && evt != NULL) (client->callback)(fluid_sequencer_get_tick(seq), evt, seq, client->data); if (client->name) FLUID_FREE(client->name); seq->clients = fluid_list_remove_link(seq->clients, tmp); delete1_fluid_list(tmp); FLUID_FREE(client); delete_fluid_event(evt); return; } tmp = tmp->next; } delete_fluid_event(evt); return; }