Bug 1383212 - Store WebRenderLayerManager by RefPtr instead of raw pointer. r=kats draft
authorMorris Tseng <mtseng@mozilla.com>
Tue, 25 Jul 2017 16:04:40 +0800
changeset 615025 9b3a8e8076c0f0808e65a494e858f6ba384dcccd
parent 614808 dcfb58fcb6dd8f6474eed6520ba6272dedded393
child 639054 1f086459f98df6b3ebb01686d075450acc044124
push id70217
push userbmo:mtseng@mozilla.com
push dateTue, 25 Jul 2017 09:46:25 +0000
reviewerskats
bugs1383212
milestone56.0a1
Bug 1383212 - Store WebRenderLayerManager by RefPtr instead of raw pointer. r=kats MozReview-Commit-ID: ArzdU60bIOE
gfx/layers/wr/WebRenderUserData.cpp
gfx/layers/wr/WebRenderUserData.h
--- a/gfx/layers/wr/WebRenderUserData.cpp
+++ b/gfx/layers/wr/WebRenderUserData.cpp
@@ -4,16 +4,25 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "WebRenderUserData.h"
 #include "nsDisplayListInvalidation.h"
 
 namespace mozilla {
 namespace layers {
 
+WebRenderUserData::WebRenderUserData(WebRenderLayerManager* aWRManager)
+  : mWRManager(aWRManager)
+{
+}
+
+WebRenderUserData::~WebRenderUserData()
+{
+}
+
 WebRenderBridgeChild*
 WebRenderUserData::WrBridge() const
 {
   return mWRManager->WrBridge();
 }
 
 WebRenderImageData::WebRenderImageData(WebRenderLayerManager* aWRManager)
   : WebRenderUserData(aWRManager)
--- a/gfx/layers/wr/WebRenderUserData.h
+++ b/gfx/layers/wr/WebRenderUserData.h
@@ -20,36 +20,34 @@ class WebRenderBridgeChild;
 class WebRenderImageData;
 class WebRenderLayerManager;
 
 class WebRenderUserData
 {
 public:
   NS_INLINE_DECL_REFCOUNTING(WebRenderUserData)
 
-  explicit WebRenderUserData(WebRenderLayerManager* aWRManager)
-    : mWRManager(aWRManager)
-  { }
+  explicit WebRenderUserData(WebRenderLayerManager* aWRManager);
 
   virtual WebRenderImageData* AsImageData() { return nullptr; }
 
   enum class UserDataType {
     eImage,
     eFallback,
     eAnimation,
   };
 
   virtual UserDataType GetType() = 0;
 
 protected:
-  virtual ~WebRenderUserData() {}
+  virtual ~WebRenderUserData();
 
   WebRenderBridgeChild* WrBridge() const;
 
-  WebRenderLayerManager* mWRManager;
+  RefPtr<WebRenderLayerManager> mWRManager;
 };
 
 class WebRenderImageData : public WebRenderUserData
 {
 public:
   explicit WebRenderImageData(WebRenderLayerManager* aWRManager);
   virtual ~WebRenderImageData();