Bug 1648159 - Remove unnecessary redirection of promises when sink changes. r=jya

At the end of `HTMLMediaElement::SetSrcMediaStreamSink` a redirection of MozPromises, from `GenericPromise::AllPromiseType` to `GenericPromise` is taking place. However, this is not necessary since this is an internal method and the returned value of the promise is not useful. Thus the `GenericPromise::AllPromiseType` can be returned directly and avoid the extra thread dispatch.

Differential Revision: https://phabricator.services.mozilla.com/D80908
This commit is contained in:
Alex Chronopoulos
2020-06-25 14:18:59 +00:00
parent b4fba6d05a
commit bf5059a6bc
2 changed files with 10 additions and 17 deletions

View File

@@ -7692,8 +7692,8 @@ already_AddRefed<Promise> HTMLMediaElement::SetSinkId(const nsAString& aSinkId,
RefPtr<SinkInfoPromise> p =
self->SetSrcMediaStreamSink(aInfo)->Then(
self->mAbstractMainThread, __func__,
[aInfo](
const GenericPromise::ResolveOrRejectValue& aValue) {
[aInfo](const GenericPromise::AllPromiseType::
ResolveOrRejectValue& aValue) {
if (aValue.IsResolve()) {
return SinkInfoPromise::CreateAndResolve(aInfo,
__func__);
@@ -7739,7 +7739,7 @@ already_AddRefed<Promise> HTMLMediaElement::SetSinkId(const nsAString& aSinkId,
return promise.forget();
}
RefPtr<GenericPromise> HTMLMediaElement::SetSrcMediaStreamSink(
RefPtr<GenericPromise::AllPromiseType> HTMLMediaElement::SetSrcMediaStreamSink(
AudioDeviceInfo* aSink) {
MOZ_ASSERT(mSrcStream);
nsTArray<RefPtr<AudioStreamTrack>> audioTracks;
@@ -7748,7 +7748,8 @@ RefPtr<GenericPromise> HTMLMediaElement::SetSrcMediaStreamSink(
// Save it for later. At the moment the element does not contain any audio
// track. Nevertheless, the requested sink-id is saved to be used when the
// first audio track is available.
return GenericPromise::CreateAndResolve(true, __func__);
return GenericPromise::AllPromiseType::CreateAndResolve(nsTArray<bool>(),
__func__);
}
nsTArray<RefPtr<GenericPromise>> promises;
@@ -7768,20 +7769,11 @@ RefPtr<GenericPromise> HTMLMediaElement::SetSrcMediaStreamSink(
if (!promises.Length()) {
// Not active track, save it for later
return GenericPromise::CreateAndResolve(true, __func__);
return GenericPromise::AllPromiseType::CreateAndResolve(nsTArray<bool>(),
__func__);
}
RefPtr<GenericPromise> p =
GenericPromise::All(GetCurrentSerialEventTarget(), promises)
->Then(
GetCurrentSerialEventTarget(), __func__,
[](const nsTArray<bool>&) {
return GenericPromise::CreateAndResolve(true, __func__);
},
[](nsresult rv) {
return GenericPromise::CreateAndReject(rv, __func__);
});
return p;
return GenericPromise::All(GetCurrentSerialEventTarget(), promises);
}
void HTMLMediaElement::NotifyTextTrackModeChanged() {