Added command line argument to make hellowindow example single window.

Useful when testing on embedded platforms with no support for multiple
top-level windows.

Change-Id: I212ca69c3f5d5d338e860169b14e3f9f3951712b
Reviewed-by: Andy Nichols <andy.nichols@nokia.com>
This commit is contained in:
Samuel Rødal 2011-11-21 12:18:15 +01:00 committed by Qt by Nokia
parent 84f0add9b3
commit f65cda93e9

View File

@ -48,6 +48,8 @@ int main(int argc, char **argv)
{ {
QGuiApplication app(argc, argv); QGuiApplication app(argc, argv);
bool multipleWindows = !QGuiApplication::arguments().contains(QLatin1String("--single"));
QScreen *screen = QGuiApplication::primaryScreen(); QScreen *screen = QGuiApplication::primaryScreen();
QRect screenGeometry = screen->availableGeometry(); QRect screenGeometry = screen->availableGeometry();
@ -60,31 +62,35 @@ int main(int argc, char **argv)
QSize windowSize(400, 320); QSize windowSize(400, 320);
int delta = 40; int delta = 40;
Renderer rendererA(format); Renderer *rendererA = new Renderer(format);
Renderer rendererB(format, &rendererA); HelloWindow *windowA = new HelloWindow(rendererA);
windowA->setGeometry(QRect(center, windowSize).translated(-windowSize.width() - delta / 2, 0));
windowA->setWindowTitle(QLatin1String("Thread A - Context A"));
windowA->setVisible(true);
QThread renderThread; QThread *renderThread = 0;
rendererB.moveToThread(&renderThread); if (multipleWindows) {
renderThread.start(); Renderer *rendererB = new Renderer(format, rendererA);
QObject::connect(qGuiApp, SIGNAL(lastWindowClosed()), &renderThread, SLOT(quit())); renderThread = new QThread;
rendererB->moveToThread(renderThread);
renderThread->start();
HelloWindow windowA(&rendererA); QObject::connect(qGuiApp, SIGNAL(lastWindowClosed()), renderThread, SLOT(quit()));
windowA.setGeometry(QRect(center, windowSize).translated(-windowSize.width() - delta / 2, 0));
windowA.setWindowTitle(QLatin1String("Thread A - Context A"));
windowA.setVisible(true);
HelloWindow windowB(&rendererA); HelloWindow *windowB = new HelloWindow(rendererA);
windowB.setGeometry(QRect(center, windowSize).translated(delta / 2, 0)); windowB->setGeometry(QRect(center, windowSize).translated(delta / 2, 0));
windowB.setWindowTitle(QLatin1String("Thread A - Context A")); windowB->setWindowTitle(QLatin1String("Thread A - Context A"));
windowB.setVisible(true); windowB->setVisible(true);
HelloWindow windowC(&rendererB); HelloWindow *windowC = new HelloWindow(rendererB);
windowC.setGeometry(QRect(center, windowSize).translated(-windowSize.width() / 2, windowSize.height() + delta)); windowC->setGeometry(QRect(center, windowSize).translated(-windowSize.width() / 2, windowSize.height() + delta));
windowC.setWindowTitle(QLatin1String("Thread B - Context B")); windowC->setWindowTitle(QLatin1String("Thread B - Context B"));
windowC.setVisible(true); windowC->setVisible(true);
}
app.exec(); app.exec();
renderThread.wait(); if (multipleWindows)
renderThread->wait();
} }