summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/threadutil.cpp17
-rw-r--r--noncore/multimedia/opieplayer2/threadutil.h6
2 files changed, 11 insertions, 12 deletions
diff --git a/noncore/multimedia/opieplayer2/threadutil.cpp b/noncore/multimedia/opieplayer2/threadutil.cpp
index 7a9e1a4..ff38b1e 100644
--- a/noncore/multimedia/opieplayer2/threadutil.cpp
+++ b/noncore/multimedia/opieplayer2/threadutil.cpp
@@ -134,4 +134,8 @@ struct Thread::Data
WaitCondition finishCondition;
+
+ Thread *thr;
+
+ void run() { thr->run(); }
};
@@ -150,12 +154,12 @@ static void terminate_thread( void *arg )
}
-void *_threadutil_start_thread( void *arg )
+static void *start_thread( void *arg )
{
- Thread *thr = ( Thread* )arg;
+ Thread::Data *data = ( Thread::Data* )arg;
- pthread_cleanup_push( terminate_thread, thr->d );
+ pthread_cleanup_push( terminate_thread, data );
- thr->d->isRunning = true;
- thr->run();
+ data->isRunning = true;
+ data->run();
pthread_cleanup_pop( true );
@@ -170,4 +174,5 @@ Thread::Thread()
: d( new Data )
{
+ d->thr = this;
}
@@ -190,5 +195,5 @@ void Thread::start()
pthread_attr_init( &attributes );
pthread_attr_setscope( &attributes, PTHREAD_SCOPE_SYSTEM );
- int err = pthread_create( &d->self, &attributes, _threadutil_start_thread, ( void* )this );
+ int err = pthread_create( &d->self, &attributes, start_thread, ( void* )d );
if ( err != 0 ) {
qDebug( "ThreadUtil::Thread::start() : can't create thread: %s", strerror( err ) );
diff --git a/noncore/multimedia/opieplayer2/threadutil.h b/noncore/multimedia/opieplayer2/threadutil.h
index 21ae6b2..2fd0c68 100644
--- a/noncore/multimedia/opieplayer2/threadutil.h
+++ b/noncore/multimedia/opieplayer2/threadutil.h
@@ -27,9 +27,4 @@
class QSocketNotifier;
-extern "C"
-{
- void *_threadutil_start_thread( void* );
-}
-
namespace ThreadUtil
{
@@ -89,5 +84,4 @@ namespace ThreadUtil
class Thread
{
- friend void *::_threadutil_start_thread( void* );
public:
struct Data;