diff --git a/modules/desktop_capture/linux/wayland/base_capturer_pipewire.cc b/modules/desktop_capture/linux/wayland/base_capturer_pipewire.cc index 4ef00e68ab..40764de7ae 100644 --- a/modules/desktop_capture/linux/wayland/base_capturer_pipewire.cc +++ b/modules/desktop_capture/linux/wayland/base_capturer_pipewire.cc @@ -82,8 +82,10 @@ void BaseCapturerPipeWire::OnScreenCastRequestResult(RequestResponse result, << static_cast(result); } else if (ScreenCastPortal* screencast_portal = GetScreenCastPortal()) { if (!screencast_portal->RestoreToken().empty()) { + const SourceId token_id = + selected_source_id_ ? selected_source_id_ : source_id_; RestoreTokenManager::GetInstance().AddToken( - source_id_, screencast_portal->RestoreToken()); + token_id, screencast_portal->RestoreToken()); } } @@ -137,7 +139,7 @@ void BaseCapturerPipeWire::Start(Callback* callback) { ScreenCastPortal::PersistMode::kTransient); if (selected_source_id_) { screencast_portal->SetRestoreToken( - RestoreTokenManager::GetInstance().TakeToken(selected_source_id_)); + RestoreTokenManager::GetInstance().GetToken(selected_source_id_)); } } diff --git a/modules/desktop_capture/linux/wayland/restore_token_manager.cc b/modules/desktop_capture/linux/wayland/restore_token_manager.cc index 5ca9b957a9..a17d9a49bb 100644 --- a/modules/desktop_capture/linux/wayland/restore_token_manager.cc +++ b/modules/desktop_capture/linux/wayland/restore_token_manager.cc @@ -23,10 +23,8 @@ void RestoreTokenManager::AddToken(DesktopCapturer::SourceId id, restore_tokens_.insert({id, token}); } -std::string RestoreTokenManager::TakeToken(DesktopCapturer::SourceId id) { - std::string token = restore_tokens_[id]; - // Remove the token as it cannot be used anymore - restore_tokens_.erase(id); +std::string RestoreTokenManager::GetToken(DesktopCapturer::SourceId id) { + const std::string token = restore_tokens_[id]; return token; } diff --git a/modules/desktop_capture/linux/wayland/restore_token_manager.h b/modules/desktop_capture/linux/wayland/restore_token_manager.h index 174bef121f..ad4f74790f 100644 --- a/modules/desktop_capture/linux/wayland/restore_token_manager.h +++ b/modules/desktop_capture/linux/wayland/restore_token_manager.h @@ -27,7 +27,7 @@ class RestoreTokenManager { static RestoreTokenManager& GetInstance(); void AddToken(DesktopCapturer::SourceId id, const std::string& token); - std::string TakeToken(DesktopCapturer::SourceId id); + std::string GetToken(DesktopCapturer::SourceId id); // Returns a source ID which does not have any token associated with it yet. DesktopCapturer::SourceId GetUnusedId();