From 4b7b416abf10af49154bcb7434541d00c811bc13 Mon Sep 17 00:00:00 2001 From: amantley Date: Wed, 1 May 2019 14:00:56 -0700 Subject: [PATCH 1/3] corrected the behaviour for ctrl-m so that when you unmute during push to talk you will see it reflected in the audio icon color --- interface/src/Application.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 9a2d320329..a2dd9f1f6d 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -4298,6 +4298,10 @@ void Application::keyPressEvent(QKeyEvent* event) { if (isMeta) { auto audioClient = DependencyManager::get(); audioClient->setMuted(!audioClient->isMuted()); + auto audioScriptingInterface = reinterpret_cast(DependencyManager::get().data()); + if (audioScriptingInterface->getPTT()) { + audioScriptingInterface->setPushingToTalk(!audioClient->isMuted()); + } } break; From a8b54cbe104491a9ada08bcd6b54983107d10027 Mon Sep 17 00:00:00 2001 From: amantley Date: Wed, 1 May 2019 17:32:39 -0700 Subject: [PATCH 2/3] changed reinterpret to dynamic cast --- interface/src/Application.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index a2dd9f1f6d..185306621e 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1441,7 +1441,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo } }); connect(this, &Application::activeDisplayPluginChanged, - reinterpret_cast(audioScriptingInterface.data()), &scripting::Audio::onContextChanged); + dynamic_cast(audioScriptingInterface.data()), &scripting::Audio::onContextChanged); } // Create the rendering engine. This can be slow on some machines due to lots of @@ -1634,7 +1634,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo connect(userInputMapper.data(), &UserInputMapper::actionEvent, [this](int action, float state) { using namespace controller; auto tabletScriptingInterface = DependencyManager::get(); - auto audioScriptingInterface = reinterpret_cast(DependencyManager::get().data()); + auto audioScriptingInterface = dynamic_cast(DependencyManager::get().data()); { auto actionEnum = static_cast(action); int key = Qt::Key_unknown; @@ -4298,9 +4298,9 @@ void Application::keyPressEvent(QKeyEvent* event) { if (isMeta) { auto audioClient = DependencyManager::get(); audioClient->setMuted(!audioClient->isMuted()); - auto audioScriptingInterface = reinterpret_cast(DependencyManager::get().data()); + auto audioScriptingInterface = dynamic_cast(DependencyManager::get().data()); if (audioScriptingInterface->getPTT()) { - audioScriptingInterface->setPushingToTalk(!audioClient->isMuted()); + audioScriptingInterface->setPushingToTalk(!audioClient->isMuted()); } } break; @@ -5363,7 +5363,7 @@ void Application::loadSettings() { } } - auto audioScriptingInterface = reinterpret_cast(DependencyManager::get().data()); + auto audioScriptingInterface = dynamic_cast(DependencyManager::get().data()); audioScriptingInterface->loadData(); getMyAvatar()->loadData(); @@ -5375,7 +5375,7 @@ void Application::saveSettings() const { DependencyManager::get()->saveSettings(); DependencyManager::get()->saveSettings(); - auto audioScriptingInterface = reinterpret_cast(DependencyManager::get().data()); + auto audioScriptingInterface = dynamic_cast(DependencyManager::get().data()); audioScriptingInterface->saveData(); Menu::getInstance()->saveSettings(); From 1f004f34c4907afb42bdb9d132b6aaf5e2cd36b7 Mon Sep 17 00:00:00 2001 From: Angus Antley Date: Thu, 2 May 2019 21:59:11 -0700 Subject: [PATCH 3/3] added check for valid dynamic casts --- interface/src/Application.cpp | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 3454f96ef0..0e5bb55925 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1448,8 +1448,11 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo audioScriptingInterface->environmentMuted(); } }); - connect(this, &Application::activeDisplayPluginChanged, - dynamic_cast(audioScriptingInterface.data()), &scripting::Audio::onContextChanged); + QSharedPointer scriptingAudioSharedPointer = qSharedPointerDynamicCast(DependencyManager::get()); + if (scriptingAudioSharedPointer) { + connect(this, &Application::activeDisplayPluginChanged, + scriptingAudioSharedPointer.data(), &scripting::Audio::onContextChanged); + } } // Create the rendering engine. This can be slow on some machines due to lots of @@ -1642,7 +1645,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo connect(userInputMapper.data(), &UserInputMapper::actionEvent, [this](int action, float state) { using namespace controller; auto tabletScriptingInterface = DependencyManager::get(); - auto audioScriptingInterface = dynamic_cast(DependencyManager::get().data()); + QSharedPointer audioScriptingInterface = qSharedPointerDynamicCast(DependencyManager::get()); { auto actionEnum = static_cast(action); int key = Qt::Key_unknown; @@ -1650,10 +1653,12 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo bool navAxis = false; switch (actionEnum) { case Action::TOGGLE_PUSHTOTALK: - if (state > 0.0f) { - audioScriptingInterface->setPushingToTalk(true); - } else if (state <= 0.0f) { - audioScriptingInterface->setPushingToTalk(false); + if (audioScriptingInterface) { + if (state > 0.0f) { + audioScriptingInterface->setPushingToTalk(true); + } else if (state <= 0.0f) { + audioScriptingInterface->setPushingToTalk(false); + } } break; @@ -4306,8 +4311,8 @@ void Application::keyPressEvent(QKeyEvent* event) { if (isMeta) { auto audioClient = DependencyManager::get(); audioClient->setMuted(!audioClient->isMuted()); - auto audioScriptingInterface = dynamic_cast(DependencyManager::get().data()); - if (audioScriptingInterface->getPTT()) { + QSharedPointer audioScriptingInterface = qSharedPointerDynamicCast(DependencyManager::get()); + if (audioScriptingInterface && audioScriptingInterface->getPTT()) { audioScriptingInterface->setPushingToTalk(!audioClient->isMuted()); } } @@ -5371,8 +5376,10 @@ void Application::loadSettings() { } } - auto audioScriptingInterface = dynamic_cast(DependencyManager::get().data()); - audioScriptingInterface->loadData(); + QSharedPointer audioScriptingInterface = qSharedPointerDynamicCast(DependencyManager::get()); + if (audioScriptingInterface) { + audioScriptingInterface->loadData(); + } getMyAvatar()->loadData(); _settingsLoaded = true; @@ -5383,8 +5390,10 @@ void Application::saveSettings() const { DependencyManager::get()->saveSettings(); DependencyManager::get()->saveSettings(); - auto audioScriptingInterface = dynamic_cast(DependencyManager::get().data()); - audioScriptingInterface->saveData(); + QSharedPointer audioScriptingInterface = qSharedPointerDynamicCast(DependencyManager::get()); + if (audioScriptingInterface) { + audioScriptingInterface->saveData(); + } Menu::getInstance()->saveSettings(); getMyAvatar()->saveData();