Skip to content
Snippets Groups Projects
Commit 17f9bda8 authored by Aline Gondim Santos's avatar Aline Gondim Santos Committed by Aline Gondim Santos
Browse files

plugins: don't activate if plugins are disabled

GitLab: #497
Change-Id: I713b5171fdd382b50e3797ed726f128269db662e
parent 98561133
No related branches found
No related tags found
No related merge requests found
......@@ -186,6 +186,10 @@ void
setPluginsEnabled(bool state)
{
jami::Manager::instance().pluginPreferences.setPluginsEnabled(state);
jami::Manager::instance()
.getJamiPluginManager()
.getCallServicesManager()
.pauseRestartMediaHandlers(state);
jami::Manager::instance().saveConfig();
}
} // namespace DRing
......@@ -83,6 +83,19 @@ CallServicesManager::createAVSubject(const StreamData& data, AVSubjectSPtr subje
}
}
void
CallServicesManager::pauseRestartMediaHandlers(bool isPluginEnabled)
{
auto calls = Manager::instance().callFactory.getAllCalls();
for (auto& call : calls) {
if (call->getState() == Call::CallState::ACTIVE) {
auto callId = call->getCallId();
for (const auto& toggledMediaHandlerPair : mediaHandlerToggled_[callId])
toggleCallMediaHandler(toggledMediaHandlerPair.first, callId, isPluginEnabled);
}
}
}
void
CallServicesManager::clearAVSubject(const std::string& callId)
{
......@@ -258,6 +271,7 @@ CallServicesManager::toggleCallMediaHandler(const uintptr_t mediaHandlerId,
{
auto& handlers = mediaHandlerToggled_[callId];
bool applyRestart = false;
auto isPluginEnabled = jami::Manager::instance().pluginPreferences.getPluginsEnabled();
for (auto subject : callAVsubjects_[callId]) {
auto handlerIt = std::find_if(callMediaHandlers_.begin(),
......@@ -268,11 +282,13 @@ CallServicesManager::toggleCallMediaHandler(const uintptr_t mediaHandlerId,
if (handlerIt != callMediaHandlers_.end()) {
if (toggle) {
if (isPluginEnabled)
notifyAVSubject((*handlerIt), subject.first, subject.second);
if (isAttached((*handlerIt)))
if (isAttached((*handlerIt)) || !isPluginEnabled)
handlers[mediaHandlerId] = true;
} else {
(*handlerIt)->detach();
if (isPluginEnabled)
handlers[mediaHandlerId] = false;
}
if (subject.first.type == StreamType::video && isVideoType((*handlerIt)))
......
......@@ -127,6 +127,13 @@ public:
*/
void clearCallHandlerMaps(const std::string& callId);
/**
* @brief used to stop/restart plugins when jami preference is changed mid call.
*
* @param isPluginEnabled
*/
void pauseRestartMediaHandlers(bool isPluginEnabled);
private:
/**
* @brief Exposes MediaHandlers' life cycle managers services to the main API.
......
......@@ -112,7 +112,7 @@ ChatServicesManager::getChatHandlers()
void
ChatServicesManager::publishMessage(pluginMessagePtr& message)
{
if (message->fromPlugin)
if (message->fromPlugin || !jami::Manager::instance().pluginPreferences.getPluginsEnabled())
return;
std::pair<std::string, std::string> mPair(message->accountId, message->peerId);
auto& handlers = chatHandlerToggled_[mPair];
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment