From 055d9ac4e6a20478dfbd728c77cd26cec2fe1019 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Lucas=20Golini?= Date: Mon, 18 Nov 2019 12:15:33 -0300 Subject: [PATCH] UINodeDrawable bug fix. --HG-- branch : dev --- src/eepp/ui/uinodedrawable.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/eepp/ui/uinodedrawable.cpp b/src/eepp/ui/uinodedrawable.cpp index 5c2c284d9..c3b156d17 100644 --- a/src/eepp/ui/uinodedrawable.cpp +++ b/src/eepp/ui/uinodedrawable.cpp @@ -194,6 +194,10 @@ UINodeDrawable::LayerDrawable::LayerDrawable( UINodeDrawable * container ) : {} UINodeDrawable::LayerDrawable::~LayerDrawable() { + if ( NULL != mDrawable && 0 != mResourceChangeCbId && mDrawable->isDrawableResource() ) { + reinterpret_cast( mDrawable )->popResourceChangeCallback( mResourceChangeCbId ); + } + if ( mOwnsDrawable ) eeSAFE_DELETE( mDrawable ); } @@ -260,8 +264,13 @@ void UINodeDrawable::LayerDrawable::setDrawable( Drawable* drawable, const bool& mOwnsDrawable = ownIt; if ( mDrawable->isDrawableResource() ) { - mResourceChangeCbId = reinterpret_cast( mDrawable )->pushResourceChangeCallback( [&] ( DrawableResource::Event, DrawableResource* ) { + mResourceChangeCbId = reinterpret_cast( mDrawable )->pushResourceChangeCallback( [&] ( DrawableResource::Event event, DrawableResource* ) { mNeedsUpdate = true; + if ( event == DrawableResource::Event::Unload ) { + mResourceChangeCbId = 0; + mDrawable = NULL; + mOwnsDrawable = false; + } } ); } }