diff options
author | Matt A. Tobin <email@mattatobin.com> | 2019-05-29 16:01:50 -0400 |
---|---|---|
committer | Matt A. Tobin <email@mattatobin.com> | 2019-05-29 16:01:50 -0400 |
commit | 363bfeb2c06e5f57136ebdab8da1ebeba0591520 (patch) | |
tree | 3fbaf59efc6807c48a69fabe229be712c0d25af6 /gfx/layers | |
parent | d197e65f448d0dfbb5de7ff5d09a1aceaf7620f6 (diff) | |
parent | 23115528859e518813214b35c36232da0c1c7b5f (diff) | |
download | UXP-363bfeb2c06e5f57136ebdab8da1ebeba0591520.tar UXP-363bfeb2c06e5f57136ebdab8da1ebeba0591520.tar.gz UXP-363bfeb2c06e5f57136ebdab8da1ebeba0591520.tar.lz UXP-363bfeb2c06e5f57136ebdab8da1ebeba0591520.tar.xz UXP-363bfeb2c06e5f57136ebdab8da1ebeba0591520.zip |
Merge branch 'master' of https://github.com/MoonchildProductions/UXP
Diffstat (limited to 'gfx/layers')
-rw-r--r-- | gfx/layers/composite/CanvasLayerComposite.cpp | 6 | ||||
-rw-r--r-- | gfx/layers/composite/ImageLayerComposite.cpp | 9 | ||||
-rw-r--r-- | gfx/layers/composite/PaintedLayerComposite.cpp | 9 |
3 files changed, 19 insertions, 5 deletions
diff --git a/gfx/layers/composite/CanvasLayerComposite.cpp b/gfx/layers/composite/CanvasLayerComposite.cpp index 3c8299e05..86f25b1ee 100644 --- a/gfx/layers/composite/CanvasLayerComposite.cpp +++ b/gfx/layers/composite/CanvasLayerComposite.cpp @@ -43,9 +43,13 @@ bool CanvasLayerComposite::SetCompositableHost(CompositableHost* aHost) { switch (aHost->GetType()) { - case CompositableType::IMAGE: + case CompositableType::IMAGE: { + if (mCompositableHost && aHost != mCompositableHost) { + mCompositableHost->Detach(this); + } mCompositableHost = aHost; return true; + } default: return false; } diff --git a/gfx/layers/composite/ImageLayerComposite.cpp b/gfx/layers/composite/ImageLayerComposite.cpp index bac9f3790..6867aaa22 100644 --- a/gfx/layers/composite/ImageLayerComposite.cpp +++ b/gfx/layers/composite/ImageLayerComposite.cpp @@ -50,9 +50,14 @@ bool ImageLayerComposite::SetCompositableHost(CompositableHost* aHost) { switch (aHost->GetType()) { - case CompositableType::IMAGE: - mImageHost = static_cast<ImageHost*>(aHost); + case CompositableType::IMAGE: { + ImageHost* newImageHost = static_cast<ImageHost*>(aHost); + if (mImageHost && newImageHost != mImageHost) { + mImageHost->Detach(this); + } + mImageHost = newImageHost; return true; + } default: return false; } diff --git a/gfx/layers/composite/PaintedLayerComposite.cpp b/gfx/layers/composite/PaintedLayerComposite.cpp index b58f5d690..232cc4ef4 100644 --- a/gfx/layers/composite/PaintedLayerComposite.cpp +++ b/gfx/layers/composite/PaintedLayerComposite.cpp @@ -49,9 +49,14 @@ PaintedLayerComposite::SetCompositableHost(CompositableHost* aHost) switch (aHost->GetType()) { case CompositableType::CONTENT_TILED: case CompositableType::CONTENT_SINGLE: - case CompositableType::CONTENT_DOUBLE: - mBuffer = static_cast<ContentHost*>(aHost); + case CompositableType::CONTENT_DOUBLE: { + ContentHost* newBuffer = static_cast<ContentHost*>(aHost); + if (mBuffer && newBuffer != mBuffer) { + mBuffer->Detach(this); + } + mBuffer = newBuffer; return true; + } default: return false; } |