author | zecke <zecke> | 2004-09-24 15:09:56 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-09-24 15:09:56 (UTC) |
commit | 8e903cd3ea735adf066e156462602987691a4c69 (patch) (unidiff) | |
tree | b05fe7cc6d46cbacdc47fe3f0411100076bc8a52 /noncore/multimedia | |
parent | 478b2ead47a09956cadfacb8f469fb2fdee5531c (diff) | |
download | opie-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
-rw-r--r-- | noncore/multimedia/opieplayer2/lib.cpp | 18 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer2/lib.h | 2 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer2/threadutil.cpp | 9 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer2/threadutil.h | 6 |
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 | |||
@@ -34,13 +34,13 @@ | |||
34 | #include "xinevideowidget.h" | 34 | #include "xinevideowidget.h" |
35 | #include "frame.h" | 35 | #include "frame.h" |
36 | #include "lib.h" | 36 | #include "lib.h" |
37 | 37 | ||
38 | /* OPIE */ | 38 | /* OPIE */ |
39 | #include <opie2/odebug.h> | 39 | #include <opie2/odebug.h> |
40 | using namespace Opie::Core; | 40 | #include <qpe/global.h> |
41 | 41 | ||
42 | /* QT */ | 42 | /* QT */ |
43 | #include <qtextstream.h> | 43 | #include <qtextstream.h> |
44 | #include <qdir.h> | 44 | #include <qdir.h> |
45 | #include <qgfx_qws.h> | 45 | #include <qgfx_qws.h> |
46 | 46 | ||
@@ -323,25 +323,35 @@ void Lib::setWidget( XineVideoWidget *widget ) | |||
323 | m_wid->repaint(); | 323 | m_wid->repaint(); |
324 | } | 324 | } |
325 | 325 | ||
326 | void Lib::receiveMessage( ThreadUtil::ChannelMessage *msg, SendType sendType ) | 326 | void Lib::receiveMessage( ThreadUtil::ChannelMessage *msg, SendType sendType ) |
327 | { | 327 | { |
328 | assert( sendType == ThreadUtil::Channel::OneWay ); | 328 | assert( sendType == ThreadUtil::Channel::OneWay ); |
329 | handleXineEvent( msg->type() ); | 329 | handleXineEvent( msg->type(), msg->data(), msg->msg() ); |
330 | delete msg; | 330 | delete msg; |
331 | } | 331 | } |
332 | 332 | ||
333 | void Lib::handleXineEvent( const xine_event_t* t ) { | 333 | void Lib::handleXineEvent( const xine_event_t* t ) { |
334 | send( new ThreadUtil::ChannelMessage( t->type ), OneWay ); | 334 | int prog = -1; const char* name = 0; |
335 | if ( t->type == XINE_EVENT_PROGRESS ) { | ||
336 | xine_progress_data_t *pt = static_cast<xine_progress_data_t*>( t->data ); | ||
337 | prog = pt->percent; | ||
338 | name = pt->description; | ||
335 | } | 339 | } |
336 | 340 | ||
337 | void Lib::handleXineEvent( int type ) { | 341 | send( new ThreadUtil::ChannelMessage( t->type, prog, name ), OneWay ); |
342 | } | ||
343 | |||
344 | void Lib::handleXineEvent( int type, int data, const char* name ) { | ||
338 | assert( m_initialized ); | 345 | assert( m_initialized ); |
339 | 346 | ||
340 | if ( type == XINE_EVENT_UI_PLAYBACK_FINISHED ) { | 347 | if ( type == XINE_EVENT_UI_PLAYBACK_FINISHED ) { |
341 | emit stopped(); | 348 | emit stopped(); |
349 | }else if ( type == XINE_EVENT_PROGRESS ) { | ||
350 | QString str = name == 0 ? QString::null : QString::fromUtf8( name ); | ||
351 | Global::statusMessage( tr( "Progress: %1 %2" ).arg( name, data ) );; | ||
342 | } | 352 | } |
343 | } | 353 | } |
344 | 354 | ||
345 | 355 | ||
346 | void Lib::setShowVideo( bool video ) { | 356 | void Lib::setShowVideo( bool video ) { |
347 | assert( m_initialized ); | 357 | assert( m_initialized ); |
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 | |||
@@ -200,13 +200,13 @@ namespace XINE { | |||
200 | xine_cfg_entry_t *m_config; | 200 | xine_cfg_entry_t *m_config; |
201 | xine_vo_driver_t *m_videoOutput; | 201 | xine_vo_driver_t *m_videoOutput; |
202 | xine_ao_driver_t* m_audioOutput; | 202 | xine_ao_driver_t* m_audioOutput; |
203 | xine_event_queue_t *m_queue; | 203 | xine_event_queue_t *m_queue; |
204 | 204 | ||
205 | void handleXineEvent( const xine_event_t* t ); | 205 | void handleXineEvent( const xine_event_t* t ); |
206 | void handleXineEvent( int type ); | 206 | void handleXineEvent( int type, int data, const char* name ); |
207 | void drawFrame( uint8_t* frame, int width, int height, int bytes ); | 207 | void drawFrame( uint8_t* frame, int width, int height, int bytes ); |
208 | // C -> C++ bridge for the event system | 208 | // C -> C++ bridge for the event system |
209 | static void xine_event_handler( void* user_data, const xine_event_t* t); | 209 | static void xine_event_handler( void* user_data, const xine_event_t* t); |
210 | static void xine_display_frame( void* user_data, uint8_t* frame , | 210 | static void xine_display_frame( void* user_data, uint8_t* frame , |
211 | int width, int height, int bytes ); | 211 | int width, int height, int bytes ); |
212 | }; | 212 | }; |
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 | |||
@@ -266,17 +266,16 @@ void OnewayNotifier::wakeUp() | |||
266 | if ( ::read( m_readFd, &c, 1 ) != 1 ) | 266 | if ( ::read( m_readFd, &c, 1 ) != 1 ) |
267 | return; | 267 | return; |
268 | 268 | ||
269 | emit awake(); | 269 | emit awake(); |
270 | } | 270 | } |
271 | 271 | ||
272 | ChannelMessage::ChannelMessage( int type ) | 272 | ChannelMessage::ChannelMessage( int type, int data, const char* msg ) |
273 | : m_type( type ), m_isCall( false ), m_replied( false ), | 273 | : m_type( type ), m_data( data ), m_msg( msg ), |
274 | m_inEventHandler( false ) | 274 | m_isCall( false ), m_replied( false ), m_inEventHandler( false ) |
275 | { | 275 | {} |
276 | } | ||
277 | 276 | ||
278 | ChannelMessage::~ChannelMessage() | 277 | ChannelMessage::~ChannelMessage() |
279 | { | 278 | { |
280 | if ( m_guard.isLocked() ) | 279 | if ( m_guard.isLocked() ) |
281 | m_guard.unlock(); | 280 | m_guard.unlock(); |
282 | } | 281 | } |
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 | |||
@@ -130,24 +130,28 @@ namespace ThreadUtil | |||
130 | class Channel; | 130 | class Channel; |
131 | 131 | ||
132 | class ChannelMessage | 132 | class ChannelMessage |
133 | { | 133 | { |
134 | friend class Channel; | 134 | friend class Channel; |
135 | public: | 135 | public: |
136 | ChannelMessage( int type = -1 ); | 136 | ChannelMessage( int type = -1, int data = -1, const char* msg = 0 ); |
137 | virtual ~ChannelMessage(); | 137 | virtual ~ChannelMessage(); |
138 | 138 | ||
139 | int type() const { return m_type; } | 139 | int type() const { return m_type; } |
140 | int data() const { return m_data; } | ||
141 | const char* msg()const { return m_msg; } | ||
140 | 142 | ||
141 | void reply(); | 143 | void reply(); |
142 | 144 | ||
143 | private: | 145 | private: |
144 | ChannelMessage( const ChannelMessage & ); | 146 | ChannelMessage( const ChannelMessage & ); |
145 | ChannelMessage &operator=( const ChannelMessage ); | 147 | ChannelMessage &operator=( const ChannelMessage ); |
146 | 148 | ||
147 | int m_type; | 149 | int m_type; |
150 | int m_data; | ||
151 | const char *m_msg; | ||
148 | bool m_isCall : 1; | 152 | bool m_isCall : 1; |
149 | bool m_replied : 1; | 153 | bool m_replied : 1; |
150 | bool m_inEventHandler : 1; | 154 | bool m_inEventHandler : 1; |
151 | Mutex m_guard; | 155 | Mutex m_guard; |
152 | WaitCondition m_condition; | 156 | WaitCondition m_condition; |
153 | }; | 157 | }; |