summaryrefslogtreecommitdiff
authorsimon <simon>2002-12-11 11:40:20 (UTC)
committer simon <simon>2002-12-11 11:40:20 (UTC)
commit03ac4af4d6014bbd46b12d5fe89ee2cc73941080 (patch) (side-by-side diff)
treef88296c20f73e7e46d03daff3000ef34acd31bb0
parent9431b69a1efab055c28c77e780df012b0a476a57 (diff)
downloadopie-03ac4af4d6014bbd46b12d5fe89ee2cc73941080.zip
opie-03ac4af4d6014bbd46b12d5fe89ee2cc73941080.tar.gz
opie-03ac4af4d6014bbd46b12d5fe89ee2cc73941080.tar.bz2
- slight simplification of XineControl constructor
- fixed a race between the video resizing and the xine initialization
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/mediaplayer.cpp2
-rw-r--r--noncore/multimedia/opieplayer2/xinecontrol.cpp16
-rw-r--r--noncore/multimedia/opieplayer2/xinecontrol.h6
-rw-r--r--noncore/multimedia/opieplayer2/xinevideowidget.cpp27
-rw-r--r--noncore/multimedia/opieplayer2/xinevideowidget.h4
5 files changed, 37 insertions, 18 deletions
diff --git a/noncore/multimedia/opieplayer2/mediaplayer.cpp b/noncore/multimedia/opieplayer2/mediaplayer.cpp
index 0d9a5b8..c230d6f 100644
--- a/noncore/multimedia/opieplayer2/mediaplayer.cpp
+++ b/noncore/multimedia/opieplayer2/mediaplayer.cpp
@@ -361,13 +361,13 @@ void MediaPlayer::recreateAudioAndVideoWidgets()
connect( videoUI, SIGNAL( moreClicked() ), this, SLOT( startIncreasingVolume() ) );
connect( videoUI, SIGNAL( lessClicked() ), this, SLOT( startDecreasingVolume() ) );
connect( videoUI, SIGNAL( moreReleased() ), this, SLOT( stopChangingVolume() ) );
connect( videoUI, SIGNAL( lessReleased() ), this, SLOT( stopChangingVolume() ) );
- xineControl = new XineControl( videoUI, videoUI->vidWidget(), mediaPlayerState );
+ xineControl = new XineControl( videoUI->vidWidget(), mediaPlayerState );
connect( xineControl, SIGNAL( initialized() ),
&mediaPlayerState, SLOT( setBackendInitialized() ) );
}
void MediaPlayer::reloadSkins()
{
diff --git a/noncore/multimedia/opieplayer2/xinecontrol.cpp b/noncore/multimedia/opieplayer2/xinecontrol.cpp
index 14e71d9..e791c3b 100644
--- a/noncore/multimedia/opieplayer2/xinecontrol.cpp
+++ b/noncore/multimedia/opieplayer2/xinecontrol.cpp
@@ -35,30 +35,30 @@
#include <qtimer.h>
#include <qmessagebox.h>
#include <qpe/qcopenvelope_qws.h>
#include <qpe/qpeapplication.h>
#include "xinecontrol.h"
#include "mediaplayerstate.h"
+#include "xinevideowidget.h"
-XineControl::XineControl( QWidget *videoContainerWidget, XineVideoWidget *xineWidget,
+XineControl::XineControl( XineVideoWidget *xineWidget,
MediaPlayerState &_mediaPlayerState,
QObject *parent, const char *name )
- : QObject( parent, name ), mediaPlayerState( _mediaPlayerState )
+ : QObject( parent, name ), mediaPlayerState( _mediaPlayerState ), xineVideoWidget( xineWidget )
{
libXine = new XINE::Lib( xineWidget );
- connect ( videoContainerWidget, SIGNAL( videoResized( const QSize & )), this, SLOT( videoResized ( const QSize & ) ) );
connect( &mediaPlayerState, SIGNAL( pausedToggled( bool ) ), this, SLOT( pause( bool ) ) );
connect( this, SIGNAL( positionChanged( long ) ), &mediaPlayerState, SLOT( updatePosition( long ) ) );
connect( &mediaPlayerState, SIGNAL( playingToggled( bool ) ), this, SLOT( stop( bool ) ) );
connect( &mediaPlayerState, SIGNAL( fullscreenToggled( bool ) ), this, SLOT( setFullscreen( bool ) ) );
connect( &mediaPlayerState, SIGNAL( positionChanged( long ) ), this, SLOT( seekTo( long ) ) );
connect( &mediaPlayerState, SIGNAL( videoGammaChanged( int ) ), this, SLOT( setGamma( int ) ) );
connect( libXine, SIGNAL( stopped() ), this, SLOT( nextMedia() ) );
- connect( libXine, SIGNAL( initialized() ), this, SIGNAL( initialized() ) );
+ connect( libXine, SIGNAL( initialized() ), this, SLOT( xineInitialized() ) );
disabledSuspendScreenSaver = FALSE;
}
XineControl::~XineControl() {
#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
@@ -123,12 +123,20 @@ void XineControl::nextMedia() {
}
void XineControl::setGamma( int value ) {
libXine->setGamma( value );
}
+void XineControl::xineInitialized()
+{
+ connect( xineVideoWidget, SIGNAL( videoResized( const QSize & ) ), this, SLOT( videoResized ( const QSize & ) ) );
+ libXine->resize( xineVideoWidget->videoSize() );
+
+ emit initialized();
+}
+
void XineControl::stop( bool isSet ) {
if ( !isSet ) {
libXine->stop();
#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
if ( disabledSuspendScreenSaver ) {
diff --git a/noncore/multimedia/opieplayer2/xinecontrol.h b/noncore/multimedia/opieplayer2/xinecontrol.h
index 000529c..085de3f 100644
--- a/noncore/multimedia/opieplayer2/xinecontrol.h
+++ b/noncore/multimedia/opieplayer2/xinecontrol.h
@@ -39,13 +39,13 @@
#include "mediaplayerstate.h"
class XineControl : public QObject {
Q_OBJECT
public:
- XineControl( QWidget *videoContainerWidget, XineVideoWidget *xineWidget,
+ XineControl( XineVideoWidget *xineWidget,
MediaPlayerState &_mediaPlayerState,
QObject *parent = 0, const char *name =0 );
~XineControl();
bool hasVideo() const { return hasVideoChannel; }
bool hasAudio() const { return hasAudioChannel; }
@@ -98,22 +98,26 @@ public slots:
* Set the gamma value of the video output
* @param int value between -100 and 100, 0 is original
*/
void setGamma( int );
+private slots:
+ void xineInitialized();
+
private:
XINE::Lib *libXine;
long m_currentTime;
long m_position;
int m_length;
QString m_fileName;
bool disabledSuspendScreenSaver : 1;
bool hasVideoChannel : 1;
bool hasAudioChannel : 1;
MediaPlayerState &mediaPlayerState;
+ XineVideoWidget *xineVideoWidget;
signals:
void positionChanged( long );
void initialized();
};
diff --git a/noncore/multimedia/opieplayer2/xinevideowidget.cpp b/noncore/multimedia/opieplayer2/xinevideowidget.cpp
index 1d88cea..791818e 100644
--- a/noncore/multimedia/opieplayer2/xinevideowidget.cpp
+++ b/noncore/multimedia/opieplayer2/xinevideowidget.cpp
@@ -105,12 +105,27 @@ XineVideoWidget::~XineVideoWidget ( )
void XineVideoWidget::clear ( )
{
m_buff = 0;
repaint ( false );
}
+QSize XineVideoWidget::videoSize() const
+{
+ QSize s = size();
+ bool fs = ( s == qApp->desktop()->size() );
+
+ // if we are in fullscreen mode, do not rotate the video
+ // (!! the paint routine uses m_rotation + qt_screen-> transformOrientation() !!)
+ m_rotation = fs ? - qt_screen->transformOrientation() : 0;
+
+ if ( fs && qt_screen->isTransformed() )
+ s = qt_screen->mapToDevice( s );
+
+ return s;
+}
+
void XineVideoWidget::paintEvent ( QPaintEvent * )
{
if ( m_buff == 0 ) {
QPainter p ( this );
p. fillRect ( rect ( ), black );
if ( m_logo )
@@ -248,23 +263,13 @@ void XineVideoWidget::setVideoFrame ( uchar* img, int w, int h, int bpl )
repaint ((( m_thisframe & m_lastframe ) != m_lastframe ) ? m_lastframe : m_thisframe, false );
}
void XineVideoWidget::resizeEvent ( QResizeEvent * )
{
- QSize s = size ( );
- bool fs = ( s == qApp-> desktop ( )-> size ( ));
-
- // if we are in fullscreen mode, do not rotate the video
- // (!! the paint routine uses m_rotation + qt_screen-> transformOrientation() !!)
- m_rotation = fs ? -qt_screen-> transformOrientation ( ) : 0;
-
- if ( fs && qt_screen-> isTransformed ( ))
- s = qt_screen-> mapToDevice ( s );
-
- emit videoResized ( s );
+ emit videoResized( videoSize() );
}
void XineVideoWidget::mouseReleaseEvent ( QMouseEvent * /*me*/ )
{
emit clicked();
diff --git a/noncore/multimedia/opieplayer2/xinevideowidget.h b/noncore/multimedia/opieplayer2/xinevideowidget.h
index 33f1470..8b3a3ea 100644
--- a/noncore/multimedia/opieplayer2/xinevideowidget.h
+++ b/noncore/multimedia/opieplayer2/xinevideowidget.h
@@ -47,12 +47,14 @@ public:
~XineVideoWidget ( );
QImage *logo ( ) const;
void setLogo ( QImage *image );
void setVideoFrame ( uchar *image, int width, int height, int linestep );
void clear ( );
+ QSize videoSize() const;
+
protected:
void paintEvent( QPaintEvent *p );
void resizeEvent ( QResizeEvent *r );
void mouseReleaseEvent ( QMouseEvent *e );
@@ -66,9 +68,9 @@ private:
uchar *m_buff;
int m_bytes_per_line_fb;
int m_bytes_per_line_frame;
int m_bytes_per_pixel;
QImage *m_logo;
- int m_rotation;
+ mutable int m_rotation;
};