X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fscene3d-view%2Fgltf-loader.cpp;h=2c8de12b8ef1a17d28415fd3c67914c0ddc24c63;hb=refs%2Fchanges%2F42%2F265542%2F2;hp=95f54f1bd676529ce1c760f375ee066e039d864b;hpb=f2039d47f9bed8104575da80a2ecf0bb6e37ff8d;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/controls/scene3d-view/gltf-loader.cpp b/dali-toolkit/internal/controls/scene3d-view/gltf-loader.cpp index 95f54f1..2c8de12 100644 --- a/dali-toolkit/internal/controls/scene3d-view/gltf-loader.cpp +++ b/dali-toolkit/internal/controls/scene3d-view/gltf-loader.cpp @@ -231,21 +231,20 @@ void FitBuffer(Dali::Vector& bufferDestination, Dali::Vector& buffer template bool ReadBinFile(Vector& dataBuffer, std::string url, int32_t offset, int32_t count) { + size_t readCount = 0; Dali::FileStream fileStream(url, FileStream::READ | FileStream::BINARY); FILE* fp = fileStream.GetFile(); - if(!fp) + if(fp) { - return false; - } - - dataBuffer.Resize(count); - ssize_t result = -1; - if(!fseek(fp, offset, SEEK_SET)) - { - result = fread(&dataBuffer[0], sizeof(T), count, fp); + dataBuffer.Resize(count); + if(!fseek(fp, offset, SEEK_SET)) + { + readCount = fread(&dataBuffer[0], sizeof(T), count, fp); + dataBuffer.Resize(readCount); + } } - return (result >= 0); + return (readCount > 0); } template @@ -301,38 +300,50 @@ void LoadDataFromAccessor(int32_t accessorIdx, Dali::Vector& bufferData, std: if(accessor.componentType == 5120) { Dali::Vector inputBufferData; - ReadBinFile(inputBufferData, path + load_uri, bufferView.byteOffset + accessor.byteOffset, elementNumOfByteStride * accessor.count); - FitBuffer(bufferData, inputBufferData, accessor.count, elementNumOfByteStride, accessor.normalized); + if(ReadBinFile(inputBufferData, path + load_uri, bufferView.byteOffset + accessor.byteOffset, elementNumOfByteStride * accessor.count)) + { + FitBuffer(bufferData, inputBufferData, accessor.count, elementNumOfByteStride, accessor.normalized); + } } else if(accessor.componentType == 5121) { Dali::Vector inputBufferData; - ReadBinFile(inputBufferData, path + load_uri, bufferView.byteOffset + accessor.byteOffset, elementNumOfByteStride * accessor.count); - FitBuffer(bufferData, inputBufferData, accessor.count, elementNumOfByteStride, accessor.normalized); + if(ReadBinFile(inputBufferData, path + load_uri, bufferView.byteOffset + accessor.byteOffset, elementNumOfByteStride * accessor.count)) + { + FitBuffer(bufferData, inputBufferData, accessor.count, elementNumOfByteStride, accessor.normalized); + } } else if(accessor.componentType == 5122) { Dali::Vector inputBufferData; - ReadBinFile(inputBufferData, path + load_uri, bufferView.byteOffset + accessor.byteOffset, elementNumOfByteStride * accessor.count); - FitBuffer(bufferData, inputBufferData, accessor.count, elementNumOfByteStride, accessor.normalized); + if(ReadBinFile(inputBufferData, path + load_uri, bufferView.byteOffset + accessor.byteOffset, elementNumOfByteStride * accessor.count)) + { + FitBuffer(bufferData, inputBufferData, accessor.count, elementNumOfByteStride, accessor.normalized); + } } else if(accessor.componentType == 5123) { Dali::Vector inputBufferData; - ReadBinFile(inputBufferData, path + load_uri, bufferView.byteOffset + accessor.byteOffset, elementNumOfByteStride * accessor.count); - FitBuffer(bufferData, inputBufferData, accessor.count, elementNumOfByteStride, accessor.normalized); + if(ReadBinFile(inputBufferData, path + load_uri, bufferView.byteOffset + accessor.byteOffset, elementNumOfByteStride * accessor.count)) + { + FitBuffer(bufferData, inputBufferData, accessor.count, elementNumOfByteStride, accessor.normalized); + } } else if(accessor.componentType == 5125) { Dali::Vector inputBufferData; - ReadBinFile(inputBufferData, path + load_uri, bufferView.byteOffset + accessor.byteOffset, elementNumOfByteStride * accessor.count); - FitBuffer(bufferData, inputBufferData, accessor.count, elementNumOfByteStride, accessor.normalized); + if(ReadBinFile(inputBufferData, path + load_uri, bufferView.byteOffset + accessor.byteOffset, elementNumOfByteStride * accessor.count)) + { + FitBuffer(bufferData, inputBufferData, accessor.count, elementNumOfByteStride, accessor.normalized); + } } else if(accessor.componentType == 5126) { Dali::Vector inputBufferData; - ReadBinFile(inputBufferData, path + load_uri, bufferView.byteOffset + accessor.byteOffset, elementNumOfByteStride * accessor.count); - FitBuffer(bufferData, inputBufferData, accessor.count, elementNumOfByteStride, accessor.normalized); + if(ReadBinFile(inputBufferData, path + load_uri, bufferView.byteOffset + accessor.byteOffset, elementNumOfByteStride * accessor.count)) + { + FitBuffer(bufferData, inputBufferData, accessor.count, elementNumOfByteStride, accessor.normalized); + } } }