Bug 1304632 - Part 1: Assert main thread in ImageValue destructor. r?bholley draft
authorCameron McCormack <cam@mcc.id.au>
Tue, 16 Aug 2016 15:55:39 +0800
changeset 416442 00e9a0bc27dae6ad94721771dd5ab1149f7493fb
parent 416438 d07acc0b279f23d10b8272a564a726d09aac8c76
child 416443 533d9170ccbe92f59161ab3dea132496fe68b54e
push id30150
push userbmo:cam@mcc.id.au
push dateThu, 22 Sep 2016 07:18:57 +0000
reviewersbholley
bugs1304632
milestone51.0a1
Bug 1304632 - Part 1: Assert main thread in ImageValue destructor. r?bholley The css::ImageValue destructor does things only safe from the main thread. Let's assert so that we don't accidentally start releasing them from style worker threads during restyle. MozReview-Commit-ID: DTkFcx185L
layout/style/nsCSSValue.cpp
--- a/layout/style/nsCSSValue.cpp
+++ b/layout/style/nsCSSValue.cpp
@@ -2756,16 +2756,18 @@ css::ImageValue::ImageValue(nsIURI* aURI
 
   if (loadingDoc != aDocument) {
     aDocument->StyleImageLoader()->MaybeRegisterCSSImage(this);
   }
 }
 
 css::ImageValue::~ImageValue()
 {
+  MOZ_ASSERT(NS_IsMainThread());
+
   for (auto iter = mRequests.Iter(); !iter.Done(); iter.Next()) {
     nsIDocument* doc = iter.Key();
     RefPtr<imgRequestProxy>& proxy = iter.Data();
 
     if (doc) {
       doc->StyleImageLoader()->DeregisterCSSImage(this);
     }