mirror of
https://github.com/libretro/RetroArch
synced 2025-03-29 13:20:30 +00:00
Create fifo_initialize/fifo_deinitialize
This commit is contained in:
parent
9caf3080b1
commit
64f8a5990c
@ -29,6 +29,7 @@
|
||||
|
||||
#include <retro_common_api.h>
|
||||
#include <retro_inline.h>
|
||||
#include <boolean.h>
|
||||
|
||||
RETRO_BEGIN_DECLS
|
||||
|
||||
@ -54,14 +55,7 @@ void fifo_write(fifo_buffer_t *buffer, const void *in_buf, size_t size);
|
||||
|
||||
void fifo_read(fifo_buffer_t *buffer, void *in_buf, size_t size);
|
||||
|
||||
static INLINE void fifo_free(fifo_buffer_t *buffer)
|
||||
{
|
||||
if (!buffer)
|
||||
return;
|
||||
|
||||
free(buffer->buffer);
|
||||
free(buffer);
|
||||
}
|
||||
void fifo_free(fifo_buffer_t *buffer);
|
||||
|
||||
#define FIFO_READ_AVAIL(buffer) (((buffer)->end + (((buffer)->end < (buffer)->first) ? (buffer)->size : 0)) - (buffer)->first)
|
||||
|
||||
|
@ -23,29 +23,71 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <retro_common_api.h>
|
||||
#include <retro_inline.h>
|
||||
#include <boolean.h>
|
||||
|
||||
#include <queues/fifo_queue.h>
|
||||
|
||||
static bool fifo_initialize_internal(fifo_buffer_t *buf, size_t size)
|
||||
{
|
||||
uint8_t *buffer = (uint8_t*)calloc(1, size + 1);
|
||||
|
||||
if (!buffer)
|
||||
return false;
|
||||
|
||||
buf->buffer = buffer;
|
||||
buf->size = size + 1;
|
||||
buf->first = 0;
|
||||
buf->end = 0;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool fifo_initialize(fifo_buffer_t *buf, size_t size)
|
||||
{
|
||||
if (!buf)
|
||||
return false;
|
||||
return fifo_initialize_internal(buf, size);
|
||||
}
|
||||
|
||||
void fifo_free(fifo_buffer_t *buffer)
|
||||
{
|
||||
if (!buffer)
|
||||
return;
|
||||
|
||||
free(buffer->buffer);
|
||||
free(buffer);
|
||||
}
|
||||
|
||||
bool fifo_deinitialize(fifo_buffer_t *buffer)
|
||||
{
|
||||
if (!buffer)
|
||||
return false;
|
||||
|
||||
if (buffer->buffer)
|
||||
free(buffer->buffer);
|
||||
buffer->buffer = NULL;
|
||||
buffer->size = 0;
|
||||
buffer->first = 0;
|
||||
buffer->end = 0;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
fifo_buffer_t *fifo_new(size_t size)
|
||||
{
|
||||
uint8_t *buffer = NULL;
|
||||
fifo_buffer_t *buf = (fifo_buffer_t*)malloc(sizeof(*buf));
|
||||
|
||||
if (!buf)
|
||||
return NULL;
|
||||
|
||||
buf->first = 0;
|
||||
buf->end = 0;
|
||||
buffer = (uint8_t*)calloc(1, size + 1);
|
||||
|
||||
if (!buffer)
|
||||
if (!fifo_initialize_internal(buf, size))
|
||||
{
|
||||
free(buf);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
buf->buffer = buffer;
|
||||
buf->size = size + 1;
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user