{
AEDeviceInfoList *list;
bool isHWDevice;
+ bool device_not_found;
pa_threaded_mainloop *mainloop;
};
SinkInfoStruct *sinkStruct = (SinkInfoStruct *)userdata;
if (i && i->flags && (i->flags & PA_SINK_HARDWARE))
sinkStruct->isHWDevice = true;
+ else if(!i)
+ sinkStruct->device_not_found = true;
pa_threaded_mainloop_signal(sinkStruct->mainloop, 0);
}
SinkInfoStruct sinkStruct;
sinkStruct.mainloop = m_MainLoop;
sinkStruct.isHWDevice = false;
+ sinkStruct.device_not_found = false;
+
if (!isDefaultDevice)
WaitForOperation(pa_context_get_sink_info_by_name(m_Context, device.c_str(),SinkInfoCallback, &sinkStruct), m_MainLoop, "Get Sink Info");
+ if(sinkStruct.device_not_found) // ActiveAE will open us again with a valid device name
+ {
+ CLog::Log(LOGERROR, "PulseAudio: Sink %s not found", device.c_str());
+ pa_threaded_mainloop_unlock(m_MainLoop);
+ Deinitialize();
+ return false;
+ }
+
// 200ms max latency
// 50ms min packet size
if(sinkStruct.isHWDevice || isDefaultDevice)