X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fnpatch-data.cpp;h=cbc038aed6a0c78508c95725b246b337ecb3ea8c;hp=45cb99f5a4fa418d2bb5c7ad147dde423fec7da1;hb=2580d75061499528ff05d00e0e1d5907998900ac;hpb=2ca1c3856ce848a94f54444f1014a820e91ee207 diff --git a/dali-toolkit/internal/visuals/npatch-data.cpp b/dali-toolkit/internal/visuals/npatch-data.cpp index 45cb99f..cbc038a 100644 --- a/dali-toolkit/internal/visuals/npatch-data.cpp +++ b/dali-toolkit/internal/visuals/npatch-data.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Samsung Electronics Co., Ltd. + * Copyright (c) 2022 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -38,7 +38,7 @@ NPatchData::NPatchData() mCroppedWidth(0), mCroppedHeight(0), mBorder(0, 0, 0, 0), - mLoadingState(LoadingState::LOADING), + mLoadingState(LoadingState::NOT_STARTED), mPreMultiplyOnLoad(false), mRenderingMap{nullptr} { @@ -85,12 +85,12 @@ uint32_t NPatchData::GetObserverCount() const return mObserverList.Count(); } -void NPatchData::SetUrl(const std::string url) +void NPatchData::SetUrl(const VisualUrl& url) { mUrl = url; } -std::string NPatchData::GetUrl() const +VisualUrl NPatchData::GetUrl() const { return mUrl; } @@ -224,22 +224,49 @@ void NPatchData::SetLoadedNPatchData(Devel::PixelBuffer& pixelBuffer, bool preMu mLoadingState = LoadingState::LOAD_COMPLETE; } -void NPatchData::LoadComplete(bool loadSuccess, Devel::PixelBuffer pixelBuffer, const VisualUrl& url, bool preMultiplied) +void NPatchData::NotifyObserver(TextureUploadObserver* observer, const bool& loadSuccess) +{ + observer->LoadComplete( + loadSuccess, + TextureUploadObserver::TextureInformation( + TextureUploadObserver::ReturnType::TEXTURE, + static_cast(mId), ///< Note : until end of NPatchLoader::Load, npatch-visual don't know the id of data. + mTextureSet, + false, // UseAtlas + Vector4(), // AtlasRect + mPreMultiplyOnLoad)); +} + +void NPatchData::LoadComplete(bool loadSuccess, TextureInformation textureInformation) { if(loadSuccess) { - SetLoadedNPatchData(pixelBuffer, preMultiplied); + if(mLoadingState != LoadingState::LOAD_COMPLETE) + { + // If mLoadingState is LOAD_FAILED, just re-set (It can be happened when sync loading is failed, but async loading is succeeded). + SetLoadedNPatchData(textureInformation.pixelBuffer, textureInformation.preMultiplied); + } } else { - mLoadingState = LoadingState::LOAD_FAILED; + if(mLoadingState == LoadingState::LOADING) + { + mLoadingState = LoadingState::LOAD_FAILED; + } + // If mLoadingState is already LOAD_COMPLETE, we can use uploaded texture (It can be happened when sync loading is succeeded, but async loading is failed). + else if(mLoadingState == LoadingState::LOAD_COMPLETE) + { + loadSuccess = true; + } } for(uint32_t index = 0; index < mObserverList.Count(); ++index) { TextureUploadObserver* observer = mObserverList[index]; - observer->UploadComplete(loadSuccess, TextureManager::INVALID_TEXTURE_ID, mTextureSet, false, Vector4(), preMultiplied); + NotifyObserver(observer, loadSuccess); } + + mObserverList.Clear(); } } // namespace Internal