summaryrefslogtreecommitdiffstats
path: root/dom/canvas/ImageBitmap.cpp
diff options
context:
space:
mode:
authorMoonchild <mcwerewolf@gmail.com>2018-07-05 22:22:47 +0200
committerGitHub <noreply@github.com>2018-07-05 22:22:47 +0200
commitc3fe7f59c8b6c1a23f5ae85f0697470fad560d68 (patch)
tree93fb783c7d463225be63f76102bddec19965bc93 /dom/canvas/ImageBitmap.cpp
parent06ccf0f73ade5b436d2e7e00f81db7aebf7960cf (diff)
parenta80267e9e88b3dcebf7f8f1f6f10931a99ddf2ca (diff)
downloadUXP-c3fe7f59c8b6c1a23f5ae85f0697470fad560d68.tar
UXP-c3fe7f59c8b6c1a23f5ae85f0697470fad560d68.tar.gz
UXP-c3fe7f59c8b6c1a23f5ae85f0697470fad560d68.tar.lz
UXP-c3fe7f59c8b6c1a23f5ae85f0697470fad560d68.tar.xz
UXP-c3fe7f59c8b6c1a23f5ae85f0697470fad560d68.zip
Merge pull request #597 from janekptacijarabaci/dom_workers_terminate_1
Sync event loops in workers should be created only if compatible with the worker shutdown status
Diffstat (limited to 'dom/canvas/ImageBitmap.cpp')
-rw-r--r--dom/canvas/ImageBitmap.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/dom/canvas/ImageBitmap.cpp b/dom/canvas/ImageBitmap.cpp
index 6588e0aa3..e45cdfc6f 100644
--- a/dom/canvas/ImageBitmap.cpp
+++ b/dom/canvas/ImageBitmap.cpp
@@ -950,7 +950,7 @@ ImageBitmap::CreateInternal(nsIGlobalObject* aGlobal, ImageData& aImageData,
imageSize,
aCropRect,
getter_AddRefs(data));
- task->Dispatch(aRv);
+ task->Dispatch(Terminating, aRv);
}
if (NS_WARN_IF(!data)) {
@@ -1377,10 +1377,10 @@ private:
RefPtr<DecodeBlobInMainThreadSyncTask> task =
new DecodeBlobInMainThreadSyncTask(mWorkerPrivate, *mBlob, mCropRect,
getter_AddRefs(data), sourceSize);
- task->Dispatch(rv); // This is a synchronous call.
+ task->Dispatch(Terminating, rv); // This is a synchronous call.
+ // In case the worker is terminating, this rejection can be handled.
if (NS_WARN_IF(rv.Failed())) {
- // XXXbz does this really make sense if we're shutting down? Ah, well.
mPromise->MaybeReject(rv);
return nullptr;
}
@@ -2104,7 +2104,10 @@ ImageBitmap::Create(nsIGlobalObject* aGlobal,
aFormat,
aLayout,
getter_AddRefs(data));
- task->Dispatch(aRv);
+ task->Dispatch(Terminating, aRv);
+ if (aRv.Failed()) {
+ return promise.forget();
+ }
}
if (NS_WARN_IF(!data)) {