From: Seoyeon Kim Date: Wed, 10 Nov 2021 07:17:03 +0000 (+0000) Subject: Merge "[ATSPI] Apply multi-window to ATSPI" into devel/master X-Git-Tag: dali_2.0.52~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a6a1a9eb689927dc70ec0b9731f27e49a730f9d2;hp=6fe31dbd1820f16a125b239715f0b7310df62fad;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git Merge "[ATSPI] Apply multi-window to ATSPI" into devel/master --- diff --git a/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.cpp b/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.cpp index bc45837..7daa7c1 100644 --- a/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.cpp +++ b/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.cpp @@ -23,12 +23,10 @@ #include // INTERNAL INCLUDES -#include #include #include #include #include -#include namespace Dali { @@ -56,11 +54,11 @@ CanvasRendererTizen* CanvasRendererTizen::New(const Vector2& viewBox) CanvasRendererTizen::CanvasRendererTizen(const Vector2& viewBox) : #ifdef THORVG_SUPPORT - mPixelBuffer(nullptr), mRasterizedTexture(), mMutex(), mTvgCanvas(nullptr), mTvgRoot(nullptr), + mNativeImageQueue(nullptr), #endif mSize(Vector2::ZERO), mViewBox(Vector2::ZERO), @@ -126,11 +124,8 @@ bool CanvasRendererTizen::Commit() } else { - if(!mPixelBuffer || !mPixelBuffer.GetBuffer()) - { - MakeTargetBuffer(mSize); - mChanged = false; - } + MakeTargetBuffer(mSize); + mChanged = false; } if(mTvgCanvas->clear() != tvg::Result::Success) @@ -168,25 +163,18 @@ bool CanvasRendererTizen::Commit() Dali::Texture CanvasRendererTizen::GetRasterizedTexture() { #ifdef THORVG_SUPPORT - if(mPixelBuffer) + if(mNativeImageQueue) { - auto width = mPixelBuffer.GetWidth(); - auto height = mPixelBuffer.GetHeight(); - if(width <= 0 || height <= 0) - { - return Dali::Texture(); - } - - Dali::PixelData pixelData = Devel::PixelBuffer::Convert(mPixelBuffer); - - if(!mRasterizedTexture || mRasterizedTexture.GetWidth() != width || mRasterizedTexture.GetHeight() != height) + if(!mRasterizedTexture) { - mRasterizedTexture = Dali::Texture::New(Dali::TextureType::TEXTURE_2D, Dali::Pixel::BGRA8888, width, height); + mRasterizedTexture = Dali::Texture::New(*mNativeImageQueue); } - - mRasterizedTexture.Upload(pixelData); + return mRasterizedTexture; + } + else + { + return Dali::Texture(); } - return mRasterizedTexture; #else return Dali::Texture(); #endif @@ -336,14 +324,34 @@ bool CanvasRendererTizen::Rasterize() #ifdef THORVG_SUPPORT Mutex::ScopedLock lock(mMutex); - if(mTvgCanvas->draw() != tvg::Result::Success) + if(mNativeImageQueue && mNativeImageQueue->CanDequeueBuffer()) + { + uint32_t width, height, stride; + uint8_t* buffer = mNativeImageQueue->DequeueBuffer(width, height, stride); + if(!buffer) + { + DALI_LOG_ERROR("Pixel buffer create to fail [%p]\n", this); + return false; + } + + mTvgCanvas->target(reinterpret_cast(buffer), stride / 4, width, height, tvg::SwCanvas::ARGB8888); + + if(mTvgCanvas->draw() != tvg::Result::Success) + { + DALI_LOG_ERROR("ThorVG Draw fail [%p]\n", this); + mNativeImageQueue->EnqueueBuffer(buffer); + return false; + } + + mTvgCanvas->sync(); + + mNativeImageQueue->EnqueueBuffer(buffer); + } + else { - DALI_LOG_ERROR("ThorVG Draw fail [%p]\n", this); return false; } - mTvgCanvas->sync(); - return true; #else return false; @@ -432,18 +440,14 @@ const Vector2& CanvasRendererTizen::GetViewBox() void CanvasRendererTizen::MakeTargetBuffer(const Vector2& size) { #ifdef THORVG_SUPPORT - mPixelBuffer = Devel::PixelBuffer::New(size.width, size.height, Dali::Pixel::BGRA8888); - - unsigned char* pBuffer; - pBuffer = mPixelBuffer.GetBuffer(); - - if(!pBuffer) + if(!mNativeImageQueue) { - DALI_LOG_ERROR("Pixel buffer create to fail [%p]\n", this); - return; + mNativeImageQueue = Dali::NativeImageSourceQueue::New(size.width, size.height, Dali::NativeImageSourceQueue::ColorFormat::RGBA8888); + } + else + { + mNativeImageQueue->SetSize(static_cast(size.width), static_cast(size.height)); } - - mTvgCanvas->target(reinterpret_cast(pBuffer), size.width, size.width, size.height, tvg::SwCanvas::ARGB8888); #endif } diff --git a/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.h b/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.h index 88a43ed..b200585 100644 --- a/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.h +++ b/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.h @@ -29,9 +29,9 @@ // INTERNAL INCLUDES #include #include +#include #include #include -#include namespace Dali { @@ -164,11 +164,11 @@ private: private: #ifdef THORVG_SUPPORT - Devel::PixelBuffer mPixelBuffer; - Dali::Texture mRasterizedTexture; - Dali::Mutex mMutex; - std::unique_ptr mTvgCanvas; - tvg::Scene* mTvgRoot; + Dali::Texture mRasterizedTexture; + Dali::Mutex mMutex; + std::unique_ptr mTvgCanvas; + tvg::Scene* mTvgRoot; + Dali::NativeImageSourceQueuePtr mNativeImageQueue; #endif DrawableGroup::DrawableVector mDrawables; diff --git a/dali/internal/imaging/common/loader-webp.cpp b/dali/internal/imaging/common/loader-webp.cpp index e388712..da82a89 100644 --- a/dali/internal/imaging/common/loader-webp.cpp +++ b/dali/internal/imaging/common/loader-webp.cpp @@ -130,6 +130,7 @@ bool LoadWebpHeader(const Dali::ImageLoader::Input& input, unsigned int& width, WebPAnimDecoderGetInfo(webPAnimDecoder, &webPAnimInfo); width = webPAnimInfo.canvas_width; height = webPAnimInfo.canvas_height; + ReleaseResource(webPData, webPAnimDecoder); return true; } } @@ -225,6 +226,7 @@ bool LoadBitmapFromWebp(const Dali::ImageLoader::Input& input, Dali::Devel::Pixe bitmap = Dali::Devel::PixelBuffer::New(webPAnimInfo.canvas_width, webPAnimInfo.canvas_height, Dali::Pixel::RGBA8888); const int32_t bufferSize = webPAnimInfo.canvas_width * webPAnimInfo.canvas_height * sizeof(uint32_t); memcpy(bitmap.GetBuffer(), frameBuffer, bufferSize); + ReleaseResource(webPData, webPAnimDecoder); return true; } } diff --git a/dali/internal/imaging/common/webp-loading.cpp b/dali/internal/imaging/common/webp-loading.cpp index dc758fa..707821b 100644 --- a/dali/internal/imaging/common/webp-loading.cpp +++ b/dali/internal/imaging/common/webp-loading.cpp @@ -116,7 +116,7 @@ public: { Internal::Platform::FileReader fileReader(mUrl); fp = fileReader.GetFile(); - if(fp == NULL) + if(fp == nullptr) { return false; } @@ -165,28 +165,37 @@ public: return false; } - // Moveable but not copyable - - Impl(const Impl&) = delete; - Impl& operator=(const Impl&) = delete; - Impl(Impl&&) = default; - Impl& operator=(Impl&&) = default; - - ~Impl() + void ReleaseResource() { #ifdef DALI_ANIMATED_WEBP_ENABLED - if(&mWebPData != NULL) + if(&mWebPData != nullptr) { mWebPData.bytes = nullptr; WebPDataInit(&mWebPData); } - if(mWebPAnimDecoder) + if(mWebPAnimDecoder != nullptr) { WebPAnimDecoderDelete(mWebPAnimDecoder); + mWebPAnimDecoder = nullptr; } #endif - free((void*)mBuffer); - mBuffer = nullptr; + if(mBuffer != nullptr) + { + free((void*)mBuffer); + mBuffer = nullptr; + } + } + + // Moveable but not copyable + + Impl(const Impl&) = delete; + Impl& operator=(const Impl&) = delete; + Impl(Impl&&) = default; + Impl& operator=(Impl&&) = default; + + ~Impl() + { + ReleaseResource(); } std::string mUrl; @@ -279,8 +288,9 @@ Dali::Devel::PixelBuffer WebPLoading::LoadFrame(uint32_t frameIndex) const int32_t imageBufferSize = width * height * sizeof(uint8_t) * channelNumber; memcpy(pixelBuffer.GetBuffer(), frameBuffer, imageBufferSize); free((void*)frameBuffer); - return pixelBuffer; } + mImpl->ReleaseResource(); + return pixelBuffer; } #endif diff --git a/dali/public-api/dali-adaptor-version.cpp b/dali/public-api/dali-adaptor-version.cpp index ba68d93..b4b44b2 100644 --- a/dali/public-api/dali-adaptor-version.cpp +++ b/dali/public-api/dali-adaptor-version.cpp @@ -27,7 +27,7 @@ namespace Dali { const unsigned int ADAPTOR_MAJOR_VERSION = 2; const unsigned int ADAPTOR_MINOR_VERSION = 0; -const unsigned int ADAPTOR_MICRO_VERSION = 50; +const unsigned int ADAPTOR_MICRO_VERSION = 51; const char* const ADAPTOR_BUILD_DATE = __DATE__ " " __TIME__; #ifdef DEBUG_ENABLED diff --git a/packaging/dali-adaptor.spec b/packaging/dali-adaptor.spec index 236a88c..51d32c8 100644 --- a/packaging/dali-adaptor.spec +++ b/packaging/dali-adaptor.spec @@ -17,7 +17,7 @@ Name: dali2-adaptor Summary: The DALi Tizen Adaptor -Version: 2.0.50 +Version: 2.0.51 Release: 1 Group: System/Libraries License: Apache-2.0 and BSD-3-Clause and MIT