-rw-r--r-- | noncore/net/opietooth/lib/manager.cc | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/noncore/net/opietooth/lib/manager.cc b/noncore/net/opietooth/lib/manager.cc index 83accf7..7311484 100644 --- a/noncore/net/opietooth/lib/manager.cc +++ b/noncore/net/opietooth/lib/manager.cc @@ -60,16 +60,17 @@ void Manager::isAvailable( Device* /*dev*/ ){ void Manager::searchDevices( const QString& device ){ odebug << "Manager: search devices" << oendl; - OProcess* hcitool = new OProcess(); - hcitool->setName( device.isEmpty() ? "hci0" : device.latin1() ); - *hcitool << "hcitool" << "scan"; - connect( hcitool, SIGNAL(processExited(Opie::Core::OProcess*) ) , + m_hcitool = new OProcess(); + m_hcitool->setName( device.isEmpty() ? "hci0" : device.latin1() ); + *m_hcitool << "hcitool" << "scan"; + connect( m_hcitool, SIGNAL(processExited(Opie::Core::OProcess*) ) , this, SLOT(slotHCIExited(Opie::Core::OProcess* ) ) ); - connect( hcitool, SIGNAL(receivedStdout(Opie::Core::OProcess*, char*, int ) ), + connect( m_hcitool, SIGNAL(receivedStdout(Opie::Core::OProcess*, char*, int ) ), this, SLOT(slotHCIOut(Opie::Core::OProcess*, char*, int ) ) ); - if (!hcitool->start(OProcess::NotifyOnExit, OProcess::AllOutput) ) { + if (!m_hcitool->start(OProcess::NotifyOnExit, OProcess::AllOutput) ) { odebug << "Manager: could not start" << oendl; RemoteDevice::ValueList list; emit foundDevices( device, list ); - delete hcitool; + delete m_hcitool; + m_hcitool = 0; } } @@ -106,5 +107,5 @@ void Manager::removeServices( const QStringList& list){ } void Manager::searchServices( const QString& remDevice ){ - OProcess *m_sdp =new OProcess(); + m_sdp =new OProcess(); *m_sdp << "sdptool" << "browse" << remDevice; m_sdp->setName( remDevice.latin1() ); @@ -117,4 +118,5 @@ void Manager::searchServices( const QString& remDevice ){ odebug << "Manager: could not start sdptool" << oendl; delete m_sdp; + m_sdp = 0; Services::ValueList list; emit foundServices( remDevice, list ); @@ -166,4 +168,6 @@ void Manager::slotSDPExited( OProcess* proc) } emit foundServices( proc->name(), list ); + if (proc == m_sdp) + m_sdp = 0; delete proc; } @@ -189,4 +193,6 @@ void Manager::slotHCIExited(OProcess* proc ) { } emit foundDevices( proc->name(), list ); + if (proc == m_hcitool) + m_hcitool = 0; delete proc; } |