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