]> git.sur5r.net Git - bacula/bacula/commitdiff
Fix timer to shudown correctly
authorKern Sibbald <kern@sibbald.com>
Tue, 22 May 2007 17:09:24 +0000 (17:09 +0000)
committerKern Sibbald <kern@sibbald.com>
Tue, 22 May 2007 17:09:24 +0000 (17:09 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@4875 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/src/qt-console/console/console.cpp
bacula/src/qt-console/console/console.h

index 29f3476a0fcf044a5506ccc1a20f1e7c0e15cef6..774874d027b3857a2cd27561a78217a3502bfb4f 100644 (file)
@@ -59,10 +59,7 @@ Console::Console(QStackedWidget *parent)
    m_cursor = new QTextCursor(m_textEdit->document());
    mainWin->actionConnect->setIcon(QIcon(":images/disconnected.png"));
 
-   /* Check for messages every 5 seconds */
-   m_timer = new QTimer(this);
-   QWidget::connect(m_timer, SIGNAL(timeout()), this, SLOT(poll_messages()));
-   startTimer();
+   m_timer = NULL;
 }
 
 Console::~Console()
@@ -71,9 +68,21 @@ Console::~Console()
 
 void Console::startTimer()
 {
+   m_timer = new QTimer(this);
+   QWidget::connect(m_timer, SIGNAL(timeout()), this, SLOT(poll_messages()));
    m_timer->start(mainWin->m_checkMessagesInterval*1000);
 }
 
+void Console::stopTimer()
+{
+   if (m_timer) {
+      QWidget::disconnect(m_timer, SIGNAL(timeout()), this, SLOT(poll_messages()));
+      m_timer->stop();
+      delete m_timer;
+      m_timer = NULL;
+   }
+}
+      
 void Console::poll_messages()
 {
    m_messages_pending = true;
@@ -89,8 +98,8 @@ void Console::terminate()
    if (m_sock) {
       m_sock->close();
       m_sock = NULL;
+      stopTimer();
    }
-   m_timer->stop();
 }
 
 /*
@@ -224,6 +233,7 @@ void Console::connect()
    dir_cmd(".levels", level_list);
 
    mainWin->set_status(_("Connected"));
+   startTimer();
    return;
 }
 
@@ -524,11 +534,15 @@ int Console::write(const QString msg)
 
 int Console::write(const char *msg)
 {
+   if (!m_sock) {
+      return -1;
+   }
    m_sock->msglen = pm_strcpy(m_sock->msg, msg);
    m_at_prompt = false;
    m_at_main_prompt = false;
    if (mainWin->m_commDebug) Pmsg1(000, "send: %s\n", msg);
    return m_sock->send();
+
 }
 
 /*
@@ -676,6 +690,7 @@ int Console::read()
          if (mainWin->m_commDebug) Pmsg0(000, "BNET STOP\n");
          m_sock->close();
          m_sock = NULL;
+         stopTimer();
          mainWin->actionConnect->setIcon(QIcon(":images/disconnected.png"));
          QBrush redBrush(Qt::red);
          QTreeWidgetItem *item = mainWin->getFromHash(this);
index f5a553e87902b6dae471aefd562d02044653b0a4..df8e56e9db5a848c7def7401ea1a24e33d3bae13 100644 (file)
@@ -101,6 +101,7 @@ public:
    QTreeWidgetItem *directorTreeItem() { return m_directorTreeItem; };
    void getDirResName(QString &);
    void startTimer();
+   void stopTimer();
 
    QStringList job_list;
    QStringList client_list;