diff options
Diffstat (limited to 'src/bluetooth/qbluetoothservicediscoveryagent.cpp')
-rw-r--r-- | src/bluetooth/qbluetoothservicediscoveryagent.cpp | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/src/bluetooth/qbluetoothservicediscoveryagent.cpp b/src/bluetooth/qbluetoothservicediscoveryagent.cpp index 023ffb80..1bf31245 100644 --- a/src/bluetooth/qbluetoothservicediscoveryagent.cpp +++ b/src/bluetooth/qbluetoothservicediscoveryagent.cpp @@ -99,7 +99,8 @@ QT_BEGIN_NAMESPACE /*! \fn QBluetoothServiceDiscoveryAgent::finished() - This signal is emitted when Bluetooth service discovery completes. + This signal is emitted when Bluetooth service discovery completes. This signal will even + be emitted when an error occurred during the service discovery. */ /*! @@ -329,11 +330,17 @@ void QBluetoothServiceDiscoveryAgentPrivate::startDeviceDiscovery() Q_Q(QBluetoothServiceDiscoveryAgent); if (!deviceDiscoveryAgent) { - deviceDiscoveryAgent = new QBluetoothDeviceDiscoveryAgent; +#ifdef QT_BLUEZ_BLUETOOTH + deviceDiscoveryAgent = new QBluetoothDeviceDiscoveryAgent(m_deviceAdapterAddress, q); +#else + deviceDiscoveryAgent = new QBluetoothDeviceDiscoveryAgent(q); +#endif QObject::connect(deviceDiscoveryAgent, SIGNAL(finished()), q, SLOT(_q_deviceDiscoveryFinished())); QObject::connect(deviceDiscoveryAgent, SIGNAL(deviceDiscovered(QBluetoothDeviceInfo)), q, SLOT(_q_deviceDiscovered(QBluetoothDeviceInfo))); + QObject::connect(deviceDiscoveryAgent, SIGNAL(error(QBluetoothDeviceDiscoveryAgent::Error)), + q, SLOT(_q_deviceDiscoveryError(QBluetoothDeviceDiscoveryAgent::Error))); } @@ -368,6 +375,7 @@ void QBluetoothServiceDiscoveryAgentPrivate::_q_deviceDiscoveryFinished() setDiscoveryState(Inactive); Q_Q(QBluetoothServiceDiscoveryAgent); + emit q->error(error); emit q->finished(); return; } @@ -401,6 +409,20 @@ void QBluetoothServiceDiscoveryAgentPrivate::_q_deviceDiscovered(const QBluetoot } } +void QBluetoothServiceDiscoveryAgentPrivate::_q_deviceDiscoveryError(QBluetoothDeviceDiscoveryAgent::Error newError) +{ + error = static_cast<QBluetoothServiceDiscoveryAgent::Error>(newError); + + deviceDiscoveryAgent->stop(); + delete deviceDiscoveryAgent; + deviceDiscoveryAgent = 0; + + setDiscoveryState(Inactive); + Q_Q(QBluetoothServiceDiscoveryAgent); + emit q->error(error); + emit q->finished(); +} + /*! Starts service discovery for the next device. */ |