bool setup_required () const;
ProcessThread* main_thread() const { return _main_thread; }
-
+
/* START BACKEND PROXY API
*
* See audio_backend.h for full documentation and semantics. These wrappers
void request_backend_reset();
void request_device_list_update();
+ void launch_device_control_app();
bool is_realtime() const;
bool connected() const;
}
+void
+AudioEngine::launch_device_control_app()
+{
+ if (_state_lock.trylock () ) {
+ _backend->launch_control_app ();
+ _state_lock.unlock ();
+ }
+}
+
+
void
AudioEngine::request_backend_reset()
{
AUTO_FUNC_DEBUG;
WTErr retVal = eNoErr;
- if (Active())
+ if (Active() && !m_ResetRequested )
{
#ifdef PLATFORM_WINDOWS
if(Pa_GetHostApiInfo(Pa_GetDeviceInfo(m_DeviceID)->hostApi)->type == paASIO)
// stop and deactivate the device
bool wasStreaming = Streaming();
SetActive(false);
+
// show control panel for the device
if (PaAsio_ShowControlPanel (m_DeviceID, pParam) != paNoError)
retVal = eGenericErr;
- // reset device to pick up changes
- ResetDevice();
+
// restore previous state for the device
SetActive(true);
if (wasStreaming)
SetStreaming(true);
+
+
+ // reset device to pick up changes
+ if (!m_ResetRequested) {
+ m_pMyManager->NotifyClient (WCMRAudioDeviceManagerClient::RequestReset);
+ }
}
#else
pParam = pParam;