[sigslot] - Remove sigslot from MediaStreamObserver.

Bug: webrtc:11943
Change-Id: Icf91ce850913c26e45dbca1940cafd600c235ad4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/227340
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34632}
This commit is contained in:
Mirko Bonadei
2021-08-02 10:56:33 +02:00
committed by WebRTC LUCI CQ
parent 57c2bbd661
commit 9ff450d0c4
5 changed files with 88 additions and 43 deletions

View File

@ -25,8 +25,27 @@ JavaMediaStream::JavaMediaStream(
: j_media_stream_(
env,
Java_MediaStream_Constructor(env,
jlongFromPointer(media_stream.get()))),
observer_(std::make_unique<MediaStreamObserver>(media_stream)) {
jlongFromPointer(media_stream.get()))) {
// Create an observer to update the Java stream when the native stream's set
// of tracks changes.
observer_.reset(new MediaStreamObserver(
media_stream,
[this](AudioTrackInterface* audio_track,
MediaStreamInterface* media_stream) {
OnAudioTrackAddedToStream(audio_track, media_stream);
},
[this](AudioTrackInterface* audio_track,
MediaStreamInterface* media_stream) {
OnAudioTrackRemovedFromStream(audio_track, media_stream);
},
[this](VideoTrackInterface* video_track,
MediaStreamInterface* media_stream) {
OnVideoTrackAddedToStream(video_track, media_stream);
},
[this](VideoTrackInterface* video_track,
MediaStreamInterface* media_stream) {
OnVideoTrackRemovedFromStream(video_track, media_stream);
}));
for (rtc::scoped_refptr<AudioTrackInterface> track :
media_stream->GetAudioTracks()) {
Java_MediaStream_addNativeAudioTrack(env, j_media_stream_,
@ -37,18 +56,6 @@ JavaMediaStream::JavaMediaStream(
Java_MediaStream_addNativeVideoTrack(env, j_media_stream_,
jlongFromPointer(track.release()));
}
// Create an observer to update the Java stream when the native stream's set
// of tracks changes.
observer_->SignalAudioTrackRemoved.connect(
this, &JavaMediaStream::OnAudioTrackRemovedFromStream);
observer_->SignalVideoTrackRemoved.connect(
this, &JavaMediaStream::OnVideoTrackRemovedFromStream);
observer_->SignalAudioTrackAdded.connect(
this, &JavaMediaStream::OnAudioTrackAddedToStream);
observer_->SignalVideoTrackAdded.connect(
this, &JavaMediaStream::OnVideoTrackAddedToStream);
// `j_media_stream` holds one reference. Corresponding Release() is in
// MediaStream_free, triggered by MediaStream.dispose().
media_stream.release();

View File

@ -21,12 +21,12 @@
namespace webrtc {
namespace jni {
class JavaMediaStream : public sigslot::has_slots<> {
class JavaMediaStream {
public:
explicit JavaMediaStream(
JNIEnv* env,
rtc::scoped_refptr<MediaStreamInterface> media_stream);
~JavaMediaStream() override;
~JavaMediaStream();
const ScopedJavaGlobalRef<jobject>& j_media_stream() {
return j_media_stream_;