Add some asserts to closure.
This commit is contained in:
parent
a6e8797b9d
commit
5e343611bf
|
@ -32,19 +32,25 @@ Closure::Closure(QObject* sender,
|
||||||
const QMetaObject* meta_receiver = receiver->metaObject();
|
const QMetaObject* meta_receiver = receiver->metaObject();
|
||||||
|
|
||||||
QByteArray normalised_slot = QMetaObject::normalizedSignature(slot + 1);
|
QByteArray normalised_slot = QMetaObject::normalizedSignature(slot + 1);
|
||||||
slot_ = meta_receiver->method(
|
const int index = meta_receiver->indexOfSlot(normalised_slot.constData());
|
||||||
meta_receiver->indexOfSlot(normalised_slot.constData()));
|
Q_ASSERT(index != -1);
|
||||||
|
slot_ = meta_receiver->method(index);
|
||||||
|
|
||||||
connect(sender, signal, SLOT(Invoked()));
|
Connect(sender, signal);
|
||||||
connect(sender, SIGNAL(destroyed()), SLOT(Cleanup()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Closure::Closure(QObject* sender,
|
Closure::Closure(QObject* sender,
|
||||||
const char* signal,
|
const char* signal,
|
||||||
std::tr1::function<void()> callback)
|
std::tr1::function<void()> callback)
|
||||||
: callback_(callback) {
|
: callback_(callback) {
|
||||||
connect(sender, signal, SLOT(Invoked()));
|
Connect(sender, signal);
|
||||||
connect(sender, SIGNAL(destroyed()), SLOT(Cleanup()));
|
}
|
||||||
|
|
||||||
|
void Closure::Connect(QObject* sender, const char* signal) {
|
||||||
|
bool success = connect(sender, signal, SLOT(Invoked()));
|
||||||
|
Q_ASSERT(success);
|
||||||
|
success = connect(sender, SIGNAL(destroyed()), SLOT(Cleanup()));
|
||||||
|
Q_ASSERT(success);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Closure::Invoked() {
|
void Closure::Invoked() {
|
||||||
|
|
|
@ -64,6 +64,8 @@ class Closure : public QObject {
|
||||||
void Cleanup();
|
void Cleanup();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void Connect(QObject* sender, const char* signal);
|
||||||
|
|
||||||
QMetaMethod slot_;
|
QMetaMethod slot_;
|
||||||
std::tr1::function<void()> callback_;
|
std::tr1::function<void()> callback_;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue