X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-scene3d%2Fpublic-api%2Floader%2Fenvironment-map-loader.cpp;h=619732d581bf2972904bc68c9951303a0af6ce5c;hb=HEAD;hp=4a7c820e123af83725083e3d5acb2f7c1b60b930;hpb=8d1310981009027c13eaa1c46600955e60508c7c;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-scene3d/public-api/loader/environment-map-loader.cpp b/dali-scene3d/public-api/loader/environment-map-loader.cpp index 4a7c820..619732d 100644 --- a/dali-scene3d/public-api/loader/environment-map-loader.cpp +++ b/dali-scene3d/public-api/loader/environment-map-loader.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 Samsung Electronics Co., Ltd. + * Copyright (c) 2024 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. @@ -77,15 +77,22 @@ uint8_t* GetCroppedBuffer(uint8_t* sourceBuffer, uint32_t bytesPerPixel, uint32_ uint32_t byteSize = bytesPerPixel * xFaceSize * yFaceSize; uint8_t* destBuffer = reinterpret_cast(malloc(byteSize + 4u)); - int32_t srcStride = width * bytesPerPixel; - int32_t destStride = xFaceSize * bytesPerPixel; - int32_t srcOffset = xOffset * bytesPerPixel + yOffset * srcStride; - int32_t destOffset = 0; - for(uint16_t row = yOffset; row < yOffset + yFaceSize; ++row) + if(DALI_LIKELY(destBuffer)) { - memcpy(destBuffer + destOffset, sourceBuffer + srcOffset, destStride); - srcOffset += srcStride; - destOffset += destStride; + int32_t srcStride = width * bytesPerPixel; + int32_t destStride = xFaceSize * bytesPerPixel; + int32_t srcOffset = xOffset * bytesPerPixel + yOffset * srcStride; + int32_t destOffset = 0; + for(uint16_t row = yOffset; row < yOffset + yFaceSize; ++row) + { + memcpy(destBuffer + destOffset, sourceBuffer + srcOffset, destStride); + srcOffset += srcStride; + destOffset += destStride; + } + } + else + { + DALI_LOG_ERROR("malloc is failed. request malloc size : %u\n", byteSize + 4u); } return destBuffer; @@ -110,7 +117,11 @@ PixelData GetCubeFace(Dali::PixelData cubePixelData, uint32_t faceIndex, CubeTyp uint32_t finalFaceWidth = (xOffset + static_cast(faceWidth) < imageWidth) ? static_cast(faceWidth) : imageWidth - xOffset; uint32_t finalFaceHeight = (yOffset + static_cast(faceHeight) < imageHeight) ? static_cast(faceHeight) : imageHeight - yOffset; uint8_t* tempImageBuffer = GetCroppedBuffer(imageBuffer, bytesPerPixel, imageWidth, imageHeight, xOffset, yOffset, finalFaceWidth, finalFaceHeight); - cubeFacePixelData = PixelData::New(tempImageBuffer, finalFaceWidth * finalFaceHeight * bytesPerPixel, finalFaceWidth, finalFaceHeight, imagePixelFormat, PixelData::FREE); + + if(DALI_LIKELY(tempImageBuffer)) + { + cubeFacePixelData = Dali::Integration::NewPixelDataWithReleaseAfterUpload(tempImageBuffer, finalFaceWidth * finalFaceHeight * bytesPerPixel, finalFaceWidth, finalFaceHeight, 0u, imagePixelFormat, PixelData::FREE); + } } } return cubeFacePixelData;