summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/lib.cpp13
-rw-r--r--noncore/multimedia/opieplayer2/lib.h2
-rw-r--r--noncore/multimedia/opieplayer2/xinecontrol.cpp3
3 files changed, 16 insertions, 2 deletions
diff --git a/noncore/multimedia/opieplayer2/lib.cpp b/noncore/multimedia/opieplayer2/lib.cpp
index cef46a1..84194b7 100644
--- a/noncore/multimedia/opieplayer2/lib.cpp
+++ b/noncore/multimedia/opieplayer2/lib.cpp
@@ -98,9 +98,10 @@ Lib::Lib( InitializationMode initMode, XineVideoWidget* widget )
}
void Lib::run()
{
- assert( false );
+ initialize();
+ m_initialized = true;
}
void Lib::initialize()
{
@@ -282,8 +283,18 @@ int Lib::error() const {
return xine_get_error( m_stream );
};
+void Lib::ensureInitialized()
+{
+ if ( m_initialized )
+ return;
+
+ qDebug( "waiting for initialization thread to finish" );
+ wait();
+ qDebug( "initialization thread finished!" );
+}
+
void Lib::receiveMessage( ThreadUtil::ChannelMessage *msg, SendType sendType )
{
assert( sendType == ThreadUtil::Channel::OneWay );
handleXineEvent( msg->type() );
diff --git a/noncore/multimedia/opieplayer2/lib.h b/noncore/multimedia/opieplayer2/lib.h
index 9dd7385..6b67f67 100644
--- a/noncore/multimedia/opieplayer2/lib.h
+++ b/noncore/multimedia/opieplayer2/lib.h
@@ -176,8 +176,10 @@ namespace XINE {
* XINE_ERROR_DEMUXER_FAILED 3
*/
int error() const;
+ void ensureInitialized();
+
signals:
void stopped();
diff --git a/noncore/multimedia/opieplayer2/xinecontrol.cpp b/noncore/multimedia/opieplayer2/xinecontrol.cpp
index 1aa3daa..7c54499 100644
--- a/noncore/multimedia/opieplayer2/xinecontrol.cpp
+++ b/noncore/multimedia/opieplayer2/xinecontrol.cpp
@@ -44,9 +44,8 @@ XineControl::XineControl( XineVideoWidget *xineWidget,
MediaPlayerState &_mediaPlayerState,
QObject *parent, const char *name )
: QObject( parent, name ), mediaPlayerState( _mediaPlayerState ), xineVideoWidget( xineWidget )
{
-
libXine = new XINE::Lib( XINE::Lib::InitializeImmediately, xineWidget );
init();
}
@@ -55,8 +54,10 @@ XineControl::XineControl( XINE::Lib *xine, XineVideoWidget *xineWidget,
MediaPlayerState &_mediaPlayerState,
QObject *parent, const char *name )
: QObject( parent, name ), libXine( xine ), mediaPlayerState( _mediaPlayerState ), xineVideoWidget( xineWidget )
{
+ xine->ensureInitialized();
+
init();
}
void XineControl::init()