#include <QPalette>
#include <QResizeEvent>
#include <QDate>
+#include <QMutexLocker>
/**********************************************************************
* Video Widget. A simple frame on which video is drawn
/* Init */
vlc_mutex_init( &lock );
p_vout = NULL;
+ handleReady = false;
hide(); setMinimumSize( 16, 16 );
videoSize.rwidth() = -1;
videoSize.rheight() = -1;
// CONNECT( this, askResize( int, int ), this, SetSizing( int, int ) );
}
+void VideoWidget::paintEvent(QPaintEvent *ev)
+{
+ QFrame::paintEvent(ev);
+ handleReady = true;
+ handleWait.wakeAll();
+}
+
VideoWidget::~VideoWidget()
{
vlc_mutex_lock( &lock );
void *VideoWidget::request( vout_thread_t *p_nvout, int *pi_x, int *pi_y,
unsigned int *pi_width, unsigned int *pi_height )
{
+ QMutexLocker locker( &handleLock );
msg_Dbg( p_intf, "Video was requested %i, %i", *pi_x, *pi_y );
emit askVideoWidgetToShow();
if( p_vout )
return NULL;
}
p_vout = p_nvout;
- msg_Dbg( p_intf, "embedded video handle %p", winId() );
+ while( !handleReady )
+ {
+ msg_Dbg( p_intf, "embedded video pending (handle %p)", winId() );
+ handleWait.wait( &handleLock );
+ }
+ msg_Dbg( p_intf, "embedded video ready (handle %p)", winId() );
return ( void* )winId();
}
#include <QWidget>
#include <QFrame>
+#include <QMutex>
+#include <QWaitCondition>
#define VOLUME_MAX 200
vlc_mutex_t lock;
QSize videoSize;
+ QMutex handleLock;
+ QWaitCondition handleWait;
+ bool handleReady;
signals:
void askVideoWidgetToShow();
public slots:
void SetSizing( unsigned int, unsigned int );
+
+protected:
+ virtual void paintEvent(QPaintEvent *);
};
/******************** Background Widget ****************/