mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-14 22:05:44 +00:00
Bug 586041. Part 2: refactor RemoveChild. r=bas
This commit is contained in:
parent
37a26c36a7
commit
3f30bb4186
@ -122,6 +122,8 @@ public:
|
||||
virtual void RemoveChild(Layer* aChild);
|
||||
|
||||
protected:
|
||||
void RemoveChildInternal(Layer* aChild);
|
||||
|
||||
BasicLayerManager* BasicManager()
|
||||
{
|
||||
return static_cast<BasicLayerManager*>(mManager);
|
||||
@ -131,12 +133,7 @@ protected:
|
||||
BasicContainerLayer::~BasicContainerLayer()
|
||||
{
|
||||
while (mFirstChild) {
|
||||
Layer* next = mFirstChild->GetNextSibling();
|
||||
mFirstChild->SetNextSibling(nsnull);
|
||||
mFirstChild->SetPrevSibling(nsnull);
|
||||
mFirstChild->SetParent(nsnull);
|
||||
NS_RELEASE(mFirstChild);
|
||||
mFirstChild = next;
|
||||
RemoveChildInternal(mFirstChild);
|
||||
}
|
||||
|
||||
MOZ_COUNT_DTOR(BasicContainerLayer);
|
||||
@ -184,6 +181,12 @@ BasicContainerLayer::RemoveChild(Layer* aChild)
|
||||
{
|
||||
NS_ASSERTION(BasicManager()->InConstruction(),
|
||||
"Can only set properties in construction phase");
|
||||
RemoveChildInternal(aChild);
|
||||
}
|
||||
|
||||
void
|
||||
BasicContainerLayer::RemoveChildInternal(Layer* aChild)
|
||||
{
|
||||
NS_ASSERTION(aChild->Manager() == Manager(),
|
||||
"Child has wrong manager");
|
||||
NS_ASSERTION(aChild->GetParent() == this,
|
||||
|
@ -50,12 +50,7 @@ ContainerLayerD3D9::ContainerLayerD3D9(LayerManagerD3D9 *aManager)
|
||||
ContainerLayerD3D9::~ContainerLayerD3D9()
|
||||
{
|
||||
while (mFirstChild) {
|
||||
Layer* next = mFirstChild->GetNextSibling();
|
||||
mFirstChild->SetNextSibling(nsnull);
|
||||
mFirstChild->SetPrevSibling(nsnull);
|
||||
mFirstChild->SetParent(nsnull);
|
||||
NS_RELEASE(mFirstChild);
|
||||
mFirstChild = next;
|
||||
RemoveChild(mFirstChild);
|
||||
}
|
||||
}
|
||||
|
||||
@ -95,11 +90,13 @@ void
|
||||
ContainerLayerD3D9::RemoveChild(Layer *aChild)
|
||||
{
|
||||
if (GetFirstChild() == aChild) {
|
||||
mFirstChild = GetFirstChild()->GetNextSibling() ?
|
||||
GetFirstChild()->GetNextSibling() : nsnull;
|
||||
mFirstChild = GetFirstChild()->GetNextSibling();
|
||||
if (mFirstChild) {
|
||||
mFirstChild->SetPrevSibling(nsnull);
|
||||
}
|
||||
aChild->SetNextSibling(nsnull);
|
||||
aChild->SetPrevSibling(nsnull);
|
||||
aChild->SetParent(nsnull);
|
||||
NS_RELEASE(aChild);
|
||||
return;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user