Added SDL_ReserveSpaceInDataQueue() to make space without copying data.

--HG--
extra : rebase_source : f49b615025d83e0abc994ad23eb18b03eabd2530
extra : histedit_source : c361c4ff4e1f6f0e6fcce7d4324bb02fd70fab48
This commit is contained in:
Ryan C. Gordon 2016-12-27 23:48:43 -05:00
parent dc9605265c
commit 7949864901
2 changed files with 103 additions and 34 deletions

View file

@ -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: */