mirror of
https://github.com/libretro/RetroArch
synced 2025-04-18 14:42: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_common_api.h>
|
||||||
#include <retro_inline.h>
|
#include <retro_inline.h>
|
||||||
|
#include <boolean.h>
|
||||||
|
|
||||||
RETRO_BEGIN_DECLS
|
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);
|
void fifo_read(fifo_buffer_t *buffer, void *in_buf, size_t size);
|
||||||
|
|
||||||
static INLINE void fifo_free(fifo_buffer_t *buffer)
|
void fifo_free(fifo_buffer_t *buffer);
|
||||||
{
|
|
||||||
if (!buffer)
|
|
||||||
return;
|
|
||||||
|
|
||||||
free(buffer->buffer);
|
|
||||||
free(buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
#define FIFO_READ_AVAIL(buffer) (((buffer)->end + (((buffer)->end < (buffer)->first) ? (buffer)->size : 0)) - (buffer)->first)
|
#define FIFO_READ_AVAIL(buffer) (((buffer)->end + (((buffer)->end < (buffer)->first) ? (buffer)->size : 0)) - (buffer)->first)
|
||||||
|
|
||||||
|
@ -23,29 +23,71 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <retro_common_api.h>
|
||||||
|
#include <retro_inline.h>
|
||||||
|
#include <boolean.h>
|
||||||
|
|
||||||
#include <queues/fifo_queue.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)
|
fifo_buffer_t *fifo_new(size_t size)
|
||||||
{
|
{
|
||||||
uint8_t *buffer = NULL;
|
|
||||||
fifo_buffer_t *buf = (fifo_buffer_t*)malloc(sizeof(*buf));
|
fifo_buffer_t *buf = (fifo_buffer_t*)malloc(sizeof(*buf));
|
||||||
|
|
||||||
if (!buf)
|
if (!buf)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
buf->first = 0;
|
if (!fifo_initialize_internal(buf, size))
|
||||||
buf->end = 0;
|
|
||||||
buffer = (uint8_t*)calloc(1, size + 1);
|
|
||||||
|
|
||||||
if (!buffer)
|
|
||||||
{
|
{
|
||||||
free(buf);
|
free(buf);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
buf->buffer = buffer;
|
|
||||||
buf->size = size + 1;
|
|
||||||
|
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user