# HG changeset patch # User sheepluva # Date 1385984416 -3600 # Node ID 6312152d92ad4bcea70b7d4acb31f540d89260ba # Parent da2cb993fd616bb30ef1ed0f4b518104662f6ebc don't generate any map previews until they are actually visible. this should improve hedgewars startup performance on weak machines diff -r da2cb993fd61 -r 6312152d92ad QTfrontend/ui/widget/mapContainer.cpp --- a/QTfrontend/ui/widget/mapContainer.cpp Mon Dec 02 04:35:02 2013 +0200 +++ b/QTfrontend/ui/widget/mapContainer.cpp Mon Dec 02 12:40:16 2013 +0100 @@ -55,6 +55,7 @@ mapgen(MAPGEN_REGULAR), m_previewSize(256, 128) { + m_previewDirty = true; hhSmall.load(":/res/hh_small.png"); hhLimit = 18; templateFilter = 0; @@ -608,8 +609,25 @@ updatePreview(); } +void HWMapContainer::paintEvent(QPaintEvent * event) +{ + if (m_previewDirty) + updatePreview(); + QWidget::paintEvent(event); +} + void HWMapContainer::updatePreview() { + // don't update preview if e.g. widget not being displayed + if (this->visibleRegion().isEmpty()) + { + // but remember to update it later + m_previewDirty = true; + return; + } + + m_previewDirty = false; + if (pMap) { disconnect(pMap, 0, this, SLOT(setImage(const QImage))); diff -r da2cb993fd61 -r 6312152d92ad QTfrontend/ui/widget/mapContainer.h --- a/QTfrontend/ui/widget/mapContainer.h Mon Dec 02 04:35:02 2013 +0200 +++ b/QTfrontend/ui/widget/mapContainer.h Mon Dec 02 12:40:16 2013 +0100 @@ -111,6 +111,7 @@ protected: virtual void resizeEvent ( QResizeEvent * event ); + virtual void paintEvent ( QPaintEvent * event ); private: QVBoxLayout mainLayout; @@ -149,6 +150,7 @@ QPushButton * btnSeed; bool m_master; QList m_childWidgets; + bool m_previewDirty; void intSetSeed(const QString & seed); void intSetMap(const QString & map);