From c4f78912a1646cfa32d75af63643802351196abe Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 23 Jan 2011 13:34:41 +0100 Subject: [PATCH] Some fixes here and there. Do not build FFmpeg by default. --- message.c | 28 ++++++++++++++++++---------- message.h | 3 +++ qb/config.params.sh | 2 +- ssnes.c | 5 ++++- 4 files changed, 26 insertions(+), 12 deletions(-) diff --git a/message.c b/message.c index 614d63a749..3e8a72472d 100644 --- a/message.c +++ b/message.c @@ -43,7 +43,6 @@ msg_queue_t *msg_queue_new(size_t size) queue->size = size + 1; queue->elems = calloc(queue->size, sizeof(struct queue_elem*)); - // Allocate one extra for scratch space when finding lowest prio elem. if (!queue->elems) { @@ -56,16 +55,8 @@ msg_queue_t *msg_queue_new(size_t size) void msg_queue_free(msg_queue_t *queue) { - for (size_t i = 1; i < queue->ptr; i++) - { - if (queue->elems[i]) - { - free(queue->elems[i]->msg); - free(queue->elems[i]); - } - } + msg_queue_clear(queue); free(queue->elems); - free(queue->tmp_msg); free(queue); } @@ -98,6 +89,22 @@ void msg_queue_push(msg_queue_t *queue, const char *msg, unsigned prio, unsigned } } +void msg_queue_clear(msg_queue_t *queue) +{ + for (size_t i = 1; i < queue->ptr; i++) + { + if (queue->elems[i]) + { + free(queue->elems[i]->msg); + free(queue->elems[i]); + queue->elems[i] = NULL; + } + } + queue->ptr = 1; + free(queue->tmp_msg); + queue->tmp_msg = NULL; +} + const char *msg_queue_pull(msg_queue_t *queue) { if (queue->ptr == 1) // Nothing in queue. :( @@ -109,6 +116,7 @@ const char *msg_queue_pull(msg_queue_t *queue) return front->msg; else { + free(queue->tmp_msg); queue->tmp_msg = front->msg; front->msg = NULL; diff --git a/message.h b/message.h index a5bfca5bcb..2db90af816 100644 --- a/message.h +++ b/message.h @@ -33,6 +33,9 @@ void msg_queue_push(msg_queue_t *queue, const char *msg, unsigned prio, unsigned // Pulls highest prio message in queue. Returns NULL if no message in queue. const char *msg_queue_pull(msg_queue_t *queue); +// Clear out everything in queue. +void msg_queue_clear(msg_queue_t *queue); + void msg_queue_free(msg_queue_t *queue); #endif diff --git a/qb/config.params.sh b/qb/config.params.sh index f86b0326d6..a297bf01fd 100644 --- a/qb/config.params.sh +++ b/qb/config.params.sh @@ -9,7 +9,7 @@ PACKAGE_VERSION=0.1 # $3: Default arg. auto implies that HAVE_ALSA will be set according to library checks later on. add_command_line_enable DYNAMIC "Enable dynamic loading of libsnes library." no add_command_line_string LIBSNES "libsnes library used" "-lsnes" -add_command_line_enable FFMPEG "Enable FFmpeg recording support" auto +add_command_line_enable FFMPEG "Enable FFmpeg recording support" no add_command_line_enable FILTER "Disable CPU filter support" yes add_command_line_enable CONFIGFILE "Disable support for config file" yes add_command_line_enable CG "Enable Cg shader support" auto diff --git a/ssnes.c b/ssnes.c index dbefd7bce3..b6d9945db3 100644 --- a/ssnes.c +++ b/ssnes.c @@ -97,6 +97,8 @@ static void video_frame(const uint16_t *data, unsigned width, unsigned height) } #endif + const char *msg = msg_queue_pull(g_extern.msg_queue); + #ifdef HAVE_FILTER uint16_t output_filter[width * height * 4 * 4]; uint16_t output[width * height]; @@ -104,7 +106,6 @@ static void video_frame(const uint16_t *data, unsigned width, unsigned height) if (g_settings.video.filter != FILTER_NONE) process_frame(output, data, width, height); - const char *msg = msg_queue_pull(g_extern.msg_queue); switch (g_settings.video.filter) { @@ -676,6 +677,7 @@ int main(int argc, char *argv[]) bool should_savestate = driver.input->key_pressed(driver.input_data, SSNES_SAVE_STATE_KEY); if (should_savestate && !old_should_savestate) { + msg_queue_clear(g_extern.msg_queue); msg_queue_push(g_extern.msg_queue, "Saving state! ^_^", 1, 180); save_state(g_extern.savestate_name); } @@ -685,6 +687,7 @@ int main(int argc, char *argv[]) bool should_loadstate = driver.input->key_pressed(driver.input_data, SSNES_LOAD_STATE_KEY); if (!should_savestate && should_loadstate && !old_should_loadstate) { + msg_queue_clear(g_extern.msg_queue); msg_queue_push(g_extern.msg_queue, "Loading state! ^_^", 1, 180); load_state(g_extern.savestate_name); }