From f1e45389df014fb5445ee96769bf02dcf34f1e21 Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Wed, 20 Feb 2008 20:05:37 +0000 Subject: [PATCH] Fix client crash at core disconnect. --- src/client/buffer.cpp | 2 +- src/client/client.cpp | 5 +++++ src/client/client.h | 4 ++-- src/uisupport/bufferview.cpp | 2 +- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/client/buffer.cpp b/src/client/buffer.cpp index d4ac2364..daa338ab 100644 --- a/src/client/buffer.cpp +++ b/src/client/buffer.cpp @@ -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); } diff --git a/src/client/client.cpp b/src/client/client.cpp index b9515e78..58725988 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -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) { diff --git a/src/client/client.h b/src/client/client.h index cb6620b5..21e6102a 100644 --- a/src/client/client.h +++ b/src/client/client.h @@ -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 instanceptr; diff --git a/src/uisupport/bufferview.cpp b/src/uisupport/bufferview.cpp index b99f9905..aa82b58a 100644 --- a/src/uisupport/bufferview.cpp +++ b/src/uisupport/bufferview.cpp @@ -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) { -- 2.20.1