# HG changeset patch # User chainsaw # Date 1134779073 28800 # Node ID 84b0ee2970d90851ebcdec23591ce2feca375dd7 # Parent 9b191695629c91c5ba0121d746c68d9ff4f036fd [svn] GThreadify input plugin. diff -r 9b191695629c -r 84b0ee2970d9 Plugins/Input/musepack/libmpc.cpp --- a/Plugins/Input/musepack/libmpc.cpp Fri Dec 16 16:08:46 2005 -0800 +++ b/Plugins/Input/musepack/libmpc.cpp Fri Dec 16 16:24:33 2005 -0800 @@ -25,7 +25,7 @@ mpcGetTime, //Get Time [CALLBACK] NULL, //Get Volume [UNUSED] NULL, //Set Volume [UNUSED] - mpcClosePlugin, //Close Plugin [CALLBACK] + NULL, //Close Plugin [UNUSED] NULL, //Obsolete [UNUSED] NULL, //Visual plugins add_vis_pcm(int time, AFormat fmt, int nch, int length, void *ptr) NULL, //Set Info Settings set_info(char *title, int length, int rate, int freq, int nch) @@ -47,18 +47,11 @@ static MpcDecoder mpcDecoder = {0}; static TrackInfo track = {0}; -static pthread_t threadHandle; -static pthread_attr_t threadAttr; -static pthread_mutex_t threadMutex; -static pthread_mutexattr_t threadMutexAttr; +static GThread *threadHandle; +GStaticMutex threadMutex = G_STATIC_MUTEX_INIT; static void mpcOpenPlugin() { - pthread_mutexattr_init(&threadMutexAttr); - pthread_mutex_init(&threadMutex, &threadMutexAttr); - pthread_attr_init(&threadAttr); - pthread_attr_setstacksize(&threadAttr, FORCED_THREAD_STACKSIZE); - ConfigDb *cfg; cfg = bmp_cfg_db_open(); bmp_cfg_db_get_bool(cfg, "musepack", "clipPrevention", &pluginConfig.clipPrevention); @@ -222,7 +215,7 @@ mpcDecoder.isAlive = true; mpcDecoder.isOutput = false; mpcDecoder.isPause = false; - pthread_create(&threadHandle, &threadAttr, decodeStream, (void *) g_strdup(p_Filename)); + threadHandle = g_thread_create(GThreadFunc(decodeStream), (void *) g_strdup(p_Filename), TRUE, NULL); } static void mpcStop() @@ -230,7 +223,7 @@ setAlive(false); if (threadHandle) { - pthread_join(threadHandle, NULL); + g_thread_join(threadHandle); if (mpcDecoder.isOutput) { MpcPlugin.output->buffer_free(); @@ -269,13 +262,6 @@ return MpcPlugin.output->output_time(); } -static void mpcClosePlugin() -{ - pthread_mutex_destroy(&threadMutex); - pthread_mutexattr_destroy(&threadMutexAttr); - pthread_attr_destroy(&threadAttr); -} - static void mpcGetSongInfo(char* p_Filename, char** p_Title, int* p_Length) { FILE* input = fopen(p_Filename, "rb"); @@ -667,7 +653,7 @@ free(track.display); track.display = NULL; } - pthread_exit(NULL); + g_thread_exit(NULL); return 0; } @@ -823,12 +809,12 @@ inline static void lockAcquire() { - pthread_mutex_lock(&threadMutex); + g_static_mutex_lock(&threadMutex); } inline static void lockRelease() { - pthread_mutex_unlock(&threadMutex); + g_static_mutex_unlock(&threadMutex); } inline static bool isAlive() diff -r 9b191695629c -r 84b0ee2970d9 Plugins/Input/musepack/libmpc.h --- a/Plugins/Input/musepack/libmpc.h Fri Dec 16 16:08:46 2005 -0800 +++ b/Plugins/Input/musepack/libmpc.h Fri Dec 16 16:24:33 2005 -0800 @@ -14,7 +14,6 @@ #include #include #include -#include #include #include @@ -108,7 +107,6 @@ static void mpcSeek(int); static void mpcSetEq(int, float, float*); static int mpcGetTime(); -static void mpcClosePlugin(); static void mpcGetSongInfo(char*, char**, int*); static void freeTags(MpcInfo&); static MpcInfo getTags(const char*);