Bug 1384578 - Adjust the calling sequence to avoid app crash by race condition.
MozReview-Commit-ID: JKtfNYTTCjp
--- a/dom/media/hls/HLSDemuxer.cpp
+++ b/dom/media/hls/HLSDemuxer.cpp
@@ -248,24 +248,24 @@ HLSDemuxer::OnTaskQueue() const
{
return mTaskQueue->IsCurrentThreadIn();
}
HLSDemuxer::~HLSDemuxer()
{
HLS_DEBUG("HLSDemuxer", "~HLSDemuxer()");
mCallbackSupport->Detach();
- if (mJavaCallbacks) {
- HLSDemuxerCallbacksSupport::DisposeNative(mJavaCallbacks);
- mJavaCallbacks = nullptr;
- }
if (mHLSDemuxerWrapper) {
mHLSDemuxerWrapper->Destroy();
mHLSDemuxerWrapper = nullptr;
}
+ if (mJavaCallbacks) {
+ HLSDemuxerCallbacksSupport::DisposeNative(mJavaCallbacks);
+ mJavaCallbacks = nullptr;
+ }
mInitPromise.RejectIfExists(NS_ERROR_DOM_MEDIA_CANCELED, __func__);
}
HLSTrackDemuxer::HLSTrackDemuxer(HLSDemuxer* aParent,
TrackInfo::TrackType aType,
UniquePtr<TrackInfo> aTrackInfo)
: mParent(aParent)
, mType(aType)
--- a/dom/media/hls/HLSResource.cpp
+++ b/dom/media/hls/HLSResource.cpp
@@ -95,19 +95,19 @@ void HLSResource::Resume()
HLSResource::~HLSResource()
{
HLS_DEBUG("HLSResource", "~HLSResource()");
if (mCallbackSupport) {
mCallbackSupport->Detach();
mCallbackSupport = nullptr;
}
- if (mJavaCallbacks) {
- HLSResourceCallbacksSupport::DisposeNative(mJavaCallbacks);
- mJavaCallbacks = nullptr;
- }
if (mHLSResourceWrapper) {
mHLSResourceWrapper->Destroy();
mHLSResourceWrapper = nullptr;
}
+ if (mJavaCallbacks) {
+ HLSResourceCallbacksSupport::DisposeNative(mJavaCallbacks);
+ mJavaCallbacks = nullptr;
+ }
}
} // namespace mozilla