mirror of
https://github.com/overte-org/overte.git
synced 2025-08-06 07:39:44 +02:00
Merge pull request #11128 from sethalves/fix-some-crash-on-exit
Fix some crash on exit
This commit is contained in:
commit
959499eab8
16 changed files with 85 additions and 67 deletions
|
@ -127,7 +127,7 @@ void AudioMixer::queueReplicatedAudioPacket(QSharedPointer<ReceivedMessage> mess
|
||||||
// construct a "fake" audio received message from the byte array and packet list information
|
// construct a "fake" audio received message from the byte array and packet list information
|
||||||
auto audioData = message->getMessage().mid(NUM_BYTES_RFC4122_UUID);
|
auto audioData = message->getMessage().mid(NUM_BYTES_RFC4122_UUID);
|
||||||
|
|
||||||
PacketType rewrittenType = REPLICATED_PACKET_MAPPING.key(message->getType());
|
PacketType rewrittenType = PacketTypeEnum::getReplicatedPacketMapping().key(message->getType());
|
||||||
|
|
||||||
if (rewrittenType == PacketType::Unknown) {
|
if (rewrittenType == PacketType::Unknown) {
|
||||||
qDebug() << "Cannot unwrap replicated packet type not present in REPLICATED_PACKET_WRAPPING";
|
qDebug() << "Cannot unwrap replicated packet type not present in REPLICATED_PACKET_WRAPPING";
|
||||||
|
|
|
@ -125,11 +125,11 @@ void AudioMixerClientData::optionallyReplicatePacket(ReceivedMessage& message, c
|
||||||
// now make sure it's a packet type that we want to replicate
|
// now make sure it's a packet type that we want to replicate
|
||||||
|
|
||||||
// first check if it is an original type that we should replicate
|
// first check if it is an original type that we should replicate
|
||||||
PacketType mirroredType = REPLICATED_PACKET_MAPPING.value(message.getType());
|
PacketType mirroredType = PacketTypeEnum::getReplicatedPacketMapping().value(message.getType());
|
||||||
|
|
||||||
if (mirroredType == PacketType::Unknown) {
|
if (mirroredType == PacketType::Unknown) {
|
||||||
// if it wasn't check if it is a replicated type that we should re-replicate
|
// if it wasn't check if it is a replicated type that we should re-replicate
|
||||||
if (REPLICATED_PACKET_MAPPING.key(message.getType()) != PacketType::Unknown) {
|
if (PacketTypeEnum::getReplicatedPacketMapping().key(message.getType()) != PacketType::Unknown) {
|
||||||
mirroredType = message.getType();
|
mirroredType = message.getType();
|
||||||
} else {
|
} else {
|
||||||
qDebug() << "Packet passed to optionallyReplicatePacket was not a replicatable type - returning";
|
qDebug() << "Packet passed to optionallyReplicatePacket was not a replicatable type - returning";
|
||||||
|
|
|
@ -144,10 +144,10 @@ void AvatarMixer::optionallyReplicatePacket(ReceivedMessage& message, const Node
|
||||||
// check if this is a packet type we replicate
|
// check if this is a packet type we replicate
|
||||||
// which means it must be a packet type present in REPLICATED_PACKET_MAPPING or must be the
|
// which means it must be a packet type present in REPLICATED_PACKET_MAPPING or must be the
|
||||||
// replicated version of one of those packet types
|
// replicated version of one of those packet types
|
||||||
PacketType replicatedType = REPLICATED_PACKET_MAPPING.value(message.getType());
|
PacketType replicatedType = PacketTypeEnum::getReplicatedPacketMapping().value(message.getType());
|
||||||
|
|
||||||
if (replicatedType == PacketType::Unknown) {
|
if (replicatedType == PacketType::Unknown) {
|
||||||
if (REPLICATED_PACKET_MAPPING.key(message.getType()) != PacketType::Unknown) {
|
if (PacketTypeEnum::getReplicatedPacketMapping().key(message.getType()) != PacketType::Unknown) {
|
||||||
replicatedType = message.getType();
|
replicatedType = message.getType();
|
||||||
} else {
|
} else {
|
||||||
qDebug() << __FUNCTION__ << "called without replicatable packet type - returning";
|
qDebug() << __FUNCTION__ << "called without replicatable packet type - returning";
|
||||||
|
|
|
@ -196,8 +196,6 @@ GLBackend::GLBackend() {
|
||||||
|
|
||||||
|
|
||||||
GLBackend::~GLBackend() {
|
GLBackend::~GLBackend() {
|
||||||
resetStages();
|
|
||||||
|
|
||||||
killInput();
|
killInput();
|
||||||
killTransform();
|
killTransform();
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,7 +66,7 @@ protected:
|
||||||
public:
|
public:
|
||||||
static bool makeProgram(Shader& shader, const Shader::BindingSet& slotBindings = Shader::BindingSet());
|
static bool makeProgram(Shader& shader, const Shader::BindingSet& slotBindings = Shader::BindingSet());
|
||||||
|
|
||||||
~GLBackend();
|
virtual ~GLBackend();
|
||||||
|
|
||||||
void setCameraCorrection(const Mat4& correction);
|
void setCameraCorrection(const Mat4& correction);
|
||||||
void render(const Batch& batch) final override;
|
void render(const Batch& batch) final override;
|
||||||
|
|
|
@ -43,6 +43,11 @@ public:
|
||||||
|
|
||||||
explicit GL41Backend(bool syncCache) : Parent(syncCache) {}
|
explicit GL41Backend(bool syncCache) : Parent(syncCache) {}
|
||||||
GL41Backend() : Parent() {}
|
GL41Backend() : Parent() {}
|
||||||
|
virtual ~GL41Backend() {
|
||||||
|
// call resetStages here rather than in ~GLBackend dtor because it will call releaseResourceBuffer
|
||||||
|
// which is pure virtual from GLBackend's dtor.
|
||||||
|
resetStages();
|
||||||
|
}
|
||||||
|
|
||||||
static const std::string GL41_VERSION;
|
static const std::string GL41_VERSION;
|
||||||
const std::string& getVersion() const override { return GL41_VERSION; }
|
const std::string& getVersion() const override { return GL41_VERSION; }
|
||||||
|
|
|
@ -39,6 +39,11 @@ public:
|
||||||
|
|
||||||
explicit GL45Backend(bool syncCache) : Parent(syncCache) {}
|
explicit GL45Backend(bool syncCache) : Parent(syncCache) {}
|
||||||
GL45Backend() : Parent() {}
|
GL45Backend() : Parent() {}
|
||||||
|
virtual ~GL45Backend() {
|
||||||
|
// call resetStages here rather than in ~GLBackend dtor because it will call releaseResourceBuffer
|
||||||
|
// which is pure virtual from GLBackend's dtor.
|
||||||
|
resetStages();
|
||||||
|
}
|
||||||
|
|
||||||
static const std::string GL45_VERSION;
|
static const std::string GL45_VERSION;
|
||||||
const std::string& getVersion() const override { return GL45_VERSION; }
|
const std::string& getVersion() const override { return GL45_VERSION; }
|
||||||
|
|
|
@ -220,7 +220,7 @@ bool LimitedNodeList::packetVersionMatch(const udt::Packet& packet) {
|
||||||
const HifiSockAddr& senderSockAddr = packet.getSenderSockAddr();
|
const HifiSockAddr& senderSockAddr = packet.getSenderSockAddr();
|
||||||
QUuid sourceID;
|
QUuid sourceID;
|
||||||
|
|
||||||
if (NON_SOURCED_PACKETS.contains(headerType)) {
|
if (PacketTypeEnum::getNonSourcedPackets().contains(headerType)) {
|
||||||
hasBeenOutput = versionDebugSuppressMap.contains(senderSockAddr, headerType);
|
hasBeenOutput = versionDebugSuppressMap.contains(senderSockAddr, headerType);
|
||||||
|
|
||||||
if (!hasBeenOutput) {
|
if (!hasBeenOutput) {
|
||||||
|
@ -256,8 +256,8 @@ bool LimitedNodeList::packetSourceAndHashMatchAndTrackBandwidth(const udt::Packe
|
||||||
|
|
||||||
PacketType headerType = NLPacket::typeInHeader(packet);
|
PacketType headerType = NLPacket::typeInHeader(packet);
|
||||||
|
|
||||||
if (NON_SOURCED_PACKETS.contains(headerType)) {
|
if (PacketTypeEnum::getNonSourcedPackets().contains(headerType)) {
|
||||||
if (REPLICATED_PACKET_MAPPING.key(headerType) != PacketType::Unknown) {
|
if (PacketTypeEnum::getReplicatedPacketMapping().key(headerType) != PacketType::Unknown) {
|
||||||
// this is a replicated packet type - make sure the socket that sent it to us matches
|
// this is a replicated packet type - make sure the socket that sent it to us matches
|
||||||
// one from one of our current upstream nodes
|
// one from one of our current upstream nodes
|
||||||
|
|
||||||
|
@ -298,7 +298,7 @@ bool LimitedNodeList::packetSourceAndHashMatchAndTrackBandwidth(const udt::Packe
|
||||||
SharedNodePointer matchingNode = nodeWithUUID(sourceID);
|
SharedNodePointer matchingNode = nodeWithUUID(sourceID);
|
||||||
|
|
||||||
if (matchingNode) {
|
if (matchingNode) {
|
||||||
if (!NON_VERIFIED_PACKETS.contains(headerType)) {
|
if (!PacketTypeEnum::getNonVerifiedPackets().contains(headerType)) {
|
||||||
|
|
||||||
QByteArray packetHeaderHash = NLPacket::verificationHashInHeader(packet);
|
QByteArray packetHeaderHash = NLPacket::verificationHashInHeader(packet);
|
||||||
QByteArray expectedHash = NLPacket::hashForPacketAndSecret(packet, matchingNode->getConnectionSecret());
|
QByteArray expectedHash = NLPacket::hashForPacketAndSecret(packet, matchingNode->getConnectionSecret());
|
||||||
|
@ -345,13 +345,13 @@ void LimitedNodeList::collectPacketStats(const NLPacket& packet) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void LimitedNodeList::fillPacketHeader(const NLPacket& packet, const QUuid& connectionSecret) {
|
void LimitedNodeList::fillPacketHeader(const NLPacket& packet, const QUuid& connectionSecret) {
|
||||||
if (!NON_SOURCED_PACKETS.contains(packet.getType())) {
|
if (!PacketTypeEnum::getNonSourcedPackets().contains(packet.getType())) {
|
||||||
packet.writeSourceID(getSessionUUID());
|
packet.writeSourceID(getSessionUUID());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!connectionSecret.isNull()
|
if (!connectionSecret.isNull()
|
||||||
&& !NON_SOURCED_PACKETS.contains(packet.getType())
|
&& !PacketTypeEnum::getNonSourcedPackets().contains(packet.getType())
|
||||||
&& !NON_VERIFIED_PACKETS.contains(packet.getType())) {
|
&& !PacketTypeEnum::getNonVerifiedPackets().contains(packet.getType())) {
|
||||||
packet.writeVerificationHashGivenSecret(connectionSecret);
|
packet.writeVerificationHashGivenSecret(connectionSecret);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,8 +12,8 @@
|
||||||
#include "NLPacket.h"
|
#include "NLPacket.h"
|
||||||
|
|
||||||
int NLPacket::localHeaderSize(PacketType type) {
|
int NLPacket::localHeaderSize(PacketType type) {
|
||||||
bool nonSourced = NON_SOURCED_PACKETS.contains(type);
|
bool nonSourced = PacketTypeEnum::getNonSourcedPackets().contains(type);
|
||||||
bool nonVerified = NON_VERIFIED_PACKETS.contains(type);
|
bool nonVerified = PacketTypeEnum::getNonVerifiedPackets().contains(type);
|
||||||
qint64 optionalSize = (nonSourced ? 0 : NUM_BYTES_RFC4122_UUID) + ((nonSourced || nonVerified) ? 0 : NUM_BYTES_MD5_HASH);
|
qint64 optionalSize = (nonSourced ? 0 : NUM_BYTES_RFC4122_UUID) + ((nonSourced || nonVerified) ? 0 : NUM_BYTES_MD5_HASH);
|
||||||
return sizeof(PacketType) + sizeof(PacketVersion) + optionalSize;
|
return sizeof(PacketType) + sizeof(PacketVersion) + optionalSize;
|
||||||
}
|
}
|
||||||
|
@ -198,13 +198,13 @@ void NLPacket::readVersion() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void NLPacket::readSourceID() {
|
void NLPacket::readSourceID() {
|
||||||
if (!NON_SOURCED_PACKETS.contains(_type)) {
|
if (!PacketTypeEnum::getNonSourcedPackets().contains(_type)) {
|
||||||
_sourceID = sourceIDInHeader(*this);
|
_sourceID = sourceIDInHeader(*this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void NLPacket::writeSourceID(const QUuid& sourceID) const {
|
void NLPacket::writeSourceID(const QUuid& sourceID) const {
|
||||||
Q_ASSERT(!NON_SOURCED_PACKETS.contains(_type));
|
Q_ASSERT(!PacketTypeEnum::getNonSourcedPackets().contains(_type));
|
||||||
|
|
||||||
auto offset = Packet::totalHeaderSize(isPartOfMessage()) + sizeof(PacketType) + sizeof(PacketVersion);
|
auto offset = Packet::totalHeaderSize(isPartOfMessage()) + sizeof(PacketType) + sizeof(PacketVersion);
|
||||||
memcpy(_packet.get() + offset, sourceID.toRfc4122().constData(), NUM_BYTES_RFC4122_UUID);
|
memcpy(_packet.get() + offset, sourceID.toRfc4122().constData(), NUM_BYTES_RFC4122_UUID);
|
||||||
|
@ -213,7 +213,8 @@ void NLPacket::writeSourceID(const QUuid& sourceID) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void NLPacket::writeVerificationHashGivenSecret(const QUuid& connectionSecret) const {
|
void NLPacket::writeVerificationHashGivenSecret(const QUuid& connectionSecret) const {
|
||||||
Q_ASSERT(!NON_SOURCED_PACKETS.contains(_type) && !NON_VERIFIED_PACKETS.contains(_type));
|
Q_ASSERT(!PacketTypeEnum::getNonSourcedPackets().contains(_type) &&
|
||||||
|
!PacketTypeEnum::getNonVerifiedPackets().contains(_type));
|
||||||
|
|
||||||
auto offset = Packet::totalHeaderSize(isPartOfMessage()) + sizeof(PacketType) + sizeof(PacketVersion)
|
auto offset = Packet::totalHeaderSize(isPartOfMessage()) + sizeof(PacketType) + sizeof(PacketVersion)
|
||||||
+ NUM_BYTES_RFC4122_UUID;
|
+ NUM_BYTES_RFC4122_UUID;
|
||||||
|
|
|
@ -29,11 +29,9 @@ int NodePtrMetaTypeId = qRegisterMetaType<Node*>("Node*");
|
||||||
int sharedPtrNodeMetaTypeId = qRegisterMetaType<QSharedPointer<Node>>("QSharedPointer<Node>");
|
int sharedPtrNodeMetaTypeId = qRegisterMetaType<QSharedPointer<Node>>("QSharedPointer<Node>");
|
||||||
int sharedNodePtrMetaTypeId = qRegisterMetaType<SharedNodePointer>("SharedNodePointer");
|
int sharedNodePtrMetaTypeId = qRegisterMetaType<SharedNodePointer>("SharedNodePointer");
|
||||||
|
|
||||||
namespace NodeType {
|
|
||||||
QHash<NodeType_t, QString> TypeNameHash;
|
|
||||||
}
|
|
||||||
|
|
||||||
void NodeType::init() {
|
void NodeType::init() {
|
||||||
|
QHash<NodeType_t, QString>& TypeNameHash = Node::getTypeNameHash();
|
||||||
|
|
||||||
TypeNameHash.insert(NodeType::DomainServer, "Domain Server");
|
TypeNameHash.insert(NodeType::DomainServer, "Domain Server");
|
||||||
TypeNameHash.insert(NodeType::EntityServer, "Entity Server");
|
TypeNameHash.insert(NodeType::EntityServer, "Entity Server");
|
||||||
TypeNameHash.insert(NodeType::Agent, "Agent");
|
TypeNameHash.insert(NodeType::Agent, "Agent");
|
||||||
|
@ -50,6 +48,7 @@ void NodeType::init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString& NodeType::getNodeTypeName(NodeType_t nodeType) {
|
const QString& NodeType::getNodeTypeName(NodeType_t nodeType) {
|
||||||
|
QHash<NodeType_t, QString>& TypeNameHash = Node::getTypeNameHash();
|
||||||
QHash<NodeType_t, QString>::iterator matchedTypeName = TypeNameHash.find(nodeType);
|
QHash<NodeType_t, QString>::iterator matchedTypeName = TypeNameHash.find(nodeType);
|
||||||
return matchedTypeName != TypeNameHash.end() ? matchedTypeName.value() : UNKNOWN_NodeType_t_NAME;
|
return matchedTypeName != TypeNameHash.end() ? matchedTypeName.value() : UNKNOWN_NodeType_t_NAME;
|
||||||
}
|
}
|
||||||
|
@ -85,6 +84,7 @@ NodeType_t NodeType::downstreamType(NodeType_t primaryType) {
|
||||||
}
|
}
|
||||||
|
|
||||||
NodeType_t NodeType::fromString(QString type) {
|
NodeType_t NodeType::fromString(QString type) {
|
||||||
|
QHash<NodeType_t, QString>& TypeNameHash = Node::getTypeNameHash();
|
||||||
return TypeNameHash.key(type, NodeType::Unassigned);
|
return TypeNameHash.key(type, NodeType::Unassigned);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -86,6 +86,11 @@ public:
|
||||||
|
|
||||||
bool isIgnoreRadiusEnabled() const { return _ignoreRadiusEnabled; }
|
bool isIgnoreRadiusEnabled() const { return _ignoreRadiusEnabled; }
|
||||||
|
|
||||||
|
static QHash<NodeType_t, QString>& getTypeNameHash() {
|
||||||
|
static QHash<NodeType_t, QString> TypeNameHash;
|
||||||
|
return TypeNameHash;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// privatize copy and assignment operator to disallow Node copying
|
// privatize copy and assignment operator to disallow Node copying
|
||||||
Node(const Node &otherNode);
|
Node(const Node &otherNode);
|
||||||
|
|
|
@ -32,7 +32,7 @@ bool PacketReceiver::registerListenerForTypes(PacketTypeList types, QObject* lis
|
||||||
|
|
||||||
// Partition types based on whether they are sourced or not (non sourced in front)
|
// Partition types based on whether they are sourced or not (non sourced in front)
|
||||||
auto middle = std::partition(std::begin(types), std::end(types), [](PacketType type) {
|
auto middle = std::partition(std::begin(types), std::end(types), [](PacketType type) {
|
||||||
return NON_SOURCED_PACKETS.contains(type);
|
return PacketTypeEnum::getNonSourcedPackets().contains(type);
|
||||||
});
|
});
|
||||||
|
|
||||||
QMetaMethod nonSourcedMethod, sourcedMethod;
|
QMetaMethod nonSourcedMethod, sourcedMethod;
|
||||||
|
@ -123,7 +123,7 @@ QMetaMethod PacketReceiver::matchingMethodForListener(PacketType type, QObject*
|
||||||
SIGNATURE_TEMPLATE.arg(slot, NON_SOURCED_MESSAGE_LISTENER_PARAMETERS)
|
SIGNATURE_TEMPLATE.arg(slot, NON_SOURCED_MESSAGE_LISTENER_PARAMETERS)
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!NON_SOURCED_PACKETS.contains(type)) {
|
if (!PacketTypeEnum::getNonSourcedPackets().contains(type)) {
|
||||||
static const QString SOURCED_MESSAGE_LISTENER_PARAMETERS = "QSharedPointer<ReceivedMessage>,QSharedPointer<Node>";
|
static const QString SOURCED_MESSAGE_LISTENER_PARAMETERS = "QSharedPointer<ReceivedMessage>,QSharedPointer<Node>";
|
||||||
static const QString TYPEDEF_SOURCED_MESSAGE_LISTENER_PARAMETERS = "QSharedPointer<ReceivedMessage>,SharedNodePointer";
|
static const QString TYPEDEF_SOURCED_MESSAGE_LISTENER_PARAMETERS = "QSharedPointer<ReceivedMessage>,SharedNodePointer";
|
||||||
|
|
||||||
|
|
|
@ -22,38 +22,6 @@
|
||||||
Q_DECLARE_METATYPE(PacketType);
|
Q_DECLARE_METATYPE(PacketType);
|
||||||
int packetTypeMetaTypeId = qRegisterMetaType<PacketType>();
|
int packetTypeMetaTypeId = qRegisterMetaType<PacketType>();
|
||||||
|
|
||||||
const QSet<PacketType> NON_VERIFIED_PACKETS = QSet<PacketType>()
|
|
||||||
<< PacketType::NodeJsonStats << PacketType::EntityQuery
|
|
||||||
<< PacketType::OctreeDataNack << PacketType::EntityEditNack
|
|
||||||
<< PacketType::DomainListRequest << PacketType::StopNode
|
|
||||||
<< PacketType::DomainDisconnectRequest << PacketType::UsernameFromIDRequest
|
|
||||||
<< PacketType::NodeKickRequest << PacketType::NodeMuteRequest;
|
|
||||||
|
|
||||||
const QSet<PacketType> NON_SOURCED_PACKETS = QSet<PacketType>()
|
|
||||||
<< PacketType::StunResponse << PacketType::CreateAssignment << PacketType::RequestAssignment
|
|
||||||
<< PacketType::DomainServerRequireDTLS << PacketType::DomainConnectRequest
|
|
||||||
<< PacketType::DomainList << PacketType::DomainConnectionDenied
|
|
||||||
<< PacketType::DomainServerPathQuery << PacketType::DomainServerPathResponse
|
|
||||||
<< PacketType::DomainServerAddedNode << PacketType::DomainServerConnectionToken
|
|
||||||
<< PacketType::DomainSettingsRequest << PacketType::DomainSettings
|
|
||||||
<< PacketType::ICEServerPeerInformation << PacketType::ICEServerQuery << PacketType::ICEServerHeartbeat
|
|
||||||
<< PacketType::ICEServerHeartbeatACK << PacketType::ICEPing << PacketType::ICEPingReply
|
|
||||||
<< PacketType::ICEServerHeartbeatDenied << PacketType::AssignmentClientStatus << PacketType::StopNode
|
|
||||||
<< PacketType::DomainServerRemovedNode << PacketType::UsernameFromIDReply << PacketType::OctreeFileReplacement
|
|
||||||
<< PacketType::ReplicatedMicrophoneAudioNoEcho << PacketType::ReplicatedMicrophoneAudioWithEcho
|
|
||||||
<< PacketType::ReplicatedInjectAudio << PacketType::ReplicatedSilentAudioFrame
|
|
||||||
<< PacketType::ReplicatedAvatarIdentity << PacketType::ReplicatedKillAvatar << PacketType::ReplicatedBulkAvatarData;
|
|
||||||
|
|
||||||
const QHash<PacketType, PacketType> REPLICATED_PACKET_MAPPING {
|
|
||||||
{ PacketType::MicrophoneAudioNoEcho, PacketType::ReplicatedMicrophoneAudioNoEcho },
|
|
||||||
{ PacketType::MicrophoneAudioWithEcho, PacketType::ReplicatedMicrophoneAudioWithEcho },
|
|
||||||
{ PacketType::InjectAudio, PacketType::ReplicatedInjectAudio },
|
|
||||||
{ PacketType::SilentAudioFrame, PacketType::ReplicatedSilentAudioFrame },
|
|
||||||
{ PacketType::AvatarIdentity, PacketType::ReplicatedAvatarIdentity },
|
|
||||||
{ PacketType::KillAvatar, PacketType::ReplicatedKillAvatar },
|
|
||||||
{ PacketType::BulkAvatarData, PacketType::ReplicatedBulkAvatarData }
|
|
||||||
};
|
|
||||||
|
|
||||||
PacketVersion versionForPacketType(PacketType packetType) {
|
PacketVersion versionForPacketType(PacketType packetType) {
|
||||||
switch (packetType) {
|
switch (packetType) {
|
||||||
case PacketType::DomainList:
|
case PacketType::DomainList:
|
||||||
|
|
|
@ -123,19 +123,58 @@ public:
|
||||||
ReplicatedBulkAvatarData,
|
ReplicatedBulkAvatarData,
|
||||||
NUM_PACKET_TYPE
|
NUM_PACKET_TYPE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const static QHash<PacketTypeEnum::Value, PacketTypeEnum::Value> getReplicatedPacketMapping() {
|
||||||
|
const static QHash<PacketTypeEnum::Value, PacketTypeEnum::Value> REPLICATED_PACKET_MAPPING {
|
||||||
|
{ PacketTypeEnum::Value::MicrophoneAudioNoEcho, PacketTypeEnum::Value::ReplicatedMicrophoneAudioNoEcho },
|
||||||
|
{ PacketTypeEnum::Value::MicrophoneAudioWithEcho, PacketTypeEnum::Value::ReplicatedMicrophoneAudioWithEcho },
|
||||||
|
{ PacketTypeEnum::Value::InjectAudio, PacketTypeEnum::Value::ReplicatedInjectAudio },
|
||||||
|
{ PacketTypeEnum::Value::SilentAudioFrame, PacketTypeEnum::Value::ReplicatedSilentAudioFrame },
|
||||||
|
{ PacketTypeEnum::Value::AvatarIdentity, PacketTypeEnum::Value::ReplicatedAvatarIdentity },
|
||||||
|
{ PacketTypeEnum::Value::KillAvatar, PacketTypeEnum::Value::ReplicatedKillAvatar },
|
||||||
|
{ PacketTypeEnum::Value::BulkAvatarData, PacketTypeEnum::Value::ReplicatedBulkAvatarData }
|
||||||
|
};
|
||||||
|
return REPLICATED_PACKET_MAPPING;
|
||||||
|
}
|
||||||
|
|
||||||
|
const static QSet<PacketTypeEnum::Value> getNonVerifiedPackets() {
|
||||||
|
const static QSet<PacketTypeEnum::Value> NON_VERIFIED_PACKETS = QSet<PacketTypeEnum::Value>()
|
||||||
|
<< PacketTypeEnum::Value::NodeJsonStats << PacketTypeEnum::Value::EntityQuery
|
||||||
|
<< PacketTypeEnum::Value::OctreeDataNack << PacketTypeEnum::Value::EntityEditNack
|
||||||
|
<< PacketTypeEnum::Value::DomainListRequest << PacketTypeEnum::Value::StopNode
|
||||||
|
<< PacketTypeEnum::Value::DomainDisconnectRequest << PacketTypeEnum::Value::UsernameFromIDRequest
|
||||||
|
<< PacketTypeEnum::Value::NodeKickRequest << PacketTypeEnum::Value::NodeMuteRequest;
|
||||||
|
return NON_VERIFIED_PACKETS;
|
||||||
|
}
|
||||||
|
|
||||||
|
const static QSet<PacketTypeEnum::Value> getNonSourcedPackets() {
|
||||||
|
const static QSet<PacketTypeEnum::Value> NON_SOURCED_PACKETS = QSet<PacketTypeEnum::Value>()
|
||||||
|
<< PacketTypeEnum::Value::StunResponse << PacketTypeEnum::Value::CreateAssignment
|
||||||
|
<< PacketTypeEnum::Value::RequestAssignment << PacketTypeEnum::Value::DomainServerRequireDTLS
|
||||||
|
<< PacketTypeEnum::Value::DomainConnectRequest << PacketTypeEnum::Value::DomainList
|
||||||
|
<< PacketTypeEnum::Value::DomainConnectionDenied << PacketTypeEnum::Value::DomainServerPathQuery
|
||||||
|
<< PacketTypeEnum::Value::DomainServerPathResponse << PacketTypeEnum::Value::DomainServerAddedNode
|
||||||
|
<< PacketTypeEnum::Value::DomainServerConnectionToken << PacketTypeEnum::Value::DomainSettingsRequest
|
||||||
|
<< PacketTypeEnum::Value::DomainSettings << PacketTypeEnum::Value::ICEServerPeerInformation
|
||||||
|
<< PacketTypeEnum::Value::ICEServerQuery << PacketTypeEnum::Value::ICEServerHeartbeat
|
||||||
|
<< PacketTypeEnum::Value::ICEServerHeartbeatACK << PacketTypeEnum::Value::ICEPing
|
||||||
|
<< PacketTypeEnum::Value::ICEPingReply << PacketTypeEnum::Value::ICEServerHeartbeatDenied
|
||||||
|
<< PacketTypeEnum::Value::AssignmentClientStatus << PacketTypeEnum::Value::StopNode
|
||||||
|
<< PacketTypeEnum::Value::DomainServerRemovedNode << PacketTypeEnum::Value::UsernameFromIDReply
|
||||||
|
<< PacketTypeEnum::Value::OctreeFileReplacement << PacketTypeEnum::Value::ReplicatedMicrophoneAudioNoEcho
|
||||||
|
<< PacketTypeEnum::Value::ReplicatedMicrophoneAudioWithEcho << PacketTypeEnum::Value::ReplicatedInjectAudio
|
||||||
|
<< PacketTypeEnum::Value::ReplicatedSilentAudioFrame << PacketTypeEnum::Value::ReplicatedAvatarIdentity
|
||||||
|
<< PacketTypeEnum::Value::ReplicatedKillAvatar << PacketTypeEnum::Value::ReplicatedBulkAvatarData;
|
||||||
|
return NON_SOURCED_PACKETS;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
using PacketType = PacketTypeEnum::Value;
|
using PacketType = PacketTypeEnum::Value;
|
||||||
|
|
||||||
extern const QHash<PacketType, PacketType> REPLICATED_PACKET_MAPPING;
|
|
||||||
|
|
||||||
const int NUM_BYTES_MD5_HASH = 16;
|
const int NUM_BYTES_MD5_HASH = 16;
|
||||||
|
|
||||||
typedef char PacketVersion;
|
typedef char PacketVersion;
|
||||||
|
|
||||||
extern const QSet<PacketType> NON_VERIFIED_PACKETS;
|
|
||||||
extern const QSet<PacketType> NON_SOURCED_PACKETS;
|
|
||||||
|
|
||||||
PacketVersion versionForPacketType(PacketType packetType);
|
PacketVersion versionForPacketType(PacketType packetType);
|
||||||
QByteArray protocolVersionsSignature(); /// returns a unqiue signature for all the current protocols
|
QByteArray protocolVersionsSignature(); /// returns a unqiue signature for all the current protocols
|
||||||
QString protocolVersionsSignatureBase64();
|
QString protocolVersionsSignatureBase64();
|
||||||
|
|
|
@ -28,11 +28,9 @@ const QString SYSTEM_TOOLBAR = "com.highfidelity.interface.toolbar.system";
|
||||||
const QString SYSTEM_TABLET = "com.highfidelity.interface.tablet.system";
|
const QString SYSTEM_TABLET = "com.highfidelity.interface.tablet.system";
|
||||||
|
|
||||||
TabletScriptingInterface::TabletScriptingInterface() {
|
TabletScriptingInterface::TabletScriptingInterface() {
|
||||||
qCDebug(uiLogging) << "Building tablet scripting interface";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TabletScriptingInterface::~TabletScriptingInterface() {
|
TabletScriptingInterface::~TabletScriptingInterface() {
|
||||||
qCDebug(uiLogging) << "Destroying tablet scripting interface";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ToolbarProxy* TabletScriptingInterface::getSystemToolbarProxy() {
|
ToolbarProxy* TabletScriptingInterface::getSystemToolbarProxy() {
|
||||||
|
@ -191,7 +189,6 @@ TabletProxy::TabletProxy(QObject* parent, const QString& name) : QObject(parent)
|
||||||
}
|
}
|
||||||
|
|
||||||
TabletProxy::~TabletProxy() {
|
TabletProxy::~TabletProxy() {
|
||||||
qCDebug(uiLogging) << "Destroying tablet proxy " << _name;
|
|
||||||
if (QThread::currentThread() != thread()) {
|
if (QThread::currentThread() != thread()) {
|
||||||
qCWarning(uiLogging) << "Destroying tablet proxy on wrong thread" << _name;
|
qCWarning(uiLogging) << "Destroying tablet proxy on wrong thread" << _name;
|
||||||
}
|
}
|
||||||
|
@ -846,7 +843,6 @@ TabletButtonProxy::TabletButtonProxy(const QVariantMap& properties) :
|
||||||
}
|
}
|
||||||
|
|
||||||
TabletButtonProxy::~TabletButtonProxy() {
|
TabletButtonProxy::~TabletButtonProxy() {
|
||||||
qCDebug(uiLogging) << "Destroying tablet button proxy " ;
|
|
||||||
if (QThread::currentThread() != thread()) {
|
if (QThread::currentThread() != thread()) {
|
||||||
qCWarning(uiLogging) << "Destroying tablet button proxy on wrong thread";
|
qCWarning(uiLogging) << "Destroying tablet button proxy on wrong thread";
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
|
#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
|
||||||
#pragma GCC diagnostic ignored "-Wunused-result"
|
#pragma GCC diagnostic ignored "-Wunused-result"
|
||||||
#pragma GCC diagnostic ignored "-Wignored-qualifiers"
|
#pragma GCC diagnostic ignored "-Wignored-qualifiers"
|
||||||
|
#pragma GCC diagnostic ignored "-Wtype-limits"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <gli/gli.hpp>
|
#include <gli/gli.hpp>
|
||||||
|
|
Loading…
Reference in a new issue