# HG changeset patch # User chainsaw # Date 1131915742 28800 # Node ID 15c2210499ea3658625647c728129bd424852d40 # Parent d71f938ff725fbd36730b040a7b4cdcfcb02f90b [svn] Use GThread instead of pthread. diff -r d71f938ff725 -r 15c2210499ea Plugins/Input/wma/wma.c --- a/Plugins/Input/wma/wma.c Sun Nov 13 13:02:10 2005 -0800 +++ b/Plugins/Input/wma/wma.c Sun Nov 13 13:02:22 2005 -0800 @@ -20,19 +20,14 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#ifdef HAVE_MALLOC_H -#include -#endif -#include - #include #include -#include -#include -#include -#include -#include +#include "audacious/plugin.h" +#include "libaudacious/configfile.h" +#include "libaudacious/util.h" +#include "libaudacious/titlestring.h" +#include "libaudacious/vfs.h" #ifdef HAVE_CONFIG_H # include "config.h" @@ -52,8 +47,8 @@ static gboolean wma_eq_on = 0; static int wma_seekpos = -1; static int wma_st_buff, wma_idx; -static pthread_t wma_decode_thread; -static pthread_mutex_t wma_mutex = PTHREAD_MUTEX_INITIALIZER; +static GThread *wma_decode_thread; +GStaticMutex wma_mutex = G_STATIC_MUTEX_INIT; static AVCodecContext *c = NULL; static AVFormatContext *ic = NULL; static uint8_t *wma_outbuf, *wma_s_outbuf; @@ -134,8 +129,7 @@ static void wma_init(void) { - - avcodec_init(); + avcodec_init(); avcodec_register_all(); av_register_all(); init_iir(); @@ -155,7 +149,6 @@ static void wma_do_pause(short p) { - wma_pause = p; wma_ip.output->pause(wma_pause); } @@ -264,7 +257,6 @@ static guint get_song_time(AVFormatContext *in) { - if (in->duration) return in->duration/1000; else @@ -326,7 +318,7 @@ int out_size, size, len; AVPacket pkt; - pthread_mutex_lock(&wma_mutex); + g_static_mutex_lock(&wma_mutex); while (wma_decode) { if (wma_seekpos != -1) { @@ -386,17 +378,22 @@ if (ic) av_close_input_file(ic); - pthread_mutex_unlock(&wma_mutex); - pthread_exit(NULL); + g_static_mutex_unlock(&wma_mutex); + g_thread_exit(NULL); + return(NULL); } static void wma_play_file(char *filename) { + return; + /* + Need to see if this is the cause of the big explosion + AVCodec *codec; - + if (av_open_input_file(&ic, filename, NULL, 0, NULL) < 0) return; - + for (wma_idx = 0; wma_idx < ic->nb_streams; wma_idx++) { c = &ic->streams[wma_idx]->codec; @@ -421,14 +418,15 @@ return; wma_st_buff = ST_BUFF; - + wma_ip.set_info(wsong_title, wsong_time, c->bit_rate, c->sample_rate, c->channels); wma_s_outbuf = g_malloc0(wma_st_buff); wma_outbuf = g_malloc0(AVCODEC_MAX_AUDIO_FRAME_SIZE); wma_seekpos = -1; wma_decode = 1; - pthread_create(&wma_decode_thread, NULL, wma_play_loop, NULL); + wma_decode_thread = g_thread_create((GThreadFunc)wma_play_loop, NULL, TRUE, NULL); + */ } static void wma_stop(void) @@ -438,7 +436,7 @@ if (wma_pause) wma_do_pause(0); - pthread_join(wma_decode_thread, NULL); + g_thread_join(wma_decode_thread); wma_ip.output->close_audio(); }