Skip to content

Commit 0f87463

Browse files
committed
Correct SmartPointers around Hyperion to ensure proper ownership
1 parent ed26ea6 commit 0f87463

38 files changed

+760
-465
lines changed

include/api/API.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ class API : public QObject
383383

384384
// current instance index
385385
quint8 _currInstanceIndex;
386-
QSharedPointer<Hyperion> _hyperion;
386+
QWeakPointer<Hyperion> _hyperionWeak;
387387

388388
signals:
389389
///

include/api/JsonAPI.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -422,5 +422,4 @@ private slots:
422422
QSharedPointer<JsonCallbacks> _jsonCB;
423423

424424
bool _isServiceAvailable;
425-
426425
};

include/api/JsonApiSubscription.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,7 @@ class Subscription {
1313
Unknown,
1414
AdjustmentUpdate,
1515
ComponentsUpdate,
16-
#if defined(ENABLE_EFFECTENGINE)
1716
EffectsUpdate,
18-
#endif
1917
EventUpdate,
2018
ImageToLedMappingUpdate,
2119
ImageUpdate,
@@ -33,9 +31,7 @@ class Subscription {
3331
switch (type) {
3432
case AdjustmentUpdate: return "adjustment-update";
3533
case ComponentsUpdate: return "components-update";
36-
#if defined(ENABLE_EFFECTENGINE)
3734
case EffectsUpdate: return "effects-update";
38-
#endif
3935
case EventUpdate: return "event-update";
4036
case ImageToLedMappingUpdate: return "imageToLedMapping-update";
4137
case ImageUpdate: return "ledcolors-imagestream-update";
@@ -55,9 +51,7 @@ class Subscription {
5551
switch (type) {
5652
case AdjustmentUpdate:
5753
case ComponentsUpdate:
58-
#if defined(ENABLE_EFFECTENGINE)
5954
case EffectsUpdate:
60-
#endif
6155
case ImageToLedMappingUpdate:
6256
case ImageUpdate:
6357
case LedColorsUpdate:
@@ -109,9 +103,7 @@ class ApiSubscriptionRegister {
109103
static const SubscriptionLookupMap subscriptionLookup {
110104
{ {"adjustment-update"}, { Subscription::AdjustmentUpdate, true} },
111105
{ {"components-update"}, { Subscription::ComponentsUpdate, true} },
112-
#if defined(ENABLE_EFFECTENGINE)
113106
{ {"effects-update"}, { Subscription::EffectsUpdate, true} },
114-
#endif
115107
{ {"event-update"}, { Subscription::EventUpdate, true} },
116108
{ {"imageToLedMapping-update"}, { Subscription::ImageToLedMappingUpdate, true} },
117109
{ {"ledcolors-imagestream-update"}, { Subscription::ImageUpdate, false} },

include/api/JsonCallbacks.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -196,16 +196,16 @@ private slots:
196196

197197
Logger *_log;
198198
quint8 _instanceID;
199-
QSharedPointer<Hyperion> _hyperion;
199+
QWeakPointer<Hyperion> _hyperionWeak;
200200

201201
/// The peer address of the client
202202
QString _peerAddress;
203203

204204
/// pointer of comp register
205-
QSharedPointer<ComponentRegister> _componentRegister;
205+
QWeakPointer<ComponentRegister> _componentRegisterWeak;
206206

207207
/// priority muxer instance
208-
QSharedPointer<PriorityMuxer> _prioMuxer;
208+
QWeakPointer<PriorityMuxer> _prioMuxerWeak;
209209

210210
/// contains active subscriptions
211211
QSet<Subscription::Type> _subscribedCommands;

include/api/JsonInfo.h

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,29 +7,31 @@
77

88
#include <QJsonObject>
99
#include <QJsonArray>
10+
#include <QSharedPointer>
11+
1012

1113
class JsonInfo
1214
{
1315

1416
public:
15-
static QJsonObject getInfo(const Hyperion* hyperion, Logger* log);
16-
static QJsonArray getAdjustmentInfo(const Hyperion* hyperion, Logger* log);
17-
static QJsonArray getPrioritiestInfo(const Hyperion* hyperion);
17+
static QJsonObject getInfo(const QSharedPointer<Hyperion>& hyperionInstance, Logger* log);
18+
static QJsonArray getAdjustmentInfo(const QSharedPointer<Hyperion>& hyperionInstance, Logger* log);
19+
static QJsonArray getPrioritiestInfo(const QSharedPointer<Hyperion>& hyperionInstance);
1820
static QJsonArray getPrioritiestInfo(int currentPriority, const PriorityMuxer::InputsMap& activeInputs);
1921
static QJsonArray getEffects();
2022
static QJsonArray getEffectSchemas();
2123
static QJsonArray getAvailableScreenGrabbers();
2224
static QJsonArray getAvailableVideoGrabbers();
2325
static QJsonArray getAvailableAudioGrabbers();
24-
static QJsonObject getGrabbers(const Hyperion* hyperion);
26+
static QJsonObject getGrabbers(const QSharedPointer<Hyperion>& hyperionInstance);
2527
static QJsonObject getAvailableLedDevices();
2628
static QJsonObject getCecInfo();
2729
static QJsonArray getServices();
28-
static QJsonArray getComponents(const Hyperion* hyperion);
30+
static QJsonArray getComponents(const QSharedPointer<Hyperion>& hyperionInstance);
2931
static QJsonArray getInstanceInfo();
30-
static QJsonArray getActiveEffects(const Hyperion* hyperion);
31-
static QJsonArray getActiveColors(const Hyperion* hyperion);
32-
static QJsonArray getTransformationInfo(const Hyperion* hyperion);
32+
static QJsonArray getActiveEffects(const QSharedPointer<Hyperion>& hyperionInstance);
33+
static QJsonArray getActiveColors(const QSharedPointer<Hyperion>& hyperionInstance);
34+
static QJsonArray getTransformationInfo(const QSharedPointer<Hyperion>& hyperionInstance);
3335
static QJsonObject getSystemInfo();
3436
QJsonObject discoverSources (const QString& sourceType, const QJsonObject& params);
3537

include/blackborder/BlackBorderProcessor.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ namespace hyperion
2626
{
2727
Q_OBJECT
2828
public:
29-
BlackBorderProcessor(Hyperion* hyperion, QObject* parent);
29+
BlackBorderProcessor(const QSharedPointer<Hyperion>& hyperionInstance, QObject* parent);
30+
~BlackBorderProcessor() override;
3031

3132
///
3233
/// Return the current (detected) border
@@ -114,7 +115,9 @@ namespace hyperion
114115

115116
private:
116117
/// Hyperion instance
117-
Hyperion* _hyperion;
118+
QWeakPointer<Hyperion> _hyperionWeak;
119+
/// Logger instance
120+
Logger* _log;
118121

119122
///
120123
/// Updates the current border based on the newly detected border. Returns true if the

include/effectengine/Effect.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class Effect : public QThread
2424

2525
friend class EffectModule;
2626

27-
Effect(Hyperion* hyperion
27+
Effect(const QSharedPointer<Hyperion>& hyperionInstance
2828
, int priority
2929
, int timeout
3030
, const QString& script
@@ -84,7 +84,8 @@ public slots:
8484
bool setModuleParameters();
8585
void addImage();
8686

87-
Hyperion* _hyperion;
87+
/// Hyperion instance pointer
88+
QWeakPointer<Hyperion> _hyperionWeak;
8889

8990
const int _priority;
9091

include/effectengine/EffectEngine.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class EffectEngine : public QObject
2727
Q_OBJECT
2828

2929
public:
30-
EffectEngine(Hyperion * hyperion);
30+
explicit EffectEngine(const QSharedPointer<Hyperion>& hyperionInstance);
3131
~EffectEngine() override;
3232

3333
std::list<EffectDefinition> getEffects() const { return _availableEffects; }
@@ -101,7 +101,8 @@ private slots:
101101
void waitForEffectsToStop();
102102

103103
private:
104-
Hyperion * _hyperion;
104+
/// Hyperion instance pointer
105+
QWeakPointer<Hyperion> _hyperionWeak;
105106

106107
std::list<EffectDefinition> _availableEffects;
107108

@@ -112,7 +113,7 @@ private slots:
112113
Logger * _log;
113114

114115
// The global effect file handler
115-
EffectFileHandler* _effectFileHandler;
116+
EffectFileHandler * _effectFileHandler;
116117

117118
QEventLoop _eventLoop;
118119
int _remainingEffects;

include/forwarder/MessageForwarder.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#include <QJsonArray>
1515
#include <QJsonDocument>
1616
#include <QSharedPointer>
17+
#include <QWeakPointer>
1718

1819
// Utils includes
1920
#include <utils/ColorRgb.h>
@@ -133,10 +134,11 @@ private slots:
133134
SettingsTable _settings;
134135

135136
/// Hyperion instance forwarded
136-
QSharedPointer<Hyperion> _hyperion;
137+
/// Hyperion instance
138+
QWeakPointer<Hyperion> _hyperionWeak;
137139

138140
/// Muxer instance
139-
QSharedPointer<PriorityMuxer> _muxer;
141+
QWeakPointer<PriorityMuxer> _muxerWeak;
140142

141143
// JSON connections for forwarding
142144
QList<TargetHost> _jsonTargets;

include/hyperion/BGEffectHandler.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ class BGEffectHandler : public QObject
1717
Q_OBJECT
1818

1919
public:
20-
BGEffectHandler(Hyperion* hyperion = nullptr);
20+
BGEffectHandler(const QSharedPointer<Hyperion>& hyperionInstance);
21+
~BGEffectHandler() override;
2122

2223
///
2324
/// @brief Disconnect from connected signals
@@ -48,7 +49,7 @@ private slots:
4849

4950
private:
5051
/// Hyperion instance pointer
51-
Hyperion* _hyperion;
52+
QWeakPointer<Hyperion> _hyperionWeak;
5253
Logger * _log;
5354

5455
QJsonDocument _bgEffectConfig;

0 commit comments

Comments
 (0)