Bug 1355048: P6. Don't use unnecessary reentrant monitor. r?jesup
The methods using it aren't re-entrant. A mutex will do.
MozReview-Commit-ID: TIAL7Itp5A
--- a/media/webrtc/signaling/src/mediapipeline/MediaPipeline.cpp
+++ b/media/webrtc/signaling/src/mediapipeline/MediaPipeline.cpp
@@ -2143,32 +2143,30 @@ nsresult MediaPipelineReceiveAudio::Init
void MediaPipelineReceiveAudio::SetPrincipalHandle_m(const PrincipalHandle& principal_handle)
{
listener_->SetPrincipalHandle_m(principal_handle);
}
class MediaPipelineReceiveVideo::PipelineListener
: public GenericReceiveListener {
public:
- PipelineListener(SourceMediaStream * source, TrackID track_id)
- : GenericReceiveListener(source, track_id),
- width_(0),
- height_(0),
- image_container_(),
- image_(),
- monitor_("Video PipelineListener")
+ PipelineListener(SourceMediaStream* source, TrackID track_id)
+ : GenericReceiveListener(source, track_id)
+ , image_container_()
+ , image_()
+ , mutex_("Video PipelineListener")
{
image_container_ =
LayerManager::CreateImageContainer(ImageContainer::ASYNCHRONOUS);
}
// Implement MediaStreamListener
void NotifyPull(MediaStreamGraph* graph, StreamTime desired_time) override
{
- ReentrantMonitorAutoEnter enter(monitor_);
+ MutexAutoLock lock(mutex_);
RefPtr<Image> image = image_;
StreamTime delta = desired_time - played_ticks_;
// Don't append if we've already provided a frame that supposedly
// goes past the current aDesiredTime Doing so means a negative
// delta and thus messes up handling of the graph
if (delta > 0) {
@@ -2184,17 +2182,17 @@ public:
}
}
}
// Accessors for external writes from the renderer
void FrameSizeChange(unsigned int width,
unsigned int height,
unsigned int number_of_streams) {
- ReentrantMonitorAutoEnter enter(monitor_);
+ MutexAutoLock enter(mutex_);
width_ = width;
height_ = height;
}
void RenderVideoFrame(const webrtc::VideoFrameBuffer& buffer,
uint32_t time_stamp,
int64_t render_time)
@@ -2236,29 +2234,29 @@ public:
yuvData.mPicSize = IntSize(width_, height_);
yuvData.mStereoMode = StereoMode::MONO;
if (!yuvImage->CopyData(yuvData)) {
MOZ_ASSERT(false);
return;
}
- ReentrantMonitorAutoEnter enter(monitor_);
+ MutexAutoLock lock(mutex_);
image_ = yuvImage;
}
private:
int width_;
int height_;
RefPtr<layers::ImageContainer> image_container_;
RefPtr<layers::Image> image_;
- mozilla::ReentrantMonitor monitor_; // Monitor for processing WebRTC frames.
- // Protects image_ against:
- // - Writing from the GIPS thread
- // - Reading from the MSG thread
+ Mutex mutex_; // Mutex for processing WebRTC frames.
+ // Protects image_ against:
+ // - Writing from the GIPS thread
+ // - Reading from the MSG thread
};
class MediaPipelineReceiveVideo::PipelineRenderer : public mozilla::VideoRenderer
{
public:
explicit PipelineRenderer(MediaPipelineReceiveVideo *pipeline) :
pipeline_(pipeline) {}