mirror of
https://github.com/libretro/RetroArch
synced 2024-12-28 09:29:16 +00:00
Make message queue functions more robust
This commit is contained in:
parent
039aec9019
commit
369d899f49
@ -55,14 +55,17 @@ msg_queue_t *msg_queue_new(size_t size)
|
|||||||
|
|
||||||
void msg_queue_free(msg_queue_t *queue)
|
void msg_queue_free(msg_queue_t *queue)
|
||||||
{
|
{
|
||||||
msg_queue_clear(queue);
|
if (queue)
|
||||||
free(queue->elems);
|
{
|
||||||
|
msg_queue_clear(queue);
|
||||||
|
free(queue->elems);
|
||||||
|
}
|
||||||
free(queue);
|
free(queue);
|
||||||
}
|
}
|
||||||
|
|
||||||
void msg_queue_push(msg_queue_t *queue, const char *msg, unsigned prio, unsigned duration)
|
void msg_queue_push(msg_queue_t *queue, const char *msg, unsigned prio, unsigned duration)
|
||||||
{
|
{
|
||||||
if (queue->ptr >= queue->size)
|
if (!queue || queue->ptr >= queue->size)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
struct queue_elem *new_elem = (struct queue_elem*)calloc(1, sizeof(struct queue_elem));
|
struct queue_elem *new_elem = (struct queue_elem*)calloc(1, sizeof(struct queue_elem));
|
||||||
@ -91,6 +94,9 @@ void msg_queue_push(msg_queue_t *queue, const char *msg, unsigned prio, unsigned
|
|||||||
|
|
||||||
void msg_queue_clear(msg_queue_t *queue)
|
void msg_queue_clear(msg_queue_t *queue)
|
||||||
{
|
{
|
||||||
|
if (!queue)
|
||||||
|
return;
|
||||||
|
|
||||||
size_t i;
|
size_t i;
|
||||||
for (i = 1; i < queue->ptr; i++)
|
for (i = 1; i < queue->ptr; i++)
|
||||||
{
|
{
|
||||||
@ -108,7 +114,7 @@ void msg_queue_clear(msg_queue_t *queue)
|
|||||||
|
|
||||||
const char *msg_queue_pull(msg_queue_t *queue)
|
const char *msg_queue_pull(msg_queue_t *queue)
|
||||||
{
|
{
|
||||||
if (queue->ptr == 1) // Nothing in queue. :(
|
if (!queue || queue->ptr == 1) // Nothing in queue.
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
struct queue_elem *front = queue->elems[1];
|
struct queue_elem *front = queue->elems[1];
|
||||||
|
@ -615,9 +615,12 @@ static void general_change_handler(const void *data)
|
|||||||
g_settings.video.fullscreen_y = *setting->value.unsigned_integer;
|
g_settings.video.fullscreen_y = *setting->value.unsigned_integer;
|
||||||
else if (!strcmp(setting->name, "video_refresh_rate"))
|
else if (!strcmp(setting->name, "video_refresh_rate"))
|
||||||
{
|
{
|
||||||
driver_set_monitor_refresh_rate(*setting->value.fraction);
|
if (driver.video && driver.video_data)
|
||||||
/* In case refresh rate update forced non-block video. */
|
{
|
||||||
video_set_nonblock_state_func(false);
|
driver_set_monitor_refresh_rate(*setting->value.fraction);
|
||||||
|
/* In case refresh rate update forced non-block video. */
|
||||||
|
video_set_nonblock_state_func(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (!strcmp(setting->name, "video_aspect_ratio"))
|
else if (!strcmp(setting->name, "video_aspect_ratio"))
|
||||||
g_settings.video.aspect_ratio = *setting->value.fraction;
|
g_settings.video.aspect_ratio = *setting->value.fraction;
|
||||||
|
Loading…
Reference in New Issue
Block a user