summaryrefslogtreecommitdiff
path: root/src/SDL_dataqueue.h
diff options
context:
space:
mode:
authorRyan C. Gordon <icculus@icculus.org>2016-12-27 23:48:43 -0500
committerRyan C. Gordon <icculus@icculus.org>2016-12-27 23:48:43 -0500
commitbc633674cbddb38fce3cb8a011c6b4f779f1bdac (patch)
treebe24cb08d325971100675b987553d3808a1d4117 /src/SDL_dataqueue.h
parent2bcfbd252167e3a3148ca9ef6bf7e81451aedadd (diff)
Added SDL_ReserveSpaceInDataQueue() to make space without copying data.
Diffstat (limited to 'src/SDL_dataqueue.h')
-rw-r--r--src/SDL_dataqueue.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/SDL_dataqueue.h b/src/SDL_dataqueue.h
index d7d2697e9c..a5e3e1c60e 100644
--- a/src/SDL_dataqueue.h
+++ b/src/SDL_dataqueue.h
@@ -33,6 +33,21 @@ int SDL_WriteToDataQueue(SDL_DataQueue *queue, const void *data, const size_t le
size_t SDL_ReadFromDataQueue(SDL_DataQueue *queue, void *buf, const size_t len);
size_t SDL_CountDataQueue(SDL_DataQueue *queue);
+/* this sets a section of the data queue aside (possibly allocating memory for it)
+ as if it's been written to, but returns a pointer to that space. You may write
+ to this space until a read would consume it. Writes (and other calls to this
+ function) will safely append their data after this reserved space and can
+ be in flight at the same time. There is no thread safety.
+ If there isn't an existing block of memory that can contain the reserved
+ space, one will be allocated for it. You can not (currently) allocate
+ a space larger than the packetlen requested in SDL_NewDataQueue.
+ Returned buffer is uninitialized.
+ This lets you avoid an extra copy in some cases, but it's safer to use
+ SDL_WriteToDataQueue() unless you know what you're doing.
+ Returns pointer to buffer of at least (len) bytes, NULL on error.
+*/
+void *SDL_ReserveSpaceInDataQueue(SDL_DataQueue *queue, const size_t len);
+
#endif /* SDL_dataqueue_h_ */
/* vi: set ts=4 sw=4 expandtab: */