mirror of
https://thingvellir.net/git/overte
synced 2025-03-27 23:52:03 +01:00
improved listener lifetime controls (in case a deferred invoke takes longer than expected)
This commit is contained in:
parent
2e5244663e
commit
34e3d9dd2b
2 changed files with 5 additions and 2 deletions
|
@ -27,8 +27,9 @@ PacketReceiver::PacketReceiver(QObject* parent) : QObject(parent) {
|
|||
}
|
||||
|
||||
bool PacketReceiver::ListenerReference::invokeWithQt(const QSharedPointer<ReceivedMessage>& receivedMessagePointer, const QSharedPointer<Node>& sourceNode) {
|
||||
ListenerReferencePointer thisPointer = sharedFromThis();
|
||||
return QMetaObject::invokeMethod(getObject(), [=]() {
|
||||
this->invokeDirectly(receivedMessagePointer, sourceNode);
|
||||
thisPointer->invokeDirectly(receivedMessagePointer, sourceNode);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
#include <QtCore/QObject>
|
||||
#include <QtCore/QPointer>
|
||||
#include <QtCore/QSet>
|
||||
#include <QtCore/QSharedPointer>
|
||||
#include <QtCore/QEnableSharedFromThis>
|
||||
|
||||
#include "NLPacket.h"
|
||||
#include "NLPacketList.h"
|
||||
|
@ -42,7 +44,7 @@ namespace std {
|
|||
class PacketReceiver : public QObject {
|
||||
Q_OBJECT
|
||||
public:
|
||||
class ListenerReference {
|
||||
class ListenerReference : public QEnableSharedFromThis<ListenerReference> {
|
||||
public:
|
||||
virtual bool invokeDirectly(const QSharedPointer<ReceivedMessage>& receivedMessagePointer, const QSharedPointer<Node>& sourceNode) = 0;
|
||||
bool invokeWithQt(const QSharedPointer<ReceivedMessage>& receivedMessagePointer, const QSharedPointer<Node>& sourceNode);
|
||||
|
|
Loading…
Reference in a new issue