Inserita la QwaitCondition
[qmemory] / testThread.cpp
index 7c6ba3c..e3087e1 100644 (file)
@@ -5,10 +5,9 @@
 #include <QDateTime>
 TestThread::TestThread(QObject *parent):QThread(parent){
     colore=0;
 #include <QDateTime>
 TestThread::TestThread(QObject *parent):QThread(parent){
     colore=0;
-    attendiInputUtente=false;
 
 
-    _score=0;
     index=0;
     index=0;
+    _score=0;
 
     qsrand(QDateTime::currentDateTime().toTime_t());
 
 
     qsrand(QDateTime::currentDateTime().toTime_t());
 
@@ -16,67 +15,64 @@ TestThread::TestThread(QObject *parent):QThread(parent){
 TestThread::~TestThread(){
 
 }
 TestThread::~TestThread(){
 
 }
-void TestThread::run()
-{
+void TestThread::run(){
+    sleep(1);
     while(true){
     while(true){
-        //msleep(200);
-        qsrand(QDateTime::currentDateTime().toTime_t());
-        sequenza.append(qrand()%9);
-        int i=0;
-
-        qDebug()<<"Init Emission";
-        emit disableInterface();
-        while(i<sequenza.size())
-        {
-          qDebug()<<"Init Generate";
-          emit generate(sequenza.at(i));
-          qDebug()<<sequenza.at(i);
-          msleep(500 - (_score*5));
-          emit generate(sequenza.at(i));
-          msleep(500 - (_score*5));
-          i++;
-        }
-        i=0;
-        attendiInputUtente=true;
-        emit enableInterface();
+    mutex.lock();
+    qsrand(QDateTime::currentDateTime().toTime_t());
+    sequenza.append(qrand()%9);
+    int i=0;
+    index=0;
+
+    emit disableInterface();
+    while(i<sequenza.size())
+    {
+      emit generate(sequenza.at(i));
+      qDebug()<<sequenza.at(i);
+      msleep(500 - (_score*2));
+      emit generate(sequenza.at(i));
+      msleep(500 - (_score*2));
+      i++;
+    }
+    i=0;
+    emit enableInterface();
+    attendiInputUtente.wait(&mutex);
+
+    mutex.unlock();
 
 
-        while(attendiInputUtente){
-            msleep(1);
-        } ;
     }
 
 
 }
 
     }
 
 
 }
 
-void TestThread::updateCaption(int inputUser)
-{
-     qDebug()<<"Entro in update Caption ="<< inputUser<< " valore aspettato" << sequenza.at(index);
-     if (attendiInputUtente){
+void TestThread::updateCaption(int inputUser){
+
 
 
-        if(sequenza.at(index) == inputUser)
+
+        if(sequenza.at(index)==inputUser)
         {
         {
-            if(index == sequenza.size() - 1){
-                qDebug()<<"Entro in if if ="<< inputUser<< " valore aspettato" << sequenza.at(index);
-                attendiInputUtente=false;
+            index++;
+            _score++;
+            emit score(_score);
+            if(index==sequenza.size()){
+                sleep(1);
+                attendiInputUtente.wakeAll();
                 index=0;
                 index=0;
-            }else
-            {
-                index++;
-                _score++;
             }
         }
         else{
             }
         }
         else{
-            emit score(_score);
+            emit exit(_score);
             _score=0;
             sequenza.clear();
             index=0;
             _score=0;
             sequenza.clear();
             index=0;
-            attendiInputUtente=true;
+            attendiInputUtente.wakeAll();
         }
         }
-    }
+
 }
 
 void TestThread::genera()
 {
 }
 
 void TestThread::genera()
 {
-    attendiInputUtente=false;
+
+    attendiInputUtente.wakeAll();
 
 }
 
 }