@@ -28,10 +28,17 @@ using namespace QtAV;
28
28
const int kSyncInterval = 2000 ;
29
29
30
30
VideoWall::VideoWall (QObject *parent) :
31
- QObject(parent),r(3 ),c(3 )
31
+ QObject(parent),r(3 ),c(3 ),view( 0 )
32
32
{
33
33
clock = new AVClock (this );
34
34
clock ->setClockType (AVClock::ExternalClock);
35
+ // view = new QWidget;
36
+ if (view) {
37
+ qDebug (" WA_OpaquePaintEvent=%d" , view->testAttribute (Qt::WA_OpaquePaintEvent));
38
+ view->resize (qApp->desktop ()->size ());
39
+ view->move (QPoint (0 , 0 ));
40
+ view->show ();
41
+ }
35
42
}
36
43
37
44
VideoWall::~VideoWall ()
@@ -49,6 +56,7 @@ VideoWall::~VideoWall()
49
56
}
50
57
players.clear ();
51
58
}
59
+ delete view;
52
60
}
53
61
54
62
void VideoWall::setRows (int n)
@@ -88,11 +96,11 @@ void VideoWall::show()
88
96
}
89
97
qDebug (" show wall: %d x %d" , r, c);
90
98
91
- int w = qApp->desktop ()->width ()/c;
92
- int h = qApp->desktop ()->height ()/r;
99
+ int w = view ? view-> frameGeometry (). width ()/c : qApp->desktop ()->width ()/c;
100
+ int h = view ? view-> frameGeometry (). height ()/r : qApp->desktop ()->height ()/r;
93
101
for (int i = 0 ; i < r; ++i) {
94
102
for (int j = 0 ; j < c; ++j) {
95
- WidgetRenderer* renderer = new WidgetRenderer;
103
+ WidgetRenderer* renderer = new WidgetRenderer (view) ;
96
104
renderer->setWindowFlags (Qt::FramelessWindowHint);
97
105
renderer->resize (w, h);
98
106
renderer->move (j*w, i*h);
@@ -197,6 +205,8 @@ bool VideoWall::eventFilter(QObject *watched, QEvent *event)
197
205
foreach (AVPlayer* player, players) {
198
206
player->load (file);
199
207
}
208
+ clock ->reset ();
209
+ clock ->start ();
200
210
foreach (AVPlayer* player, players) {
201
211
player->play ();
202
212
}
@@ -246,7 +256,6 @@ void VideoWall::timerEvent(QTimerEvent *e)
246
256
qDebug (" clock not running" );
247
257
return ;
248
258
}
249
- qDebug (" timerEvent...." );
250
259
foreach (AVPlayer *player, players) {
251
260
player->masterClock ()->updateExternalClock (*clock );
252
261
}
0 commit comments