[AFV, Ref T739 register device also based on process

This commit is contained in:
Klaus Basan
2019-10-31 00:48:19 +01:00
committed by Mat Sutcliffe
parent 2b1d771275
commit 32c6ef3fd6
4 changed files with 17 additions and 6 deletions

View File

@@ -45,6 +45,14 @@ namespace BlackMisc
stringCompare(device.getMachineName(), this->getMachineName(), Qt::CaseInsensitive);
}
bool CAudioDeviceInfo::matchesNameTypeMachineProcess(const CAudioDeviceInfo &device) const
{
return device.getType() == this->getType() &&
device.getIdentifier().getProcessId() == this->getIdentifier().getProcessId() &&
stringCompare(device.getName(), this->getName(), Qt::CaseInsensitive) &&
stringCompare(device.getMachineName(), this->getMachineName(), Qt::CaseInsensitive);
}
CAudioDeviceInfo::DeviceType CAudioDeviceInfo::fromQtMode(QAudio::Mode m)
{
switch (m)

View File

@@ -85,6 +85,9 @@ namespace BlackMisc
//! Matching name, type and machine
bool matchesNameTypeMachineName(const CAudioDeviceInfo &device) const;
//! Matching name, type and machine and process
bool matchesNameTypeMachineProcess(const CAudioDeviceInfo &device) const;
//! Convert the Qt type
static DeviceType fromQtMode(QAudio::Mode m);

View File

@@ -74,11 +74,11 @@ namespace BlackMisc
return devices;
}
CAudioDeviceInfo CAudioDeviceInfoList::findRegisteredDevice(const CAudioDeviceInfo &device) const
CAudioDeviceInfo CAudioDeviceInfoList::findRegisteredDeviceOrDefault(const CAudioDeviceInfo &device) const
{
for (const CAudioDeviceInfo &d : *this)
{
if (device.matchesNameTypeMachineName(d)) { return d; }
if (device.matchesNameTypeMachineProcess(d)) { return d; }
}
return {};
}
@@ -101,7 +101,7 @@ namespace BlackMisc
void CAudioDeviceInfoList::unRegisterDevice(const CAudioDeviceInfo &device)
{
if (!device.isValid()) { return; }
const CAudioDeviceInfo registeredDevice = this->findRegisteredDevice(device);
const CAudioDeviceInfo registeredDevice = this->findRegisteredDeviceOrDefault(device);
if (registeredDevice.isValid())
{
this->remove(registeredDevice);
@@ -123,7 +123,7 @@ namespace BlackMisc
bool CAudioDeviceInfoList::isRegisteredDevice(const CAudioDeviceInfo &device) const
{
return this->findRegisteredDevice(device).isValid();
return this->findRegisteredDeviceOrDefault(device).isValid();
}
int CAudioDeviceInfoList::count(CAudioDeviceInfo::DeviceType type) const
@@ -149,7 +149,7 @@ namespace BlackMisc
if (compareDevices.size() != this->size()) { return false; }
for (const CAudioDeviceInfo &d : *this)
{
if (!compareDevices.findRegisteredDevice(d).isValid()) { return false; }
if (!compareDevices.findRegisteredDeviceOrDefault(d).isValid()) { return false; }
}
return true;
}

View File

@@ -57,7 +57,7 @@ namespace BlackMisc
CAudioDeviceInfoList findByHostName(const QString &hostName) const;
//! Find registered device
CAudioDeviceInfo findRegisteredDevice(const CAudioDeviceInfo &device) const;
CAudioDeviceInfo findRegisteredDeviceOrDefault(const CAudioDeviceInfo &device) const;
//! Register device
void registerDevice(const CAudioDeviceInfo &device);