void CActiveAESink::OpenSink()
{
+ // we need a copy of m_device here because ParseDevice and CreateDevice write back
+ // into this variable
+ std::string device = m_device;
std::string driver;
bool passthrough = AE_IS_RAW(m_requestedFormat.m_dataFormat);
- CAESinkFactory::ParseDevice(m_device, driver);
+ CAESinkFactory::ParseDevice(device, driver);
if (driver.empty() && m_sink)
driver = m_sink->GetName();
std::transform(sinkName.begin(), sinkName.end(), sinkName.begin(), ::toupper);
}
- if (!m_sink || sinkName != driver || !m_sink->IsCompatible(m_requestedFormat, m_device))
+ if (!m_sink || sinkName != driver || !m_sink->IsCompatible(m_requestedFormat, device))
{
CLog::Log(LOGINFO, "CActiveAE::OpenSink - sink incompatible, re-starting");
}
// get the display name of the device
- GetDeviceFriendlyName(m_device);
+ GetDeviceFriendlyName(device);
// if we already have a driver, prepend it to the device string
if (!driver.empty())
- m_device = driver + ":" + m_device;
+ device = driver + ":" + device;
// WARNING: this changes format and does not use passthrough
m_sinkFormat = m_requestedFormat;
- CLog::Log(LOGDEBUG, "CActiveAE::OpenSink - trying to open device %s", m_device.c_str());
- m_sink = CAESinkFactory::Create(m_device, m_sinkFormat, passthrough);
+ CLog::Log(LOGDEBUG, "CActiveAE::OpenSink - trying to open device %s", device.c_str());
+ m_sink = CAESinkFactory::Create(device, m_sinkFormat, passthrough);
if (!m_sink)
{