diff options
author | David Boddie <david.boddie@nokia.com> | 2011-04-28 17:39:11 (GMT) |
---|---|---|
committer | David Boddie <david.boddie@nokia.com> | 2011-04-28 17:39:11 (GMT) |
commit | 3abaecc3aec4e46f1c5969c33875fd45aa542385 (patch) | |
tree | 58613c5d2b765018c31d0b189e9c5a34d8adde69 /examples/threads/semaphores | |
parent | ddb22795641253a026b72f752ebc769745dd41be (diff) | |
download | Qt-3abaecc3aec4e46f1c5969c33875fd45aa542385.zip Qt-3abaecc3aec4e46f1c5969c33875fd45aa542385.tar.gz Qt-3abaecc3aec4e46f1c5969c33875fd45aa542385.tar.bz2 |
Squashed commit of the changes from the mobile-examples repository
(4.7-generated-declarative branch).
Diffstat (limited to 'examples/threads/semaphores')
-rw-r--r-- | examples/threads/semaphores/semaphores.cpp | 81 | ||||
-rw-r--r-- | examples/threads/semaphores/semaphores.desktop | 11 | ||||
-rw-r--r-- | examples/threads/semaphores/semaphores.pro | 6 |
3 files changed, 74 insertions, 24 deletions
diff --git a/examples/threads/semaphores/semaphores.cpp b/examples/threads/semaphores/semaphores.cpp index 88630de..3632895 100644 --- a/examples/threads/semaphores/semaphores.cpp +++ b/examples/threads/semaphores/semaphores.cpp @@ -38,13 +38,18 @@ ** ****************************************************************************/ -#include <QtCore> +#include <QtGui> #include <stdio.h> #include <stdlib.h> //! [0] +#ifdef Q_WS_S60 +const int DataSize = 300; +#else const int DataSize = 100000; +#endif + const int BufferSize = 8192; char buffer[BufferSize]; @@ -57,43 +62,70 @@ class Producer : public QThread //! [1] //! [2] { public: - void run(); -}; - -void Producer::run() -{ - qsrand(QTime(0,0,0).secsTo(QTime::currentTime())); - for (int i = 0; i < DataSize; ++i) { - freeBytes.acquire(); - buffer[i % BufferSize] = "ACGT"[(int)qrand() % 4]; - usedBytes.release(); + void run() + { + qsrand(QTime(0,0,0).secsTo(QTime::currentTime())); + for (int i = 0; i < DataSize; ++i) { + freeBytes.acquire(); + buffer[i % BufferSize] = "ACGT"[(int)qrand() % 4]; + usedBytes.release(); + } } -} +}; //! [2] //! [3] class Consumer : public QThread //! [3] //! [4] { + Q_OBJECT public: - void run(); -}; - -void Consumer::run() -{ - for (int i = 0; i < DataSize; ++i) { - usedBytes.acquire(); - fprintf(stderr, "%c", buffer[i % BufferSize]); - freeBytes.release(); + void run() + { + for (int i = 0; i < DataSize; ++i) { + usedBytes.acquire(); + #ifdef Q_WS_S60 + QString text(buffer[i % BufferSize]); + freeBytes.release(); + emit stringConsumed(text); + #else + fprintf(stderr, "%c", buffer[i % BufferSize]); + freeBytes.release(); + #endif + } + fprintf(stderr, "\n"); } - fprintf(stderr, "\n"); -} + +signals: + void stringConsumed(const QString &text); + +protected: + bool finish; +}; //! [4] //! [5] int main(int argc, char *argv[]) //! [5] //! [6] { +#ifdef Q_WS_S60 + // Self made console for Symbian + QApplication app(argc, argv); + QPlainTextEdit console; + console.setReadOnly(true); + console.setTextInteractionFlags(Qt::NoTextInteraction); + console.showMaximized(); + + Producer producer; + Consumer consumer; + + QObject::connect(&consumer, SIGNAL(stringConsumed(const QString&)), &console, SLOT(insertPlainText(QString)), Qt::BlockingQueuedConnection); + + producer.start(); + consumer.start(); + + app.exec(); +#else QCoreApplication app(argc, argv); Producer producer; Consumer consumer; @@ -102,5 +134,8 @@ int main(int argc, char *argv[]) producer.wait(); consumer.wait(); return 0; +#endif } //! [6] + +#include "semaphores.moc" diff --git a/examples/threads/semaphores/semaphores.desktop b/examples/threads/semaphores/semaphores.desktop new file mode 100644 index 0000000..a7dc467 --- /dev/null +++ b/examples/threads/semaphores/semaphores.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Version=1.0 +Type=Application +Terminal=false +Name=Semaphores +Exec=/opt/usr/bin/semaphores +Icon=semaphores +X-Window-Icon= +X-HildonDesk-ShowInToolbar=true +X-Osso-Type=application/x-executable diff --git a/examples/threads/semaphores/semaphores.pro b/examples/threads/semaphores/semaphores.pro index 85f7311..1cc3ace 100644 --- a/examples/threads/semaphores/semaphores.pro +++ b/examples/threads/semaphores/semaphores.pro @@ -1,5 +1,6 @@ SOURCES += semaphores.cpp -QT = core +QT = core gui + CONFIG -= app_bundle CONFIG += console @@ -10,3 +11,6 @@ sources.path = $$[QT_INSTALL_EXAMPLES]/threads/semaphores INSTALLS += target sources symbian: include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) +maemo5: include($$QT_SOURCE_TREE/examples/maemo5pkgrules.pri) + +simulator: warning(This example might not fully work on Simulator platform) |