diff --git a/src/plane.cpp b/src/plane.cpp index 11fd261..d420df9 100644 --- a/src/plane.cpp +++ b/src/plane.cpp @@ -105,10 +105,12 @@ void Plane::setBitmap(Bitmap *value) { GUARD_DISPOSED; - if (value) - value->ensureNonMega(); - p->bitmap = value; + + if (!value) + return; + + value->ensureNonMega(); } void Plane::setOX(int value) diff --git a/src/sprite.cpp b/src/sprite.cpp index 59ad1db..1581333 100644 --- a/src/sprite.cpp +++ b/src/sprite.cpp @@ -152,10 +152,13 @@ void Sprite::setBitmap(Bitmap *bitmap) if (p->bitmap == bitmap) return; - if (bitmap) - bitmap->ensureNonMega(); - p->bitmap = bitmap; + + if (!bitmap) + return; + + bitmap->ensureNonMega(); + *p->srcRect = bitmap->rect(); p->onSrcRectChange(); p->quad.setPosRect(p->srcRect->toFloatRect()); diff --git a/src/window.cpp b/src/window.cpp index ada0a9c..000aa65 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -717,24 +717,29 @@ void Window::setWindowskin(Bitmap *value) { GUARD_DISPOSED; - if (value) - value->ensureNonMega(); - p->windowskin = value; + + if (!value) + return; + + value->ensureNonMega(); } void Window::setContents(Bitmap *value) { GUARD_DISPOSED; - if (value) - value->ensureNonMega(); + if (p->contents == value) + return; p->contents = value; p->controlsVertDirty = true; - if (value) - p->contentsQuad.setTexPosRect(value->rect(), value->rect()); + if (!value) + return; + + value->ensureNonMega(); + p->contentsQuad.setTexPosRect(value->rect(), value->rect()); } void Window::setStretch(bool value)