mirror of
https://github.com/qTox/qTox.git
synced 2024-03-22 14:00:36 +08:00
fix(coreav): change some lock to write locks
I missed some cases where data was written.
(cherry picked from commit dfcfb7d5e0
)
This commit is contained in:
parent
e340688b94
commit
26fcea0639
|
@ -365,7 +365,7 @@ bool CoreAV::sendCallAudio(uint32_t callId, const int16_t* pcm, size_t samples,
|
|||
|
||||
void CoreAV::sendCallVideo(uint32_t callId, std::shared_ptr<VideoFrame> vframe)
|
||||
{
|
||||
QReadLocker locker{&callsLock};
|
||||
QWriteLocker locker{&callsLock};
|
||||
|
||||
// We might be running in the FFmpeg thread and holding the CameraSource lock
|
||||
// So be careful not to deadlock with anything while toxav locks in toxav_video_send_frame
|
||||
|
@ -420,7 +420,7 @@ void CoreAV::sendCallVideo(uint32_t callId, std::shared_ptr<VideoFrame> vframe)
|
|||
*/
|
||||
void CoreAV::toggleMuteCallInput(const Friend* f)
|
||||
{
|
||||
QReadLocker locker{&callsLock};
|
||||
QWriteLocker locker{&callsLock};
|
||||
|
||||
auto it = calls.find(f->getId());
|
||||
if (f && (it != calls.end())) {
|
||||
|
@ -435,7 +435,7 @@ void CoreAV::toggleMuteCallInput(const Friend* f)
|
|||
*/
|
||||
void CoreAV::toggleMuteCallOutput(const Friend* f)
|
||||
{
|
||||
QReadLocker locker{&callsLock};
|
||||
QWriteLocker locker{&callsLock};
|
||||
|
||||
auto it = calls.find(f->getId());
|
||||
if (f && (it != calls.end())) {
|
||||
|
@ -503,7 +503,7 @@ void CoreAV::groupCallCallback(void* tox, uint32_t group, uint32_t peer, const i
|
|||
*/
|
||||
void CoreAV::invalidateGroupCallPeerSource(int group, ToxPk peerPk)
|
||||
{
|
||||
QReadLocker locker{&callsLock};
|
||||
QWriteLocker locker{&callsLock};
|
||||
|
||||
auto it = groupCalls.find(group);
|
||||
if (it == groupCalls.end()) {
|
||||
|
@ -595,7 +595,7 @@ bool CoreAV::sendGroupCallAudio(int groupId, const int16_t* pcm, size_t samples,
|
|||
*/
|
||||
void CoreAV::muteCallInput(const Group* g, bool mute)
|
||||
{
|
||||
QReadLocker locker{&callsLock};
|
||||
QWriteLocker locker{&callsLock};
|
||||
|
||||
auto it = groupCalls.find(g->getId());
|
||||
if (g && (it != groupCalls.end())) {
|
||||
|
@ -610,7 +610,7 @@ void CoreAV::muteCallInput(const Group* g, bool mute)
|
|||
*/
|
||||
void CoreAV::muteCallOutput(const Group* g, bool mute)
|
||||
{
|
||||
QReadLocker locker{&callsLock};
|
||||
QWriteLocker locker{&callsLock};
|
||||
|
||||
auto it = groupCalls.find(g->getId());
|
||||
if (g && (it != groupCalls.end())) {
|
||||
|
@ -694,7 +694,7 @@ bool CoreAV::isCallOutputMuted(const Friend* f) const
|
|||
*/
|
||||
void CoreAV::sendNoVideo()
|
||||
{
|
||||
QReadLocker locker{&callsLock};
|
||||
QWriteLocker locker{&callsLock};
|
||||
|
||||
// We don't change the audio bitrate, but we signal that we're not sending video anymore
|
||||
qDebug() << "CoreAV: Signaling end of video sending";
|
||||
|
|
|
@ -113,7 +113,7 @@ private:
|
|||
}
|
||||
};
|
||||
|
||||
explicit CoreAV(std::unique_ptr<ToxAV, ToxAVDeleter> tox, QMutex &toxCoreLock);
|
||||
CoreAV(std::unique_ptr<ToxAV, ToxAVDeleter> tox, QMutex &toxCoreLock);
|
||||
void connectCallbacks(ToxAV& toxav);
|
||||
|
||||
void process();
|
||||
|
@ -148,7 +148,7 @@ private:
|
|||
*/
|
||||
std::map<int, ToxGroupCallPtr> groupCalls;
|
||||
|
||||
// protect 'calls' and 'groupCalls' from being modified by ToxAV and Tox threads
|
||||
// protect 'calls' and 'groupCalls'
|
||||
mutable QReadWriteLock callsLock{QReadWriteLock::Recursive};
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue
Block a user