Problemi con emit score
[qmemory] / testThread.cpp
index 4c7dfb6..5dd1a2f 100644 (file)
@@ -3,75 +3,68 @@
 #include <qdebug.h>
 #include <QMessageBox>
 #include <QDateTime>
-TestThread::TestThread(QObject *parent):QThread(parent){
+
+TestThread::TestThread(QObject *parent):QThread(parent)
+{
     colore=0;
-    attendiInputUtente=false;
     index=0;
     _score=0;
-
     qsrand(QDateTime::currentDateTime().toTime_t());
 
 }
-TestThread::~TestThread(){
+
+TestThread::~TestThread()
+{
 
 }
 void TestThread::run(){
-    while(true){
-
-    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*5));
-      emit generate(sequenza.at(i));
-      msleep(500 - (_score*5));
-      i++;
-    }
-    i=0;
-    attendiInputUtente=true;
-    emit enableInterface();
+    sleep(1);
+    forever{
+        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));
+          msleep(500 - (_score*2));
+          emit generate(sequenza.at(i));
+          msleep(500 - (_score*2));
+          i++;
+        }
 
-    while(attendiInputUtente){
-        msleep(1);
+        i=0;
+        emit enableInterface();
+        attendiInputUtente.wait(&mutex);
+        mutex.unlock();
     }
-    }
-
-
 }
 
-void TestThread::updateCaption(int inputUser){
-
-    if(attendiInputUtente){
-
+void TestThread::addUserInput(int inputUser){
         if(sequenza.at(index)==inputUser)
         {
             index++;
             _score++;
             emit score(_score);
-            if(index==sequenza.size()){
-                attendiInputUtente=false;
-                index=0;
+
+           if(index==sequenza.size()){
+                msleep(300);
+                attendiInputUtente.wakeAll();
             }
         }
         else{
             emit exit(_score);
-            _score=0;
-            sequenza.clear();
-            index=0;
-            attendiInputUtente=true;
         }
-    }
+
 }
 
 void TestThread::genera()
 {
-        qDebug()<<"Init Emission";
-    attendiInputUtente=false;
-
+    sequenza.clear();
+    index=0;
+    _score=0;
+    emit score(_score);
+    attendiInputUtente.wakeAll();
 }