[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: kdereview/bluedevil/src/daemon/kded
From: Eduardo Robles Elvira <edulix () gmail ! com>
Date: 2010-05-14 14:40:25
Message-ID: 20100514144025.D4925AC8B5 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1126653 by edulix:
fixing crash when resuming the computer
M +16 -4 BlueDevilDaemon.cpp
--- trunk/kdereview/bluedevil/src/daemon/kded/BlueDevilDaemon.cpp #1126652:1126653
@@ -39,6 +39,7 @@
//Do not delete this :)
Solid::Control::BluetoothManager* man;
AgentListener *agentListener;
+ AgentListener *oldAgentListener;
Solid::Control::BluetoothInterface* adapter;
org::kde::BlueDevil::Service* service;
QString m_defaultAdapterName;
@@ -48,6 +49,7 @@
: KDEDModule(parent), d(new Private)
{
d->agentListener = 0;
+ d->oldAgentListener = 0;
d->adapter = 0;
d->service = 0;
@@ -112,6 +114,7 @@
QString interface;
if (!d->man->defaultInterface().isEmpty()) {
+ kDebug() << "using default interface";
interface = d->man->defaultInterface();
} else if (!d->man->bluetoothInterfaces().isEmpty() &&
!d->man->bluetoothInterfaces().first().ubi().isEmpty()) {
@@ -145,8 +148,8 @@
connect(d->agentListener,SIGNAL(finished()),this,SLOT(agentThreadStopped()));
d->agentListener->quit();
+ d->oldAgentListener = d->agentListener;
- kDebug() << "You've got no bluetooth interfaces attached!";
d->status = Private::Offline;
if (!serviceStarted()) {
@@ -169,8 +172,13 @@
void BlueDevilDaemon::agentThreadStopped()
{
- d->agentListener->deleteLater();
+ d->oldAgentListener->deleteLater();
+ if (d->agentListener == d->oldAgentListener) {
d->agentListener = 0;
+ } else {
+ kDebug() << "Not removing the new agent listener, only the old one";
+ }
+ d->oldAgentListener = 0;
kDebug() << "agent listener deleted";
}
@@ -195,12 +203,16 @@
void BlueDevilDaemon::defaultAdapterChanged(const QString& adapterName)
{
- kDebug() << adapterName;
+ kDebug() << adapterName << d->status;
//This should do the trick :)
- if (d->m_defaultAdapterName == adapterName && d->status == Private::Online) {
+ if (d->m_defaultAdapterName == adapterName) {
kDebug() << "already online with that adapter";
return;
}
+
+ if (d->status == Private::Online) {
+ kDebug() << "We are online, getting offline first";
offlineMode();
+ }
onlineMode();
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic