diff --git a/src/modules/videoconference/VideoConferenceModule/Toolbar.cpp b/src/modules/videoconference/VideoConferenceModule/Toolbar.cpp index 31af280fc1..c3033a4243 100644 --- a/src/modules/videoconference/VideoConferenceModule/Toolbar.cpp +++ b/src/modules/videoconference/VideoConferenceModule/Toolbar.cpp @@ -128,6 +128,10 @@ LRESULT Toolbar::WindowProcessMessages(HWND hwnd, UINT msg, WPARAM wparam, LPARA { show = toolbar->HideToolbarWhenUnmuted ? toolbar->microphoneMuted || toolbar->cameraMuted : true; } + else if (toolbar->previouscameraInUse) + { + VideoConferenceModule::unmuteAll(); + } else { show = toolbar->microphoneMuted; @@ -143,7 +147,7 @@ LRESULT Toolbar::WindowProcessMessages(HWND hwnd, UINT msg, WPARAM wparam, LPARA } KillTimer(hwnd, toolbar->nTimerId); - + toolbar->previouscameraInUse = toolbar->cameraInUse; break; } default: diff --git a/src/modules/videoconference/VideoConferenceModule/Toolbar.h b/src/modules/videoconference/VideoConferenceModule/Toolbar.h index e4612454dc..7b3dd43910 100644 --- a/src/modules/videoconference/VideoConferenceModule/Toolbar.h +++ b/src/modules/videoconference/VideoConferenceModule/Toolbar.h @@ -42,6 +42,7 @@ private: bool cameraMuted = false; bool cameraInUse = false; + bool previouscameraInUse = false; bool microphoneMuted = false; std::wstring theme = L"system"; diff --git a/src/modules/videoconference/VideoConferenceModule/VideoConferenceModule.cpp b/src/modules/videoconference/VideoConferenceModule/VideoConferenceModule.cpp index 9fed1d08b2..03fe864412 100644 --- a/src/modules/videoconference/VideoConferenceModule/VideoConferenceModule.cpp +++ b/src/modules/videoconference/VideoConferenceModule/VideoConferenceModule.cpp @@ -179,7 +179,7 @@ VideoConferenceModule::VideoConferenceModule() inline VideoConferenceModule::~VideoConferenceModule() { - unmuteAll(); + instance->unmuteAll(); toolbar.hide(); } @@ -408,7 +408,7 @@ void VideoConferenceModule::disable() } } - unmuteAll(); + instance->unmuteAll(); toolbar.hide(); _enabled = false; diff --git a/src/modules/videoconference/VideoConferenceModule/VideoConferenceModule.h b/src/modules/videoconference/VideoConferenceModule/VideoConferenceModule.h index 63d22bc66f..a0e1d8b5f0 100644 --- a/src/modules/videoconference/VideoConferenceModule/VideoConferenceModule.h +++ b/src/modules/videoconference/VideoConferenceModule/VideoConferenceModule.h @@ -47,6 +47,7 @@ public: void sendSourceCameraNameUpdate(); void sendOverlayImageUpdate(); + static void unmuteAll(); static void reverseMicrophoneMute(); static bool getMicrophoneMuteState(); static void reverseVirtualCameraMuteState(); @@ -54,7 +55,6 @@ public: static bool getVirtualCameraInUse(); private: - void unmuteAll(); void init_settings(); void updateControlledMicrophones(const std::wstring_view new_mic); // all callback methods and used by callback have to be static