diff --git a/sdk/objc/native/src/objc_desktop_media_list.h b/sdk/objc/native/src/objc_desktop_media_list.h index dee605e796..1126a84356 100644 --- a/sdk/objc/native/src/objc_desktop_media_list.h +++ b/sdk/objc/native/src/objc_desktop_media_list.h @@ -78,7 +78,7 @@ class ObjCDesktopMediaList : public rtc::MessageHandler { virtual MediaSource* GetSource(int index); - virtual bool GetThumbnail(MediaSource *source); + virtual bool GetThumbnail(MediaSource *source, bool notify); protected: virtual void OnMessage(rtc::Message* msg) override; diff --git a/sdk/objc/native/src/objc_desktop_media_list.mm b/sdk/objc/native/src/objc_desktop_media_list.mm index 740b53a520..6800b748b5 100644 --- a/sdk/objc/native/src/objc_desktop_media_list.mm +++ b/sdk/objc/native/src/objc_desktop_media_list.mm @@ -91,6 +91,7 @@ if (old_source_set.find(new_sources[i].id) == old_source_set.end()) { MediaSource* source = new MediaSource(this, new_sources[i],type_); sources_.insert(sources_.begin() + i, std::shared_ptr(source)); + GetThumbnail(source, false); [objcMediaList_ mediaSourceAdded:source]; } } @@ -127,18 +128,18 @@ if(get_thumbnail) { for( auto source : sources_) { - GetThumbnail(source.get()); + GetThumbnail(source.get(), true); } } return sources_.size(); } -bool ObjCDesktopMediaList::GetThumbnail(MediaSource *source) { +bool ObjCDesktopMediaList::GetThumbnail(MediaSource *source, bool notify) { callback_->SetCallback([&](webrtc::DesktopCapturer::Result result, std::unique_ptr frame) { auto old_thumbnail = source->thumbnail(); source->SaveCaptureResult(result, std::move(frame)); - if(old_thumbnail.size() != source->thumbnail().size()) { + if(old_thumbnail.size() != source->thumbnail().size() && notify) { [objcMediaList_ mediaSourceThumbnailChanged:source]; } }); @@ -158,7 +159,7 @@ } bool MediaSource::UpdateThumbnail() { - return mediaList_->GetThumbnail(this); + return mediaList_->GetThumbnail(this, true); } void MediaSource::SaveCaptureResult(webrtc::DesktopCapturer::Result result,