Skip to content
Snippets Groups Projects
Commit 6de733c5 authored by Adrien Béraud's avatar Adrien Béraud
Browse files

sinkclient: add lock

Change-Id: I7b7b67008bd1b3df9ec6d17c831acca753ba5662
parent 7b0a8ffc
No related branches found
No related tags found
No related merge requests found
......@@ -303,7 +303,9 @@ JNIEXPORT void JNICALL Java_net_jami_daemon_JamiServiceJNI_setNativeWindowGeomet
void AndroidDisplayCb(ANativeWindow *window, std::unique_ptr<DRing::FrameBuffer> frame)
{
std::lock_guard<std::mutex> guard(windows_mutex);
std::unique_lock<std::mutex> guard(windows_mutex, std::defer_lock);
if (!guard.try_lock())
return;
try {
auto& i = windows.at(window);
ANativeWindow_Buffer buffer;
......
......@@ -435,6 +435,7 @@ SinkClient::update(Observable<std::shared_ptr<MediaFrame>>* /*obs*/,
#if HAVE_SHM
shm_->renderFrame(*frame);
#endif
std::lock_guard<std::mutex> lock(mtx_);
if (target_.pull) {
VideoFrame dst;
width = frame->width();
......
......@@ -76,7 +76,10 @@ public:
void setFrameSize(int width, int height);
void setFramePosition(int x, int y);
void registerTarget(const DRing::SinkTarget& target) noexcept { target_ = target; }
void registerTarget(const DRing::SinkTarget& target) noexcept {
std::lock_guard<std::mutex> lock(mtx_);
target_ = target;
}
void registerAVTarget(const DRing::AVSinkTarget& target) noexcept { avTarget_ = target; }
private:
......@@ -93,6 +96,7 @@ private:
DRing::AVSinkTarget avTarget_;
std::unique_ptr<VideoScaler> scaler_;
std::unique_ptr<MediaFilter> filter_;
std::mutex mtx_;
void setRotation(int rotation);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment