summaryrefslogtreecommitdiff
path: root/noncore/multimedia/opieplayer2/lib.cpp
authorsimon <simon>2002-12-11 00:29:22 (UTC)
committer simon <simon>2002-12-11 00:29:22 (UTC)
commit7d5782ef4fd19498a141ed68c23145dcc6128146 (patch) (unidiff)
tree8cdbd360962b3fa161823fa88b43e9584b23a464 /noncore/multimedia/opieplayer2/lib.cpp
parent6c71f5ccd9506234a317d9ff3d119613c457e769 (diff)
downloadopie-7d5782ef4fd19498a141ed68c23145dcc6128146.zip
opie-7d5782ef4fd19498a141ed68c23145dcc6128146.tar.gz
opie-7d5782ef4fd19498a141ed68c23145dcc6128146.tar.bz2
- initialized xine in a background thread. much time is still spend in
skin loading though.
Diffstat (limited to 'noncore/multimedia/opieplayer2/lib.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/lib.cpp23
1 files changed, 20 insertions, 3 deletions
diff --git a/noncore/multimedia/opieplayer2/lib.cpp b/noncore/multimedia/opieplayer2/lib.cpp
index 99d5de6..20fd1e2 100644
--- a/noncore/multimedia/opieplayer2/lib.cpp
+++ b/noncore/multimedia/opieplayer2/lib.cpp
@@ -71,5 +71,7 @@ extern "C" {
71using namespace XINE; 71using namespace XINE;
72 72
73Lib::Lib( XineVideoWidget* widget ) { 73Lib::Lib( XineVideoWidget* widget )
74{
75 ThreadUtil::AutoLock lock( m_initGuard );
74 m_initialized = false; 76 m_initialized = false;
75 m_video = false; 77 m_video = false;
@@ -88,4 +90,9 @@ Lib::Lib( XineVideoWidget* widget ) {
88 } 90 }
89 91
92 start();
93}
94
95void Lib::run()
96{
90 initialize(); 97 initialize();
91} 98}
@@ -125,5 +132,8 @@ void Lib::initialize()
125 xine_event_create_listener_thread (m_queue, xine_event_handler, this); 132 xine_event_create_listener_thread (m_queue, xine_event_handler, this);
126 133
134 ThreadUtil::AutoLock lock( m_initGuard );
127 m_initialized = true; 135 m_initialized = true;
136
137 send( new ThreadUtil::ChannelMessage( InitializationMessageType ), OneWay );
128} 138}
129 139
@@ -285,10 +295,17 @@ void Lib::receiveMessage( ThreadUtil::ChannelMessage *msg, SendType sendType )
285{ 295{
286 assert( sendType == ThreadUtil::Channel::OneWay ); 296 assert( sendType == ThreadUtil::Channel::OneWay );
287 handleXineEvent( msg->type() ); 297 switch ( msg->type() ) {
298 case XineMessageType:
299 handleXineEvent( static_cast<XineMessage *>( msg )->xineEvent );
300 break;
301 case InitializationMessageType:
302 emit initialized();
303 break;
304 }
288 delete msg; 305 delete msg;
289} 306}
290 307
291void Lib::handleXineEvent( const xine_event_t* t ) { 308void Lib::handleXineEvent( const xine_event_t* t ) {
292 send( new ThreadUtil::ChannelMessage( t->type ), OneWay ); 309 send( new XineMessage( t->type ), OneWay );
293} 310}
294 311