void soundio_destroy(struct SoundIo *soundio) { SoundIoPrivate *si = (SoundIoPrivate *)soundio; soundio_disconnect(soundio); free(si); }
void AudioSoundIo::setupWidget::reconnectSoundIo() { const QString& configBackend = m_isFirst ? ConfigManager::inst()->value( "audiosoundio", "backend" ) : m_backendModel.currentText(); m_isFirst = false; soundio_disconnect(m_soundio); int err; int backend_index = m_backendModel.findText(configBackend); if (backend_index < 0) { if ((err = soundio_connect(m_soundio))) { fprintf(stderr, "soundio: unable to connect backend: %s\n", soundio_strerror(err)); return; } backend_index = m_backendModel.findText(soundio_backend_name(m_soundio->current_backend)); assert(backend_index >= 0); } else { SoundIoBackend backend = soundio_get_backend(m_soundio, backend_index); if ((err = soundio_connect_backend(m_soundio, backend))) { fprintf(stderr, "soundio: unable to connect %s backend: %s\n", soundio_backend_name(backend), soundio_strerror(err)); if ((err = soundio_connect(m_soundio))) { fprintf(stderr, "soundio: unable to connect backend: %s\n", soundio_strerror(err)); return; } backend_index = m_backendModel.findText(soundio_backend_name(m_soundio->current_backend)); assert(backend_index >= 0); } } m_backendModel.setValue(backend_index); soundio_flush_events(m_soundio); const QString& configDeviceId = ConfigManager::inst()->value( "audiosoundio", "out_device_id" ); const QString& configDeviceRaw = ConfigManager::inst()->value( "audiosoundio", "out_device_raw" ); int deviceIndex = m_defaultOutIndex; bool wantRaw = (configDeviceRaw == "yes"); for (int i = 0; i < m_deviceList.length(); i += 1) { const DeviceId *deviceId = &m_deviceList.at(i); if (deviceId->id == configDeviceId && deviceId->is_raw == wantRaw) { deviceIndex = i; break; } } m_deviceModel.setValue(deviceIndex); }
int soundio_connect_backend(SoundIo *soundio, SoundIoBackend backend) { SoundIoPrivate *si = (SoundIoPrivate *)soundio; if (soundio->current_backend) return SoundIoErrorInvalid; if (backend <= 0 || backend > SoundIoBackendDummy) return SoundIoErrorInvalid; int (*fn)(SoundIoPrivate *) = backend_init_fns[backend]; if (!fn) return SoundIoErrorBackendUnavailable; int err; if ((err = backend_init_fns[backend](si))) { soundio_disconnect(soundio); return err; } soundio->current_backend = backend; return 0; }