aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/replay_buffer/replay_buffer.h
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2026-08-06 13:02:59 +0200
committerdec05eba <dec05eba@protonmail.com>2026-08-06 13:02:59 +0200
commite31968fc4074df739c00947b993ee19be4ef1caa (patch)
tree57f2d57cd9392bf28fe57e82bc25017a4c4d9d59 /include/replay_buffer/replay_buffer.h
parent5db30f3fb99545524fc80f87ecc488972aec1711 (diff)
Faster shutdown time when several gb of replay data is in ram
Diffstat (limited to 'include/replay_buffer/replay_buffer.h')
-rw-r--r--include/replay_buffer/replay_buffer.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/include/replay_buffer/replay_buffer.h b/include/replay_buffer/replay_buffer.h
index c036b1c..3ac452a 100644
--- a/include/replay_buffer/replay_buffer.h
+++ b/include/replay_buffer/replay_buffer.h
@@ -14,6 +14,7 @@ typedef struct {
struct gsr_replay_buffer {
void (*destroy)(gsr_replay_buffer *self);
+ void (*destroy_at_exit)(gsr_replay_buffer *self);
bool (*append)(gsr_replay_buffer *self, const AVPacket *av_packet, double timestamp);
void (*clear)(gsr_replay_buffer *self);
AVPacket* (*iterator_get_packet)(gsr_replay_buffer *self, gsr_replay_buffer_iterator iterator);
@@ -32,6 +33,13 @@ struct gsr_replay_buffer {
gsr_replay_buffer* gsr_replay_buffer_create(gsr_replay_storage replay_storage, const char *replay_directory, double replay_buffer_time, size_t replay_buffer_num_packets);
void gsr_replay_buffer_destroy(gsr_replay_buffer *self);
+/*
+ Only frees the resources that the operating system doesn't free when the process exits, such as files,
+ and leaves the memory to the operating system to free. Freeing a replay buffer that holds several gigabytes
+ of data takes seconds, which is time wasted when the process is exiting anyway.
+ |self| can't be used after this.
+*/
+void gsr_replay_buffer_destroy_at_exit(gsr_replay_buffer *self);
bool gsr_replay_buffer_append(gsr_replay_buffer *self, const AVPacket *av_packet, double timestamp);
void gsr_replay_buffer_clear(gsr_replay_buffer *self);