BUGFIX: Fix possible crash when drawing piece downloaded/availability bars

This commit is contained in:
Christophe Dumez
2009-12-31 15:13:33 +00:00
parent e6966bec31
commit dff1666b6c
3 changed files with 17 additions and 12 deletions

View File

@@ -1,3 +1,6 @@
* Unreleased - Christophe Dumez <chris@qbittorrent.org> - v2.0.5
- BUGFIX: Fix possible crash when drawing piece downloaded/availability bars
* Wed Dec 30 2009 - Christophe Dumez <chris@qbittorrent.org> - v2.0.4 * Wed Dec 30 2009 - Christophe Dumez <chris@qbittorrent.org> - v2.0.4
- BUGFIX: Fix PeerGuardian .p2b binary filter support - BUGFIX: Fix PeerGuardian .p2b binary filter support
- BUGFIX: Fix possible crash when closing a search engine tab - BUGFIX: Fix possible crash when closing a search engine tab

View File

@@ -55,13 +55,13 @@ public:
void setProgress(bitfield pieces) { void setProgress(bitfield pieces) {
if(pieces.empty()) { if(pieces.empty()) {
// Empty bar // Empty bar
pixmap = QPixmap(1, 1); QPixmap pix = QPixmap(1, 1);
QPainter painter(&pixmap); pix.fill();
painter.setPen(Qt::white); pixmap = pix;
painter.drawPoint(0,0);
} else { } else {
pixmap = QPixmap(pieces.size(), 1); QPixmap pix = QPixmap(pieces.size(), 1);
QPainter painter(&pixmap); pix.fill();
QPainter painter(&pix);
for(uint i=0; i<pieces.size(); ++i) { for(uint i=0; i<pieces.size(); ++i) {
if(pieces[i]) if(pieces[i])
painter.setPen(Qt::blue); painter.setPen(Qt::blue);
@@ -69,6 +69,7 @@ public:
painter.setPen(Qt::white); painter.setPen(Qt::white);
painter.drawPoint(i,0); painter.drawPoint(i,0);
} }
pixmap = pix;
} }
update(); update();
} }

View File

@@ -54,21 +54,22 @@ public:
double average = 0; double average = 0;
if(avail.empty()) { if(avail.empty()) {
// Empty bar // Empty bar
pixmap = QPixmap(1, 1); QPixmap pix = QPixmap(1, 1);
QPainter painter(&pixmap); pix.fill();
painter.setPen(Qt::white); pixmap = pix;
painter.drawPoint(0,0);
} else { } else {
// Look for maximum value // Look for maximum value
average = std::accumulate(avail.begin(), avail.end(), 0)/(double)avail.size(); average = std::accumulate(avail.begin(), avail.end(), 0)/(double)avail.size();
uint nb_pieces = avail.size(); uint nb_pieces = avail.size();
pixmap = QPixmap(nb_pieces, 1); QPixmap pix = QPixmap(nb_pieces, 1);
QPainter painter(&pixmap); pix.fill();
QPainter painter(&pix);
std::vector<int>::iterator it; std::vector<int>::iterator it;
for(uint i=0; i < nb_pieces; ++i) { for(uint i=0; i < nb_pieces; ++i) {
painter.setPen(getPieceColor(avail[i], average)); painter.setPen(getPieceColor(avail[i], average));
painter.drawPoint(i,0); painter.drawPoint(i,0);
} }
pixmap = pix;
} }
update(); update();
return average; return average;