DataContainer: Fix slot checks before connect/disconnect
Use indexOfSlot instead of indexOfMethod and check for index >= 0. Also added missing checks for all dataUpdated connects. REVIEW: 127133
This commit is contained in:
parent
73aa13b26d
commit
172847fc3b
@ -130,10 +130,12 @@ void DataContainer::connectVisualization(QObject *visualization, uint pollingInt
|
|||||||
d->relays.remove(relay->m_interval);
|
d->relays.remove(relay->m_interval);
|
||||||
delete relay;
|
delete relay;
|
||||||
} else {
|
} else {
|
||||||
|
if (visualization->metaObject()->indexOfSlot("dataUpdated(QString,Plasma::DataEngine::Data)") >= 0) {
|
||||||
disconnect(relay, SIGNAL(dataUpdated(QString,Plasma::DataEngine::Data)),
|
disconnect(relay, SIGNAL(dataUpdated(QString,Plasma::DataEngine::Data)),
|
||||||
visualization, SLOT(dataUpdated(QString,Plasma::DataEngine::Data)));
|
visualization, SLOT(dataUpdated(QString,Plasma::DataEngine::Data)));
|
||||||
|
}
|
||||||
//modelChanged is always emitted by the dataSource since there is no polling there
|
//modelChanged is always emitted by the dataSource since there is no polling there
|
||||||
if (visualization->metaObject()->indexOfMethod(QMetaObject::normalizedSignature("modelChanged(QString,QAbstractItemModel*)"))) {
|
if (visualization->metaObject()->indexOfSlot("modelChanged(QString,QAbstractItemModel*)") >= 0) {
|
||||||
disconnect(this, SIGNAL(modelChanged(QString,QAbstractItemModel*)),
|
disconnect(this, SIGNAL(modelChanged(QString,QAbstractItemModel*)),
|
||||||
visualization, SLOT(modelChanged(QString,QAbstractItemModel*)));
|
visualization, SLOT(modelChanged(QString,QAbstractItemModel*)));
|
||||||
}
|
}
|
||||||
@ -146,9 +148,11 @@ void DataContainer::connectVisualization(QObject *visualization, uint pollingInt
|
|||||||
//qCDebug(LOG_PLASMA) << " already connected, nothing to do";
|
//qCDebug(LOG_PLASMA) << " already connected, nothing to do";
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
|
if (visualization->metaObject()->indexOfSlot("dataUpdated(QString,Plasma::DataEngine::Data)") >= 0) {
|
||||||
disconnect(this, SIGNAL(dataUpdated(QString,Plasma::DataEngine::Data)),
|
disconnect(this, SIGNAL(dataUpdated(QString,Plasma::DataEngine::Data)),
|
||||||
visualization, SLOT(dataUpdated(QString,Plasma::DataEngine::Data)));
|
visualization, SLOT(dataUpdated(QString,Plasma::DataEngine::Data)));
|
||||||
if (visualization->metaObject()->indexOfMethod(QMetaObject::normalizedSignature("modelChanged(QString,QAbstractItemModel*)"))) {
|
}
|
||||||
|
if (visualization->metaObject()->indexOfSlot("modelChanged(QString,QAbstractItemModel*)") >= 0) {
|
||||||
disconnect(this, SIGNAL(modelChanged(QString,QAbstractItemModel*)),
|
disconnect(this, SIGNAL(modelChanged(QString,QAbstractItemModel*)),
|
||||||
visualization, SLOT(modelChanged(QString,QAbstractItemModel*)));
|
visualization, SLOT(modelChanged(QString,QAbstractItemModel*)));
|
||||||
}
|
}
|
||||||
@ -177,10 +181,12 @@ void DataContainer::connectVisualization(QObject *visualization, uint pollingInt
|
|||||||
bool immediateUpdate = connected || d->relayObjects.count() > 1;
|
bool immediateUpdate = connected || d->relayObjects.count() > 1;
|
||||||
SignalRelay *relay = d->signalRelay(this, visualization, pollingInterval,
|
SignalRelay *relay = d->signalRelay(this, visualization, pollingInterval,
|
||||||
alignment, immediateUpdate);
|
alignment, immediateUpdate);
|
||||||
|
if (visualization->metaObject()->indexOfSlot("dataUpdated(QString,Plasma::DataEngine::Data)") >= 0) {
|
||||||
connect(relay, SIGNAL(dataUpdated(QString,Plasma::DataEngine::Data)),
|
connect(relay, SIGNAL(dataUpdated(QString,Plasma::DataEngine::Data)),
|
||||||
visualization, SLOT(dataUpdated(QString,Plasma::DataEngine::Data)));
|
visualization, SLOT(dataUpdated(QString,Plasma::DataEngine::Data)));
|
||||||
|
}
|
||||||
//modelChanged is always emitted by the dataSource since there is no polling there
|
//modelChanged is always emitted by the dataSource since there is no polling there
|
||||||
if (visualization->metaObject()->indexOfMethod(QMetaObject::normalizedSignature("modelChanged(QString,QAbstractItemModel*)"))) {
|
if (visualization->metaObject()->indexOfSlot("modelChanged(QString,QAbstractItemModel*)") >= 0) {
|
||||||
connect(this, SIGNAL(modelChanged(QString,QAbstractItemModel*)),
|
connect(this, SIGNAL(modelChanged(QString,QAbstractItemModel*)),
|
||||||
visualization, SLOT(modelChanged(QString,QAbstractItemModel*)));
|
visualization, SLOT(modelChanged(QString,QAbstractItemModel*)));
|
||||||
}
|
}
|
||||||
@ -311,9 +317,11 @@ void DataContainer::disconnectVisualization(QObject *visualization)
|
|||||||
|
|
||||||
if (objIt == d->relayObjects.end() || !objIt.value()) {
|
if (objIt == d->relayObjects.end() || !objIt.value()) {
|
||||||
// it is connected directly to the DataContainer itself
|
// it is connected directly to the DataContainer itself
|
||||||
|
if (visualization->metaObject()->indexOfSlot("dataUpdated(QString,Plasma::DataEngine::Data)") >= 0) {
|
||||||
disconnect(this, SIGNAL(dataUpdated(QString,Plasma::DataEngine::Data)),
|
disconnect(this, SIGNAL(dataUpdated(QString,Plasma::DataEngine::Data)),
|
||||||
visualization, SLOT(dataUpdated(QString,Plasma::DataEngine::Data)));
|
visualization, SLOT(dataUpdated(QString,Plasma::DataEngine::Data)));
|
||||||
if (visualization->metaObject()->indexOfMethod(QMetaObject::normalizedSignature("modelChanged(QString,QAbstractItemModel*)"))) {
|
}
|
||||||
|
if (visualization->metaObject()->indexOfSlot("modelChanged(QString,QAbstractItemModel*)") >= 0) {
|
||||||
disconnect(this, SIGNAL(modelChanged(QString,QAbstractItemModel*)),
|
disconnect(this, SIGNAL(modelChanged(QString,QAbstractItemModel*)),
|
||||||
visualization, SLOT(modelChanged(QString,QAbstractItemModel*)));
|
visualization, SLOT(modelChanged(QString,QAbstractItemModel*)));
|
||||||
}
|
}
|
||||||
@ -324,10 +332,12 @@ void DataContainer::disconnectVisualization(QObject *visualization)
|
|||||||
d->relays.remove(relay->m_interval);
|
d->relays.remove(relay->m_interval);
|
||||||
delete relay;
|
delete relay;
|
||||||
} else {
|
} else {
|
||||||
|
if (visualization->metaObject()->indexOfSlot("dataUpdated(QString,Plasma::DataEngine::Data)") >= 0) {
|
||||||
disconnect(relay, SIGNAL(dataUpdated(QString,Plasma::DataEngine::Data)),
|
disconnect(relay, SIGNAL(dataUpdated(QString,Plasma::DataEngine::Data)),
|
||||||
visualization, SLOT(dataUpdated(QString,Plasma::DataEngine::Data)));
|
visualization, SLOT(dataUpdated(QString,Plasma::DataEngine::Data)));
|
||||||
|
}
|
||||||
//modelChanged is always emitted by the dataSource since there is no polling there
|
//modelChanged is always emitted by the dataSource since there is no polling there
|
||||||
if (visualization->metaObject()->indexOfMethod(QMetaObject::normalizedSignature("modelChanged(QString,QAbstractItemModel*)"))) {
|
if (visualization->metaObject()->indexOfSlot("modelChanged(QString,QAbstractItemModel*)") >= 0) {
|
||||||
disconnect(this, SIGNAL(modelChanged(QString,QAbstractItemModel*)),
|
disconnect(this, SIGNAL(modelChanged(QString,QAbstractItemModel*)),
|
||||||
visualization, SLOT(modelChanged(QString,QAbstractItemModel*)));
|
visualization, SLOT(modelChanged(QString,QAbstractItemModel*)));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user