Fix client crash at core disconnect.
authorManuel Nickschas <sputnick@quassel-irc.org>
Wed, 20 Feb 2008 20:05:37 +0000 (20:05 +0000)
committerManuel Nickschas <sputnick@quassel-irc.org>
Wed, 20 Feb 2008 20:05:37 +0000 (20:05 +0000)
src/client/buffer.cpp
src/client/client.cpp
src/client/client.h
src/uisupport/bufferview.cpp

index d4ac236..daa338a 100644 (file)
@@ -81,7 +81,7 @@ void Buffer::setVisible(bool visible) {
 void Buffer::setLastSeen(const QDateTime &seen) { // qDebug() << "want to set lastSeen:" << bufferInfo() << seen << lastSeen();
   if(!lastSeen().isValid() || seen.isValid() && seen > lastSeen()) { //qDebug() << "setting:" << bufferInfo().bufferName() << seen;
     _lastSeen = seen;
-    Client::bufferSyncer()->requestSetLastSeen(bufferInfo().bufferId(), seen);
+    Client::setBufferLastSeen(bufferInfo().bufferId(), seen);
     //qDebug() << "setting lastSeen:" << bufferInfo() << lastSeen();
     setActivityLevel(NoActivity);
   }
index b9515e7..5872598 100644 (file)
@@ -464,6 +464,11 @@ void Client::setBufferLastSeen(BufferId id, const QDateTime &lastSeen) {
   bufferSyncer()->requestSetLastSeen(id, lastSeen);
 }
 
+void Client::removeBuffer(BufferId id) {
+  if(!bufferSyncer()) return;
+  bufferSyncer()->requestRemoveBuffer(id);
+}
+
 void Client::bufferRemoved(BufferId bufferId) {
   QModelIndex current = bufferModel()->currentIndex();
   if(current.data(NetworkModel::BufferIdRole).value<BufferId>() == bufferId) {
index cb6620b..21e6102 100644 (file)
@@ -93,7 +93,6 @@ public:
   static inline NetworkModel *networkModel() { return instance()->_networkModel; }
   static inline BufferModel *bufferModel() { return instance()->_bufferModel; }
   static inline SignalProxy *signalProxy() { return instance()->_signalProxy; }
-  static inline BufferSyncer *bufferSyncer() { return instance()->_bufferSyncer; }
 
   static AccountId currentCoreAccount();
 
@@ -108,6 +107,7 @@ public:
 
   static void checkForHighlight(Message &msg);
   static void setBufferLastSeen(BufferId id, const QDateTime &seen); // this is synced to core and other clients
+  static void removeBuffer(BufferId id);
 
 signals:
   void sendInput(BufferInfo, QString message);
@@ -190,8 +190,8 @@ private:
   void init();
 
   static void addNetwork(Network *);
-
   static void setCurrentCoreAccount(AccountId);
+  static inline BufferSyncer *bufferSyncer() { return instance()->_bufferSyncer; }
 
   static QPointer<Client> instanceptr;
 
index b99f990..aa82b58 100644 (file)
@@ -212,7 +212,7 @@ void BufferView::showContextMenu(const QPoint &pos) {
                                        "data, from the core's database!").arg(bufferInfo.bufferName()),
                                         QMessageBox::Yes|QMessageBox::No, QMessageBox::No);
     if(res == QMessageBox::Yes) {
-        Client::bufferSyncer()->requestRemoveBuffer(bufferInfo.bufferId());
+      Client::removeBuffer(bufferInfo.bufferId());
     } 
   } else 
   if(result == whoBufferAction) {