mirror of
https://github.com/badaix/snapcast.git
synced 2025-06-03 11:21:41 +02:00
Fix data race
This commit is contained in:
parent
8067394212
commit
e6872593ee
3 changed files with 11 additions and 5 deletions
|
@ -84,6 +84,7 @@ void StreamServer::onChunkEncoded(const PcmStream* pcmStream, bool isDefaultStre
|
||||||
{
|
{
|
||||||
if (!settings_.stream.sendAudioToMutedClients)
|
if (!settings_.stream.sendAudioToMutedClients)
|
||||||
{
|
{
|
||||||
|
std::lock_guard<std::recursive_mutex> lock(clientMutex_);
|
||||||
GroupPtr group = Config::instance().getGroupFromClient(session->clientId);
|
GroupPtr group = Config::instance().getGroupFromClient(session->clientId);
|
||||||
if (group)
|
if (group)
|
||||||
{
|
{
|
||||||
|
@ -93,7 +94,6 @@ void StreamServer::onChunkEncoded(const PcmStream* pcmStream, bool isDefaultStre
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::lock_guard<std::recursive_mutex> lock(clientMutex_);
|
|
||||||
ClientInfoPtr client = group->getClient(session->clientId);
|
ClientInfoPtr client = group->getClient(session->clientId);
|
||||||
if (client && client->config.volume.muted)
|
if (client && client->config.volume.muted)
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -38,12 +38,14 @@ StreamSession::StreamSession(net::any_io_executor executor, StreamMessageReceive
|
||||||
|
|
||||||
void StreamSession::setPcmStream(PcmStreamPtr pcmStream)
|
void StreamSession::setPcmStream(PcmStreamPtr pcmStream)
|
||||||
{
|
{
|
||||||
|
std::lock_guard<std::mutex> lock(mutex_);
|
||||||
pcmStream_ = pcmStream;
|
pcmStream_ = pcmStream;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const PcmStreamPtr StreamSession::pcmStream() const
|
const PcmStreamPtr StreamSession::pcmStream() const
|
||||||
{
|
{
|
||||||
|
std::lock_guard<std::mutex> lock(mutex_);
|
||||||
return pcmStream_;
|
return pcmStream_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,19 +19,22 @@
|
||||||
#ifndef STREAM_SESSION_HPP
|
#ifndef STREAM_SESSION_HPP
|
||||||
#define STREAM_SESSION_HPP
|
#define STREAM_SESSION_HPP
|
||||||
|
|
||||||
#include "common/queue.h"
|
|
||||||
#include "message/message.hpp"
|
|
||||||
#include "streamreader/stream_manager.hpp"
|
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
#include <boost/asio.hpp>
|
|
||||||
#include <condition_variable>
|
#include <condition_variable>
|
||||||
#include <deque>
|
#include <deque>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
#include <mutex>
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
#include <boost/asio.hpp>
|
||||||
|
|
||||||
|
#include "common/queue.h"
|
||||||
|
#include "message/message.hpp"
|
||||||
|
#include "streamreader/stream_manager.hpp"
|
||||||
|
|
||||||
|
|
||||||
using boost::asio::ip::tcp;
|
using boost::asio::ip::tcp;
|
||||||
namespace net = boost::asio;
|
namespace net = boost::asio;
|
||||||
|
@ -159,6 +162,7 @@ protected:
|
||||||
streamreader::PcmStreamPtr pcmStream_;
|
streamreader::PcmStreamPtr pcmStream_;
|
||||||
net::strand<net::any_io_executor> strand_;
|
net::strand<net::any_io_executor> strand_;
|
||||||
std::deque<shared_const_buffer> messages_;
|
std::deque<shared_const_buffer> messages_;
|
||||||
|
mutable std::mutex mutex_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue