| 19 | { |
| 20 | |
| 21 | dmResource::Result DoLoadResource(dmResource::HFactory factory, HRequest request, dmResource::LoadBufferType* buffer, LoadResult* result) |
| 22 | { |
| 23 | dmResource::HResourceType resource_type = request->m_PreloadInfo.m_Type; |
| 24 | uint32_t preload_size = RESOURCE_INVALID_PRELOAD_SIZE; |
| 25 | if (ResourceTypeIsStreaming(resource_type)) |
| 26 | { |
| 27 | preload_size = ResourceTypeGetPreloadSize(resource_type); |
| 28 | } |
| 29 | |
| 30 | result->m_LoadResult = dmResource::LoadResourceToBuffer(factory, request->m_CanonicalPath, request->m_Name, preload_size, &request->m_ResourceSize, &request->m_BufferSize, buffer); |
| 31 | result->m_PreloadResult = dmResource::RESULT_PENDING; |
| 32 | result->m_PreloadData = 0; |
| 33 | result->m_IsBufferOwnershipTransferred = false; |
| 34 | |
| 35 | if (result->m_LoadResult == dmResource::RESULT_OK) |
| 36 | { |
| 37 | if (request->m_BufferSize == 0) |
| 38 | { |
| 39 | // Only happens for unit tests, the buffer must not be null |
| 40 | // We only check it, but we don't use it |
| 41 | buffer->SetCapacity(1); |
| 42 | buffer->SetSize(0); |
| 43 | } |
| 44 | |
| 45 | assert(buffer->Size() == request->m_BufferSize); |
| 46 | assert(request->m_BufferSize <= request->m_ResourceSize); |
| 47 | if (request->m_PreloadInfo.m_CompleteFunction) |
| 48 | { |
| 49 | ResourcePreloadParams params; |
| 50 | params.m_Factory = factory; |
| 51 | params.m_Context = request->m_PreloadInfo.m_Context; |
| 52 | params.m_Buffer = buffer->Begin(); |
| 53 | params.m_BufferSize = request->m_BufferSize; |
| 54 | params.m_FileSize = request->m_ResourceSize; |
| 55 | params.m_IsBufferPartial = request->m_BufferSize != request->m_ResourceSize; |
| 56 | params.m_IsBufferTransferrable = 1; |
| 57 | params.m_Filename = request->m_CanonicalPath; |
| 58 | params.m_HintInfo = &request->m_PreloadInfo.m_HintInfo; |
| 59 | |
| 60 | // out |
| 61 | params.m_PreloadData = &result->m_PreloadData; |
| 62 | params.m_IsBufferOwnershipTransferred = &result->m_IsBufferOwnershipTransferred; |
| 63 | |
| 64 | result->m_PreloadResult = (dmResource::Result)request->m_PreloadInfo.m_CompleteFunction(¶ms); |
| 65 | } |
| 66 | else |
| 67 | { |
| 68 | result->m_PreloadResult = dmResource::RESULT_OK; |
| 69 | } |
| 70 | } |
| 71 | return dmResource::RESULT_OK; |
| 72 | } |
| 73 | |
| 74 | } // namespace dmLoadQueue |
no test coverage detected