Some fixes here and there. Do not build FFmpeg by default.

This commit is contained in:
Themaister 2011-01-23 13:34:41 +01:00
parent 9cf25dcb67
commit c4f78912a1
4 changed files with 26 additions and 12 deletions

View File

@ -43,7 +43,6 @@ msg_queue_t *msg_queue_new(size_t size)
queue->size = size + 1; queue->size = size + 1;
queue->elems = calloc(queue->size, sizeof(struct queue_elem*)); queue->elems = calloc(queue->size, sizeof(struct queue_elem*));
// Allocate one extra for scratch space when finding lowest prio elem.
if (!queue->elems) if (!queue->elems)
{ {
@ -56,16 +55,8 @@ 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)
{ {
for (size_t i = 1; i < queue->ptr; i++) msg_queue_clear(queue);
{
if (queue->elems[i])
{
free(queue->elems[i]->msg);
free(queue->elems[i]);
}
}
free(queue->elems); free(queue->elems);
free(queue->tmp_msg);
free(queue); 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) const char *msg_queue_pull(msg_queue_t *queue)
{ {
if (queue->ptr == 1) // Nothing in queue. :( if (queue->ptr == 1) // Nothing in queue. :(
@ -109,6 +116,7 @@ const char *msg_queue_pull(msg_queue_t *queue)
return front->msg; return front->msg;
else else
{ {
free(queue->tmp_msg);
queue->tmp_msg = front->msg; queue->tmp_msg = front->msg;
front->msg = NULL; front->msg = NULL;

View File

@ -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. // Pulls highest prio message in queue. Returns NULL if no message in queue.
const char *msg_queue_pull(msg_queue_t *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); void msg_queue_free(msg_queue_t *queue);
#endif #endif

View File

@ -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. # $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_enable DYNAMIC "Enable dynamic loading of libsnes library." no
add_command_line_string LIBSNES "libsnes library used" "-lsnes" 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 FILTER "Disable CPU filter support" yes
add_command_line_enable CONFIGFILE "Disable support for config file" yes add_command_line_enable CONFIGFILE "Disable support for config file" yes
add_command_line_enable CG "Enable Cg shader support" auto add_command_line_enable CG "Enable Cg shader support" auto

View File

@ -97,6 +97,8 @@ static void video_frame(const uint16_t *data, unsigned width, unsigned height)
} }
#endif #endif
const char *msg = msg_queue_pull(g_extern.msg_queue);
#ifdef HAVE_FILTER #ifdef HAVE_FILTER
uint16_t output_filter[width * height * 4 * 4]; uint16_t output_filter[width * height * 4 * 4];
uint16_t output[width * height]; 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) if (g_settings.video.filter != FILTER_NONE)
process_frame(output, data, width, height); process_frame(output, data, width, height);
const char *msg = msg_queue_pull(g_extern.msg_queue);
switch (g_settings.video.filter) 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); bool should_savestate = driver.input->key_pressed(driver.input_data, SSNES_SAVE_STATE_KEY);
if (should_savestate && !old_should_savestate) if (should_savestate && !old_should_savestate)
{ {
msg_queue_clear(g_extern.msg_queue);
msg_queue_push(g_extern.msg_queue, "Saving state! ^_^", 1, 180); msg_queue_push(g_extern.msg_queue, "Saving state! ^_^", 1, 180);
save_state(g_extern.savestate_name); 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); bool should_loadstate = driver.input->key_pressed(driver.input_data, SSNES_LOAD_STATE_KEY);
if (!should_savestate && should_loadstate && !old_should_loadstate) 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); msg_queue_push(g_extern.msg_queue, "Loading state! ^_^", 1, 180);
load_state(g_extern.savestate_name); load_state(g_extern.savestate_name);
} }