MCPcopy Create free account
hub / github.com/defold/defold / DoLoadResource

Function DoLoadResource

engine/resource/src/async/load_queue.cpp:21–72  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

19{
20
21dmResource::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(&params);
65 }
66 else
67 {
68 result->m_PreloadResult = dmResource::RESULT_OK;
69 }
70 }
71 return dmResource::RESULT_OK;
72}
73
74} // namespace dmLoadQueue

Callers 2

LoadThreadFunction · 0.85
EndLoadFunction · 0.85

Calls 8

ResourceTypeIsStreamingFunction · 0.85
LoadResourceToBufferFunction · 0.85
assertFunction · 0.50
SetCapacityMethod · 0.45
SetSizeMethod · 0.45
SizeMethod · 0.45
BeginMethod · 0.45

Tested by

no test coverage detected