mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-07-22 18:13:52 +02: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) {
|
bool PacketReceiver::ListenerReference::invokeWithQt(const QSharedPointer<ReceivedMessage>& receivedMessagePointer, const QSharedPointer<Node>& sourceNode) {
|
||||||
|
ListenerReferencePointer thisPointer = sharedFromThis();
|
||||||
return QMetaObject::invokeMethod(getObject(), [=]() {
|
return QMetaObject::invokeMethod(getObject(), [=]() {
|
||||||
this->invokeDirectly(receivedMessagePointer, sourceNode);
|
thisPointer->invokeDirectly(receivedMessagePointer, sourceNode);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,8 @@
|
||||||
#include <QtCore/QObject>
|
#include <QtCore/QObject>
|
||||||
#include <QtCore/QPointer>
|
#include <QtCore/QPointer>
|
||||||
#include <QtCore/QSet>
|
#include <QtCore/QSet>
|
||||||
|
#include <QtCore/QSharedPointer>
|
||||||
|
#include <QtCore/QEnableSharedFromThis>
|
||||||
|
|
||||||
#include "NLPacket.h"
|
#include "NLPacket.h"
|
||||||
#include "NLPacketList.h"
|
#include "NLPacketList.h"
|
||||||
|
@ -42,7 +44,7 @@ namespace std {
|
||||||
class PacketReceiver : public QObject {
|
class PacketReceiver : public QObject {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
class ListenerReference {
|
class ListenerReference : public QEnableSharedFromThis<ListenerReference> {
|
||||||
public:
|
public:
|
||||||
virtual bool invokeDirectly(const QSharedPointer<ReceivedMessage>& receivedMessagePointer, const QSharedPointer<Node>& sourceNode) = 0;
|
virtual bool invokeDirectly(const QSharedPointer<ReceivedMessage>& receivedMessagePointer, const QSharedPointer<Node>& sourceNode) = 0;
|
||||||
bool invokeWithQt(const QSharedPointer<ReceivedMessage>& receivedMessagePointer, const QSharedPointer<Node>& sourceNode);
|
bool invokeWithQt(const QSharedPointer<ReceivedMessage>& receivedMessagePointer, const QSharedPointer<Node>& sourceNode);
|
||||||
|
|
Loading…
Reference in a new issue