diff --git a/src/configuration.cc b/src/configuration.cc index c34ffbec3e0873ba72ac4b482cdb921132349141..273b639037dc06c8e584f995829cc9d50ffb9197 100644 --- a/src/configuration.cc +++ b/src/configuration.cc @@ -71,6 +71,12 @@ Configuration::Configuration(QObject *parent) : QObject(parent) { // TODO Configuration check } +Configuration &Configuration::Instance() { + static Configuration instance; + + return instance; +} + QImage Configuration::frame() const { return frame_; } const QImage &Configuration::ConstFrame() const { return frame_; } diff --git a/src/configuration.h b/src/configuration.h index b38c0f8b405483e5cc3617d2671b7286f7459c63..cf1f07061035216d08dc50d9116568c509fa39c1 100644 --- a/src/configuration.h +++ b/src/configuration.h @@ -11,9 +11,10 @@ namespace libmueb { class Configuration : public QObject { Q_OBJECT + Q_DISABLE_COPY(Configuration) public: - explicit Configuration(QObject* parent = nullptr); + static Configuration& Instance(); QImage frame() const; const QImage& ConstFrame() const; @@ -55,6 +56,9 @@ class Configuration : public QObject { quint8 color_depth_; quint8 factor_; bool debug_mode_; + + explicit Configuration(QObject* parent = nullptr); + ~Configuration() = default; }; } // namespace libmueb diff --git a/src/muebreceiver_p.h b/src/muebreceiver_p.h index ec6cb39c6559e337b075cbe9443733a5efd9ac53..8ae47c156a4bc9e82a75e6c8a9c9bca3444e35d1 100644 --- a/src/muebreceiver_p.h +++ b/src/muebreceiver_p.h @@ -15,7 +15,9 @@ class MuebReceiverPrivate { public: explicit MuebReceiverPrivate(MuebReceiver *receiver) - : frame(configuration.frame()), q_ptr(receiver) { + : configuration(Configuration::Instance()), + frame(configuration.frame()), + q_ptr(receiver) { socket.bind( configuration.broadcast_animation_port(), QAbstractSocket::ShareAddress | QAbstractSocket::ReuseAddressHint); @@ -29,7 +31,7 @@ class MuebReceiverPrivate { .arg(configuration.broadcast_animation_port()); } - Configuration configuration; + Configuration &configuration; libmueb::Frame frame; QUdpSocket socket; MuebReceiver *q_ptr; diff --git a/src/muebtransmitter_p.h b/src/muebtransmitter_p.h index a5b88a82a197468ef0ec3204ad6fbd33b11a94d4..0654c8f8ee1f6e396a26a6cf85632b95c47f62fa 100644 --- a/src/muebtransmitter_p.h +++ b/src/muebtransmitter_p.h @@ -19,7 +19,8 @@ class MuebTransmitterPrivate { public: explicit MuebTransmitterPrivate(MuebTransmitter* transmitter) - : datagram_(QByteArray(), configuration_.target_address(), + : configuration_(Configuration::Instance()), + datagram_(QByteArray(), configuration_.target_address(), configuration_.broadcast_animation_port()), q_ptr(transmitter) { qInfo().noquote() @@ -29,7 +30,7 @@ class MuebTransmitterPrivate { .arg(configuration_.broadcast_animation_port()); } - Configuration configuration_; + Configuration& configuration_; QUdpSocket socket_; QNetworkDatagram datagram_; MuebTransmitter* q_ptr;