int delete_fluid_timer (fluid_timer_t *timer) { int auto_destroy = timer->auto_destroy; timer->cont = 0; fluid_timer_join (timer); /* Shouldn't access timer now if auto_destroy enabled, since it has been destroyed */ if (!auto_destroy) FLUID_FREE (timer); return FLUID_OK; }
/** * Wait for a MIDI player to terminate (when done playing). * @param player MIDI player instance * @return #FLUID_OK on success, #FLUID_FAILED otherwise */ int fluid_player_join(fluid_player_t* player) { if (player->system_timer) { return fluid_timer_join(player->system_timer); } else if (player->sample_timer) { /* Busy-wait loop, since there's no thread to wait for... */ while (player->status != FLUID_PLAYER_DONE) { #if defined(WIN32) Sleep(10); #else usleep(10000); #endif } } return FLUID_OK; }