Changeset aeb8ed0fb0a896579de098b6a13ffcae41fc8ec7
- Timestamp:
- 20/06/08 20:39:27
(6 months ago)
- Author:
- Rémi Denis-Courmont <rdenis@simphalempin.com>
- git-committer:
- Rémi Denis-Courmont <rdenis@simphalempin.com> 1213987167 +0300
- git-parent:
[5c603c041addd09cddcd24ec1af3828feeb4c8e0]
- git-author:
- Rémi Denis-Courmont <rdenis@simphalempin.com> 1213987146 +0300
- Message:
Qt4: wait for VideoWidget::paintEvent
This seems to solve the invalid handle problem, as pointed out by
Laurent. However, I get a poststamp-sized video output now...
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r5f01018 |
raeb8ed0 |
|
| 48 | 48 | #include <QResizeEvent> |
|---|
| 49 | 49 | #include <QDate> |
|---|
| | 50 | #include <QMutexLocker> |
|---|
| 50 | 51 | |
|---|
| 51 | 52 | /********************************************************************** |
|---|
| … | … | |
| 59 | 60 | vlc_mutex_init( &lock ); |
|---|
| 60 | 61 | p_vout = NULL; |
|---|
| | 62 | handleReady = false; |
|---|
| 61 | 63 | hide(); setMinimumSize( 16, 16 ); |
|---|
| 62 | 64 | videoSize.rwidth() = -1; |
|---|
| … | … | |
| 79 | 81 | /* The core can ask through a callback to resize the video */ |
|---|
| 80 | 82 | // CONNECT( this, askResize( int, int ), this, SetSizing( int, int ) ); |
|---|
| | 83 | } |
|---|
| | 84 | |
|---|
| | 85 | void VideoWidget::paintEvent(QPaintEvent *ev) |
|---|
| | 86 | { |
|---|
| | 87 | QFrame::paintEvent(ev); |
|---|
| | 88 | handleReady = true; |
|---|
| | 89 | handleWait.wakeAll(); |
|---|
| 81 | 90 | } |
|---|
| 82 | 91 | |
|---|
| … | … | |
| 107 | 116 | unsigned int *pi_width, unsigned int *pi_height ) |
|---|
| 108 | 117 | { |
|---|
| | 118 | QMutexLocker locker( &handleLock ); |
|---|
| 109 | 119 | msg_Dbg( p_intf, "Video was requested %i, %i", *pi_x, *pi_y ); |
|---|
| 110 | 120 | emit askVideoWidgetToShow(); |
|---|
| … | … | |
| 115 | 125 | } |
|---|
| 116 | 126 | p_vout = p_nvout; |
|---|
| 117 | | msg_Dbg( p_intf, "embedded video handle %p", winId() ); |
|---|
| | 127 | while( !handleReady ) |
|---|
| | 128 | { |
|---|
| | 129 | msg_Dbg( p_intf, "embedded video pending (handle %p)", winId() ); |
|---|
| | 130 | handleWait.wait( &handleLock ); |
|---|
| | 131 | } |
|---|
| | 132 | msg_Dbg( p_intf, "embedded video ready (handle %p)", winId() ); |
|---|
| 118 | 133 | return ( void* )winId(); |
|---|
| 119 | 134 | } |
|---|
| r69afa85 |
raeb8ed0 |
|
| 41 | 41 | #include <QWidget> |
|---|
| 42 | 42 | #include <QFrame> |
|---|
| | 43 | #include <QMutex> |
|---|
| | 44 | #include <QWaitCondition> |
|---|
| 43 | 45 | |
|---|
| 44 | 46 | #define VOLUME_MAX 200 |
|---|
| … | … | |
| 90 | 92 | vlc_mutex_t lock; |
|---|
| 91 | 93 | QSize videoSize; |
|---|
| | 94 | QMutex handleLock; |
|---|
| | 95 | QWaitCondition handleWait; |
|---|
| | 96 | bool handleReady; |
|---|
| 92 | 97 | |
|---|
| 93 | 98 | signals: |
|---|
| … | … | |
| 97 | 102 | public slots: |
|---|
| 98 | 103 | void SetSizing( unsigned int, unsigned int ); |
|---|
| | 104 | |
|---|
| | 105 | protected: |
|---|
| | 106 | virtual void paintEvent(QPaintEvent *); |
|---|
| 99 | 107 | }; |
|---|
| 100 | 108 | |
|---|