MCPcopy Create free account
hub / github.com/RavEngine/RavEngine / SDL_ClearDataQueue

Function SDL_ClearDataQueue

deps/SDL2/src/SDL_dataqueue.c:97–138  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

95}
96
97void
98SDL_ClearDataQueue(SDL_DataQueue *queue, const size_t slack)
99{
100 const size_t packet_size = queue ? queue->packet_size : 1;
101 const size_t slackpackets = (slack + (packet_size-1)) / packet_size;
102 SDL_DataQueuePacket *packet;
103 SDL_DataQueuePacket *prev = NULL;
104 size_t i;
105
106 if (!queue) {
107 return;
108 }
109
110 packet = queue->head;
111
112 /* merge the available pool and the current queue into one list. */
113 if (packet) {
114 queue->tail->next = queue->pool;
115 } else {
116 packet = queue->pool;
117 }
118
119 /* Remove the queued packets from the device. */
120 queue->tail = NULL;
121 queue->head = NULL;
122 queue->queued_bytes = 0;
123 queue->pool = packet;
124
125 /* Optionally keep some slack in the pool to reduce malloc pressure. */
126 for (i = 0; packet && (i < slackpackets); i++) {
127 prev = packet;
128 packet = packet->next;
129 }
130
131 if (prev) {
132 prev->next = NULL;
133 } else {
134 queue->pool = NULL;
135 }
136
137 SDL_FreeDataQueueList(packet); /* free extra packets */
138}
139
140static SDL_DataQueuePacket *
141AllocateDataQueuePacket(SDL_DataQueue *queue)

Callers 2

SDL_ClearQueuedAudioFunction · 0.85
SDL_AudioStreamClearFunction · 0.85

Calls 1

SDL_FreeDataQueueListFunction · 0.85

Tested by

no test coverage detected