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

Function Release

engine/resource/src/resource.cpp:1471–1506  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1469}
1470
1471void Release(HFactory factory, void* resource)
1472{
1473 DM_PROFILE(__FUNCTION__);
1474
1475 uint64_t* resource_hash = factory->m_ResourceToHash->Get((uintptr_t) resource);
1476 assert(resource_hash);
1477
1478 ResourceDescriptor* rd = factory->m_Resources->Get(*resource_hash);
1479 assert(rd);
1480 assert(rd->m_ReferenceCount > 0);
1481 rd->m_ReferenceCount--;
1482
1483 if (rd->m_ReferenceCount == 0)
1484 {
1485 ResourceType* resource_type = (ResourceType*) rd->m_ResourceType;
1486
1487 DM_PROFILE_DYN(resource_type->m_Extension, 0);
1488
1489 ResourceDestroyParams params;
1490 params.m_Factory = factory;
1491 params.m_Type = resource_type;
1492 params.m_Context = resource_type->m_Context;
1493 params.m_Resource = rd;
1494 resource_type->m_DestroyFunction(&params);
1495
1496 factory->m_ResourceToHash->Erase((uintptr_t) resource);
1497 factory->m_Resources->Erase(*resource_hash);
1498 if (factory->m_ResourceHashToFilename)
1499 {
1500 const char** s = factory->m_ResourceHashToFilename->Get(*resource_hash);
1501 factory->m_ResourceHashToFilename->Erase(*resource_hash);
1502 assert(s);
1503 free((void*) *s);
1504 }
1505 }
1506}
1507
1508void RegisterResourceReloadedCallback(HFactory factory, FResourceReloadedCallback callback, void* user_data)
1509{

Callers 8

ResourceReleaseFunction · 0.70
PreloaderRemoveLeafFunction · 0.70
DeletePreloaderFunction · 0.70
ResourceContainerCreateFunction · 0.50
ResourceContainerDestroyFunction · 0.50
TEST_PFunction · 0.50
TESTFunction · 0.50
TEST_FFunction · 0.50

Calls 4

freeFunction · 0.85
assertFunction · 0.50
GetMethod · 0.45
EraseMethod · 0.45

Tested by 5

ResourceContainerCreateFunction · 0.40
ResourceContainerDestroyFunction · 0.40
TEST_PFunction · 0.40
TESTFunction · 0.40
TEST_FFunction · 0.40