Bug 1434538 - Handle kAllocated in UpdateSingleSource. r?jib
This will make us properly process the constraints of an Allocate()
happening just after another Allocate().
MozReview-Commit-ID: KHZfuKmJZSG
--- a/dom/media/webrtc/MediaEngineRemoteVideoSource.cpp
+++ b/dom/media/webrtc/MediaEngineRemoteVideoSource.cpp
@@ -312,16 +312,17 @@ MediaEngineRemoteVideoSource::UpdateSing
aHandle->mPrincipalInfo)) {
return NS_ERROR_FAILURE;
}
mState = kAllocated;
SetLastCapability(mCapability);
LOG(("Video device %d allocated", mCaptureIndex));
break;
+ case kAllocated:
case kStarted:
{
size_t index = mHandleIds.NoIndex;
if (aHandle) {
mHandleId = aHandle->mId;
index = mHandleIds.IndexOf(mHandleId);
}
@@ -346,23 +347,25 @@ MediaEngineRemoteVideoSource::UpdateSing
if (!ChooseCapability(aNetConstraints, aPrefs, aDeviceId, mCapability,
kFeasibility)) {
*aOutBadConstraint = FindBadConstraint(aNetConstraints, *this, aDeviceId);
return NS_ERROR_FAILURE;
}
LOG(("ChooseCapability(kFeasibility) for mCapability --"));
if (mCapability != mLastCapability) {
- camera::GetChildAndCall(&camera::CamerasChild::StopCapture,
- mCapEngine, mCaptureIndex);
- if (camera::GetChildAndCall(&camera::CamerasChild::StartCapture,
- mCapEngine, mCaptureIndex, mCapability,
- this)) {
- LOG(("StartCapture failed"));
- return NS_ERROR_FAILURE;
+ if (mState == kStarted) {
+ camera::GetChildAndCall(&camera::CamerasChild::StopCapture,
+ mCapEngine, mCaptureIndex);
+ if (camera::GetChildAndCall(&camera::CamerasChild::StartCapture,
+ mCapEngine, mCaptureIndex, mCapability,
+ this)) {
+ LOG(("StartCapture failed"));
+ return NS_ERROR_FAILURE;
+ }
}
SetLastCapability(mCapability);
}
break;
}
default:
LOG(("Video device %d in ignored state %d", mCaptureIndex, mState));