Bug 913821 - Fix the TextureHost linked list. r=sotaro
authorNicolas Silva <nical@mozilla.com>
Tue, 10 Sep 2013 13:41:15 +0200
changeset 146409 19918a47a06f299b8a47f983db0eedde1d535c5e
parent 146408 255093e2f430a62554a139327f479c5e9cbc9ce4
child 146410 ab0a4b4b9b1fd684cc38fe144782b5adb73a9985
push id25260
push userryanvm@gmail.com
push dateWed, 11 Sep 2013 00:29:30 +0000
treeherdermozilla-central@f73bed2856a8 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerssotaro
bugs913821
milestone26.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 913821 - Fix the TextureHost linked list. r=sotaro
gfx/layers/composite/CompositableHost.cpp
--- a/gfx/layers/composite/CompositableHost.cpp
+++ b/gfx/layers/composite/CompositableHost.cpp
@@ -55,21 +55,28 @@ CompositableHost::AddTextureHost(Texture
   RefPtr<TextureHost> second = mFirstTexture;
   mFirstTexture = aTexture;
   aTexture->SetNextSibling(second);
 }
 
 void
 CompositableHost::RemoveTextureHost(uint64_t aTextureID)
 {
+  if (mFirstTexture && mFirstTexture->GetID() == aTextureID) {
+    RefPtr<TextureHost> toRemove = mFirstTexture;
+    mFirstTexture = mFirstTexture->GetNextSibling();
+    toRemove->SetNextSibling(nullptr);
+  }
   RefPtr<TextureHost> it = mFirstTexture;
   while (it) {
     if (it->GetNextSibling() &&
         it->GetNextSibling()->GetID() == aTextureID) {
+      RefPtr<TextureHost> toRemove = it->GetNextSibling();
       it->SetNextSibling(it->GetNextSibling()->GetNextSibling());
+      toRemove->SetNextSibling(nullptr);
     }
     it = it->GetNextSibling();
   }
 }
 
 TextureHost*
 CompositableHost::GetTextureHost(uint64_t aTextureID)
 {