diff options
author | Tomaz Canabrava <tomaz.canabrava@intel.com> | 2014-05-26 17:51:46 -0300 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2014-05-26 14:07:27 -0700 |
commit | addec6b69fe9022a79d83945b865a0b518f556e8 (patch) | |
tree | a5c4a34fc28026c1f94f8a0a3539e37520362a63 | |
parent | fe2eb1a9fc70e8aa2eae7c87cd8f16c753a6735d (diff) | |
download | subsurface-addec6b69fe9022a79d83945b865a0b518f556e8.tar.gz |
Do not set maxTime when the handler is moving.
Fixes massive cpu hog.
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | qt-ui/profile/profilewidget2.cpp | 22 | ||||
-rw-r--r-- | qt-ui/profile/profilewidget2.h | 5 |
2 files changed, 24 insertions, 3 deletions
diff --git a/qt-ui/profile/profilewidget2.cpp b/qt-ui/profile/profilewidget2.cpp index 28a07404f..f62299648 100644 --- a/qt-ui/profile/profilewidget2.cpp +++ b/qt-ui/profile/profilewidget2.cpp @@ -87,7 +87,8 @@ ProfileWidget2::ProfileWidget2(QWidget *parent) : QGraphicsView(parent), heartBeatItem(new DiveHeartrateItem()), rulerItem(new RulerItem2()), isGrayscale(false), - printMode(false) + printMode(false), + shouldCalculateMaxTime(true) { memset(&plotInfo, 0, sizeof(plotInfo)); @@ -421,7 +422,8 @@ void ProfileWidget2::plotDives(QList<dive *> dives) */ struct plot_info pInfo = calculate_max_limits_new(d, currentdc); create_plot_info_new(d, currentdc, &pInfo); - int maxtime = get_maxtime(&pInfo); + if(shouldCalculateMaxTime) + maxtime = get_maxtime(&pInfo); int maxdepth = get_maxdepth(&pInfo); dataModel->setDive(d, pInfo); @@ -546,6 +548,22 @@ void ProfileWidget2::resizeEvent(QResizeEvent *event) fixBackgroundPos(); } +void ProfileWidget2::mousePressEvent(QMouseEvent *event) +{ + QGraphicsView::mousePressEvent(event); + if(currentState == PLAN) + shouldCalculateMaxTime = false; +} + +void ProfileWidget2::mouseReleaseEvent(QMouseEvent *event) +{ + QGraphicsView::mouseReleaseEvent(event); + if(currentState == PLAN){ + shouldCalculateMaxTime = true; + replot(); + } +} + void ProfileWidget2::fixBackgroundPos() { if (currentState != EMPTY) diff --git a/qt-ui/profile/profilewidget2.h b/qt-ui/profile/profilewidget2.h index 3c3d86d01..fbfd1947f 100644 --- a/qt-ui/profile/profilewidget2.h +++ b/qt-ui/profile/profilewidget2.h @@ -108,7 +108,8 @@ protected: virtual void mouseMoveEvent(QMouseEvent *event); virtual void contextMenuEvent(QContextMenuEvent *event); virtual void mouseDoubleClickEvent(QMouseEvent *event); - + virtual void mousePressEvent(QMouseEvent *event); + virtual void mouseReleaseEvent(QMouseEvent *event); private: /*methods*/ void fixBackgroundPos(); void scrollViewTo(const QPoint &pos); @@ -160,6 +161,8 @@ private: int fixHandlerIndex(DiveHandler *activeHandler); friend class DiveHandler; QHash<Qt::Key, QAction *> actionsForKeys; + bool shouldCalculateMaxTime; + int maxtime; }; #endif // PROFILEWIDGET2_H |