summaryrefslogtreecommitdiff
authorzecke <zecke>2004-09-24 15:09:56 (UTC)
committer zecke <zecke>2004-09-24 15:09:56 (UTC)
commit8e903cd3ea735adf066e156462602987691a4c69 (patch) (side-by-side diff)
treeb05fe7cc6d46cbacdc47fe3f0411100076bc8a52
parent478b2ead47a09956cadfacb8f469fb2fdee5531c (diff)
downloadopie-8e903cd3ea735adf066e156462602987691a4c69.zip
opie-8e903cd3ea735adf066e156462602987691a4c69.tar.gz
opie-8e903cd3ea735adf066e156462602987691a4c69.tar.bz2
-Emit Progress from the xine Engine to Global::statusMessage
-Change ThreadUtil to pass data and const char* among threads
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/lib.cpp18
-rw-r--r--noncore/multimedia/opieplayer2/lib.h2
-rw-r--r--noncore/multimedia/opieplayer2/threadutil.cpp9
-rw-r--r--noncore/multimedia/opieplayer2/threadutil.h6
4 files changed, 24 insertions, 11 deletions
diff --git a/noncore/multimedia/opieplayer2/lib.cpp b/noncore/multimedia/opieplayer2/lib.cpp
index 8afb318..f1b9773 100644
--- a/noncore/multimedia/opieplayer2/lib.cpp
+++ b/noncore/multimedia/opieplayer2/lib.cpp
@@ -32,17 +32,17 @@
*/
#include "xinevideowidget.h"
#include "frame.h"
#include "lib.h"
/* OPIE */
#include <opie2/odebug.h>
-using namespace Opie::Core;
+#include <qpe/global.h>
/* QT */
#include <qtextstream.h>
#include <qdir.h>
#include <qgfx_qws.h>
/* STD */
#include <assert.h>
@@ -321,29 +321,39 @@ void Lib::setWidget( XineVideoWidget *widget )
resize ( m_wid-> size ( ) );
::null_set_mode( m_videoOutput, qt_screen->depth(), qt_screen->pixelType() );
m_wid->repaint();
}
void Lib::receiveMessage( ThreadUtil::ChannelMessage *msg, SendType sendType )
{
assert( sendType == ThreadUtil::Channel::OneWay );
- handleXineEvent( msg->type() );
+ handleXineEvent( msg->type(), msg->data(), msg->msg() );
delete msg;
}
void Lib::handleXineEvent( const xine_event_t* t ) {
- send( new ThreadUtil::ChannelMessage( t->type ), OneWay );
+ int prog = -1; const char* name = 0;
+ if ( t->type == XINE_EVENT_PROGRESS ) {
+ xine_progress_data_t *pt = static_cast<xine_progress_data_t*>( t->data );
+ prog = pt->percent;
+ name = pt->description;
}
-void Lib::handleXineEvent( int type ) {
+ send( new ThreadUtil::ChannelMessage( t->type, prog, name ), OneWay );
+}
+
+void Lib::handleXineEvent( int type, int data, const char* name ) {
assert( m_initialized );
if ( type == XINE_EVENT_UI_PLAYBACK_FINISHED ) {
emit stopped();
+ }else if ( type == XINE_EVENT_PROGRESS ) {
+ QString str = name == 0 ? QString::null : QString::fromUtf8( name );
+ Global::statusMessage( tr( "Progress: %1 %2" ).arg( name, data ) );;
}
}
void Lib::setShowVideo( bool video ) {
assert( m_initialized );
m_video = video;
diff --git a/noncore/multimedia/opieplayer2/lib.h b/noncore/multimedia/opieplayer2/lib.h
index 0ff14d0..dfddc2a 100644
--- a/noncore/multimedia/opieplayer2/lib.h
+++ b/noncore/multimedia/opieplayer2/lib.h
@@ -198,17 +198,17 @@ namespace XINE {
xine_t *m_xine;
xine_stream_t *m_stream;
xine_cfg_entry_t *m_config;
xine_vo_driver_t *m_videoOutput;
xine_ao_driver_t* m_audioOutput;
xine_event_queue_t *m_queue;
void handleXineEvent( const xine_event_t* t );
- void handleXineEvent( int type );
+ void handleXineEvent( int type, int data, const char* name );
void drawFrame( uint8_t* frame, int width, int height, int bytes );
// C -> C++ bridge for the event system
static void xine_event_handler( void* user_data, const xine_event_t* t);
static void xine_display_frame( void* user_data, uint8_t* frame ,
int width, int height, int bytes );
};
};
diff --git a/noncore/multimedia/opieplayer2/threadutil.cpp b/noncore/multimedia/opieplayer2/threadutil.cpp
index 6ed9853..b5cac61 100644
--- a/noncore/multimedia/opieplayer2/threadutil.cpp
+++ b/noncore/multimedia/opieplayer2/threadutil.cpp
@@ -264,21 +264,20 @@ void OnewayNotifier::wakeUp()
char c = 0;
if ( ::read( m_readFd, &c, 1 ) != 1 )
return;
emit awake();
}
-ChannelMessage::ChannelMessage( int type )
- : m_type( type ), m_isCall( false ), m_replied( false ),
- m_inEventHandler( false )
-{
-}
+ChannelMessage::ChannelMessage( int type, int data, const char* msg )
+ : m_type( type ), m_data( data ), m_msg( msg ),
+ m_isCall( false ), m_replied( false ), m_inEventHandler( false )
+{}
ChannelMessage::~ChannelMessage()
{
if ( m_guard.isLocked() )
m_guard.unlock();
}
void ChannelMessage::reply()
diff --git a/noncore/multimedia/opieplayer2/threadutil.h b/noncore/multimedia/opieplayer2/threadutil.h
index 2e83d3a..f97a18b 100644
--- a/noncore/multimedia/opieplayer2/threadutil.h
+++ b/noncore/multimedia/opieplayer2/threadutil.h
@@ -128,28 +128,32 @@ namespace ThreadUtil
class Channel;
class ChannelMessage
{
friend class Channel;
public:
- ChannelMessage( int type = -1 );
+ ChannelMessage( int type = -1, int data = -1, const char* msg = 0 );
virtual ~ChannelMessage();
int type() const { return m_type; }
+ int data() const { return m_data; }
+ const char* msg()const { return m_msg; }
void reply();
private:
ChannelMessage( const ChannelMessage & );
ChannelMessage &operator=( const ChannelMessage );
int m_type;
+ int m_data;
+ const char *m_msg;
bool m_isCall : 1;
bool m_replied : 1;
bool m_inEventHandler : 1;
Mutex m_guard;
WaitCondition m_condition;
};
class Channel : public QObject