fixing crash on disconnect
[quassel.git] / src / client / clientbacklogmanager.cpp
index 40d5cc1..6f45da3 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-08 by the Quassel IRC Team                         *
+ *   Copyright (C) 2005-09 by the Quassel Project                          *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -48,8 +48,9 @@ void ClientBacklogManager::receiveBacklog(BufferId bufferId, MsgId first, MsgId
   }
 
   if(isBuffering()) {
-    if(!_requester->buffer(bufferId, msglist)) {
-      // this was the last part to buffer
+    bool lastPart = !_requester->buffer(bufferId, msglist);
+    updateProgress(_requester->totalBuffers() - _requester->buffersWaiting(), _requester->totalBuffers());
+    if(lastPart) {
       stopBuffering();
       reset();
     }
@@ -92,6 +93,9 @@ void ClientBacklogManager::requestInitialBacklog() {
   };
 
   _requester->requestBacklog();
+  if(_requester->isBuffering()) {
+    updateProgress(0, _requester->totalBuffers());
+  }
 }
 
 void ClientBacklogManager::stopBuffering() {