diff --git a/bin/dbus/cx.ring.Ring.ConfigurationManager.xml b/bin/dbus/cx.ring.Ring.ConfigurationManager.xml index 348f7ab24..517157d08 100644 --- a/bin/dbus/cx.ring.Ring.ConfigurationManager.xml +++ b/bin/dbus/cx.ring.Ring.ConfigurationManager.xml @@ -779,6 +779,24 @@ + + + + + If hardware decoding is enabled + + + Signal triggered when hardware decoding changes. + + + + + If hardware encoding is enabled + + + Signal triggered when hardware encoding changes. + + diff --git a/bin/dbus/dbusclient.cpp b/bin/dbus/dbusclient.cpp index 465156ab7..d412fe375 100644 --- a/bin/dbus/dbusclient.cpp +++ b/bin/dbus/dbusclient.cpp @@ -186,6 +186,8 @@ DBusClient::initLibrary(int flags) exportable_callback(bind(&DBusConfigurationManager::certificateStateChanged, confM, _1, _2, _3 )), exportable_callback(bind(&DBusConfigurationManager::mediaParametersChanged, confM, _1 )), exportable_callback(bind(&DBusConfigurationManager::migrationEnded, confM, _1, _2 )), + exportable_callback(bind(&DBusConfigurationManager::hardwareDecodingChanged, confM, _1 )), + exportable_callback(bind(&DBusConfigurationManager::hardwareEncodingChanged, confM, _1 )), }; // Presence event handlers diff --git a/bin/jni/configurationmanager.i b/bin/jni/configurationmanager.i index 62430da0c..71bb314e4 100644 --- a/bin/jni/configurationmanager.i +++ b/bin/jni/configurationmanager.i @@ -56,6 +56,9 @@ public: virtual void migrationEnded(const std::string& /*accountId*/, const std::string& /*state*/){} virtual void deviceRevocationEnded(const std::string& /*accountId*/, const std::string& /*device*/, int /*status*/){} + + virtual void hardwareDecodingChanged(bool /*state*/){} + virtual void hardwareEncodingChanged(bool /*state*/){} }; %} @@ -247,4 +250,7 @@ public: virtual void migrationEnded(const std::string& /*accountId*/, const std::string& /*state*/){} virtual void deviceRevocationEnded(const std::string& /*accountId*/, const std::string& /*device*/, int /*status*/){} + + virtual void hardwareDecodingChanged(bool /*state*/){} + virtual void hardwareEncodingChanged(bool /*state*/){} }; diff --git a/bin/nodejs/configurationmanager.i b/bin/nodejs/configurationmanager.i index a86d6aae5..c696d1743 100644 --- a/bin/nodejs/configurationmanager.i +++ b/bin/nodejs/configurationmanager.i @@ -235,4 +235,8 @@ public: virtual void migrationEnded(const std::string& /*accountId*/, const std::string& /*state*/){} virtual void deviceRevocationEnded(const std::string& /*accountId*/, const std::string& /*device*/, int /*status*/){} + + virtual void hardwareDecodingChanged(bool /*state*/){} + virtual void hardwareEncodingChanged(bool /*state*/){} + }; diff --git a/configure.ac b/configure.ac index 23ba85988..6781decec 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ dnl Jami - configure.ac for automake 1.9 and autoconf 2.59 dnl Process this file with autoconf to produce a configure script. AC_PREREQ([2.65]) -AC_INIT([Ring Daemon],[7.2.0],[ring@gnu.org],[ring]) +AC_INIT([Ring Daemon],[7.3.0],[ring@gnu.org],[ring]) AC_COPYRIGHT([[Copyright (c) Savoir-faire Linux 2004-2018]]) AC_REVISION([$Revision$]) diff --git a/src/client/ring_signal.cpp b/src/client/ring_signal.cpp index d10916642..39f2c0793 100644 --- a/src/client/ring_signal.cpp +++ b/src/client/ring_signal.cpp @@ -81,6 +81,8 @@ getSignalHandlers() exported_callback(), exported_callback(), #endif + exported_callback(), + exported_callback(), /* Debug */ exported_callback(), @@ -135,4 +137,4 @@ registerSignalHandlers(const std::map* /* path_ret */); }; #endif + struct DRING_PUBLIC HardwareDecodingChanged { + constexpr static const char* name = "HardwareDecodingChanged"; + using cb_type = void(bool /* state */); + }; + struct DRING_PUBLIC HardwareEncodingChanged { + constexpr static const char* name = "HardwareEncodingChanged"; + using cb_type = void(bool /* state */); + }; }; // Can be used when a client's stdout is not available diff --git a/src/media/media_decoder.cpp b/src/media/media_decoder.cpp index f150b2bb3..06d4e789a 100644 --- a/src/media/media_decoder.cpp +++ b/src/media/media_decoder.cpp @@ -35,6 +35,7 @@ #include "string_utils.h" #include "logger.h" +#include "client/ring_signal.h" #include #include @@ -381,6 +382,7 @@ void MediaDecoder::enableAccel(bool enableAccel) { enableAccel_ = enableAccel; + emitSignal(enableAccel_); if (!enableAccel) { accel_ = {}; if (decoderCtx_->hw_device_ctx) diff --git a/src/preferences.h b/src/preferences.h index 31bf3f033..cf68a3bc9 100644 --- a/src/preferences.h +++ b/src/preferences.h @@ -22,6 +22,7 @@ #define __PREFERENCE_H__ #include "config/serializable.h" +#include "client/ring_signal.h" #include #include #include @@ -462,6 +463,7 @@ class VideoPreferences : public Serializable { void setDecodingAccelerated(bool decodingAccelerated) { decodingAccelerated_ = decodingAccelerated; + emitSignal(decodingAccelerated_); } private: