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

Function SDL_ReserveSpaceInDataQueue

deps/SDL2/src/SDL_dataqueue.c:299–336  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

297}
298
299void *
300SDL_ReserveSpaceInDataQueue(SDL_DataQueue *queue, const size_t len)
301{
302 SDL_DataQueuePacket *packet;
303
304 if (!queue) {
305 SDL_InvalidParamError("queue");
306 return NULL;
307 } else if (len == 0) {
308 SDL_InvalidParamError("len");
309 return NULL;
310 } else if (len > queue->packet_size) {
311 SDL_SetError("len is larger than packet size");
312 return NULL;
313 }
314
315 packet = queue->head;
316 if (packet) {
317 const size_t avail = queue->packet_size - packet->datalen;
318 if (len <= avail) { /* we can use the space at end of this packet. */
319 void *retval = packet->data + packet->datalen;
320 packet->datalen += len;
321 queue->queued_bytes += len;
322 return retval;
323 }
324 }
325
326 /* Need a fresh packet. */
327 packet = AllocateDataQueuePacket(queue);
328 if (!packet) {
329 SDL_OutOfMemory();
330 return NULL;
331 }
332
333 packet->datalen = len;
334 queue->queued_bytes += len;
335 return packet->data;
336}
337
338/* vi: set ts=4 sw=4 expandtab: */
339

Callers

nothing calls this directly

Calls 2

SDL_SetErrorFunction · 0.85
AllocateDataQueuePacketFunction · 0.85

Tested by

no test coverage detected