summaryrefslogtreecommitdiff
path: root/noncore/multimedia/opieplayer2/lib.cpp
authorsimon <simon>2002-12-02 10:25:36 (UTC)
committer simon <simon>2002-12-02 10:25:36 (UTC)
commit4447c70039ba1a3104bf229628699f33b8608973 (patch) (side-by-side diff)
tree9810b07492a20f1ec9332da8c353469c8c120e2e /noncore/multimedia/opieplayer2/lib.cpp
parent2f11390d99fba4eefa330322e11280802fb6dc26 (diff)
downloadopie-4447c70039ba1a3104bf229628699f33b8608973.zip
opie-4447c70039ba1a3104bf229628699f33b8608973.tar.gz
opie-4447c70039ba1a3104bf229628699f33b8608973.tar.bz2
- put a thread pipe between the xine callback handler and the receiver
on qt side, to avoid problems like repaints from within a non-gui thread
Diffstat (limited to 'noncore/multimedia/opieplayer2/lib.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/lib.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/noncore/multimedia/opieplayer2/lib.cpp b/noncore/multimedia/opieplayer2/lib.cpp
index 19b64e8..1ac9809 100644
--- a/noncore/multimedia/opieplayer2/lib.cpp
+++ b/noncore/multimedia/opieplayer2/lib.cpp
@@ -42,6 +42,8 @@
#include <qgfx_qws.h>
#include <qdirectpainter_qws.h>
+#include <assert.h>
+
#include "xinevideowidget.h"
#include "frame.h"
#include "lib.h"
@@ -219,8 +221,19 @@ int Lib::error() {
return xine_get_error( m_stream );
};
+void Lib::receiveMessage( ThreadUtil::ChannelMessage *msg, SendType sendType )
+{
+ assert( sendType == ThreadUtil::Channel::OneWay );
+ handleXineEvent( msg->type() );
+ delete msg;
+}
+
void Lib::handleXineEvent( const xine_event_t* t ) {
- if ( t->type == XINE_EVENT_UI_PLAYBACK_FINISHED ) {
+ send( new ThreadUtil::ChannelMessage( t->type ), OneWay );
+}
+
+void Lib::handleXineEvent( int type ) {
+ if ( type == XINE_EVENT_UI_PLAYBACK_FINISHED ) {
emit stopped();
}
}