Skip to content
  • Víctor Manuel Jáquez Leal's avatar
    va: implement pooled allocators · 734e2a74
    Víctor Manuel Jáquez Leal authored and GStreamer Marge Bot's avatar GStreamer Marge Bot committed
    1. Allocators don't implement memory free() methods since all the memories will
       implement dispose() returning FALSE
    2. Memory/miniobject dispose() will act as memory release, enqueueing the
       release memory
    3. A new allocator's method prepare_buffer() which queries the released memory
       queue and will add the requiered memories to the buffer.
    4. Allocators added a GCond to synchronize dispose() and prepare_buffer()
    5. A new allocator's method flush() which will free for real the memories.
    
    While the bufferpool will
    
    1. Remove all the memories at reset_buffer()
    2. Implement acquire_buffer() calling allocator's prepare_buffer()
    3. Implement flush_start() calling allocator's flush()
    4. start() is disabled since it pre-allocs buffers but also calls
       our reset_buffer() which will drop the memories and later the
       buffers are ditched, something we don't want. This approach avoids
       buffer pre-allocation.
    
    Part-of: <!1626>
    734e2a74