Deluge Firmware 1.3.0
Build date: 2025.04.16
Loading...
Searching...
No Matches
CacheManager Class Reference

Public Member Functions

list_type & queue (StealableQueue destination)
 
uint32_t & longest_runs (size_t idx)
 
void QueueForReclamation (StealableQueue queue, Stealable &stealable)
 add a stealable to end of given queue
 
uint32_t ReclaimMemory (MemoryRegion &region, int32_t totalSizeNeeded, void *thingNotToStealFrom, int32_t *__restrict__ foundSpaceSize)
 

Private Types

using list_type = etl::intrusive_list<Stealable, Stealable::link_type>
 

Private Attributes

std::array< list_type, kNumStealableQueue > reclamation_queue_
 
std::array< uint32_t, kNumStealableQueue > longest_runs_
 

Member Function Documentation

◆ QueueForReclamation()

void CacheManager::QueueForReclamation ( StealableQueue queue,
Stealable & stealable )
inline

add a stealable to end of given queue

Alternatively we could add to start of queue - logic is that a recently freed sample is unlikely to be immediately needed again. This increases average and max voice counts, but has a problem with medium memory pressure songs where it tends to prioritize earlier sounds in the song and makes it possible for later songs to break in. This occurs since there's no mechanism to determine if a sample is going to be used in the remainder of the song, so if there's not enough memory pressure for all stealable clusters to get reclaimed the same few just get put on and off the list repeatedly


The documentation for this class was generated from the following files: