X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fnpatch-loader.cpp;h=2550001067b70ffeb87d02d2465192ad59182369;hp=2e216f339c6d5e357d8558179f872cbf7cb18d85;hb=f27c332dcf251d50ddfe3b2ab15ec2eaff5296b1;hpb=4593cc619ab0739fc8586c0c752209c555b0c8e3 diff --git a/dali-toolkit/internal/visuals/npatch-loader.cpp b/dali-toolkit/internal/visuals/npatch-loader.cpp index 2e216f3..2550001 100644 --- a/dali-toolkit/internal/visuals/npatch-loader.cpp +++ b/dali-toolkit/internal/visuals/npatch-loader.cpp @@ -110,9 +110,9 @@ std::size_t NPatchLoader::Load( TextureManager& textureManager, TextureUploadObs { return index + 1u; // valid indices are from 1 onwards } + mCache[ index ]->observerList.PushBack( textureObserver ); data = mCache[ index ]; - cachedIndex = index + 1u; // valid indices are from 1 onwards - break; + return index + 1u; // valid indices are from 1 onwards } else { @@ -176,14 +176,25 @@ std::size_t NPatchLoader::Load( TextureManager& textureManager, TextureUploadObs return cachedIndex; } -void NPatchLoader::SetNPatchData( std::size_t id, Devel::PixelBuffer& pixelBuffer ) +void NPatchLoader::SetNPatchData( bool loadSuccess, std::size_t id, Devel::PixelBuffer& pixelBuffer, const Internal::VisualUrl& url, bool preMultiplied ) { Data* data; data = mCache[ id - 1u ]; - if( !data->loadCompleted ) + // To prevent recursion. + // data->loadCompleted will be set true in the NPatchBuffer::SetLoadedNPatchData when the first observer called this method. + if( data->loadCompleted ) { - NPatchBuffer::SetLoadedNPatchData( data, pixelBuffer ); + return; + } + + NPatchBuffer::SetLoadedNPatchData( data, pixelBuffer ); + + while( data->observerList.Count() ) + { + TextureUploadObserver* observer = data->observerList[0]; + observer->LoadComplete( loadSuccess, Devel::PixelBuffer(), url, preMultiplied ); + data->observerList.Erase( data->observerList.begin() ); } }