diff options
| -rw-r--r-- | src/error.cc | 16 | ||||
| -rw-r--r-- | src/error.h | 8 | ||||
| -rw-r--r-- | src/mainwindow.cc | 1 | 
3 files changed, 21 insertions, 4 deletions
| diff --git a/src/error.cc b/src/error.cc index b166042..4e3f045 100644 --- a/src/error.cc +++ b/src/error.cc @@ -30,12 +30,21 @@ Error::Error()  {    // Initialize    lastError = NULL; + +  pthread_mutex_init (&mutex, NULL);  }  Error::~Error()  {  } +/* +      pthread_mutex_lock(&mutex); +      // ... do something +      pthread_mutex_unlock(&mutex); + + */ +  bool Error::hasError()  {    return lastError != NULL; @@ -52,17 +61,20 @@ string Error::popAllErrorStrings()  string Error::popErrorString()  { +  pthread_mutex_lock(&mutex);    if(lastError == NULL) return string("");    _err_entry *err = lastError;    string le = err->errstr;    lastError = err->prev;    delete err; +  pthread_mutex_unlock(&mutex);    return le;  }  void Error::pushError(char* errstr)  { +  pthread_mutex_lock(&mutex);    printf("New Error: [%s]\n", errstr);    _err_entry *err = new _err_entry; @@ -70,19 +82,21 @@ void Error::pushError(char* errstr)    err->errstr = errstr;    err->prev = lastError;    lastError = err; +  pthread_mutex_unlock(&mutex);  }  void Error::pushError(string &errstr)  { +  pthread_mutex_lock(&mutex);    _err_entry *err = new _err_entry;    err->errstr = errstr;    err->prev = lastError;    lastError = err; +  pthread_mutex_unlock(&mutex);  }  void Error::removeAllErrors()  {    while(lastError) popErrorString(); -    } diff --git a/src/error.h b/src/error.h index 8b26471..a7e6b29 100644 --- a/src/error.h +++ b/src/error.h @@ -30,6 +30,9 @@  #include <string>  using namespace std; +#include <pthread.h> +#include <semaphore.h> +  /**   * This struct contains one error, and a pointer to the previous one.   */ @@ -54,8 +57,9 @@ public:    void removeAllErrors();  private: -  // Used to save the state of the network and camera connections. -  bool error; +  pthread_mutex_t mutex; + +  // A pointer to the last error.    _err_entry *lastError;  }; diff --git a/src/mainwindow.cc b/src/mainwindow.cc index e779c19..8164981 100644 --- a/src/mainwindow.cc +++ b/src/mainwindow.cc @@ -95,7 +95,6 @@ MainWindow::MainWindow( QWidget* parent, const char* name )                    cfg.readInt("server_port"));    cam_error = camera->errorObject(); -  cam_error->pushError("fisk");    while(cam_error->hasError()) {      MessageBox(this, "", cam_error->popErrorString().c_str(), TYPE_OK, ICON_ERROR).exec();    } | 
