Blob Blame History Raw
diff -rupN clementine-0.4.2.old/src/visualisations/visualisationcontainer.cpp clementine-0.4.2/src/visualisations/visualisationcontainer.cpp
--- clementine-0.4.2.old/src/visualisations/visualisationcontainer.cpp	2010-07-01 14:16:36.000000000 -0400
+++ clementine-0.4.2/src/visualisations/visualisationcontainer.cpp	2010-08-08 19:21:01.000000000 -0400
@@ -40,6 +40,7 @@ const int VisualisationContainer::kDefau
 
 VisualisationContainer::VisualisationContainer(QWidget *parent)
   : QGraphicsView(parent),
+    initialised_(false),
     engine_(NULL),
     vis_(new ProjectMVisualisation(this)),
     overlay_(new VisualisationOverlay),
@@ -49,6 +50,16 @@ VisualisationContainer::VisualisationCon
     fps_(kDefaultFps),
     size_(kDefaultTextureSize)
 {
+  QSettings s;
+  s.beginGroup(kSettingsGroup);
+  if (!restoreGeometry(s.value("geometry").toByteArray())) {
+    resize(kDefaultWidth, kDefaultHeight);
+  }
+  fps_ = s.value("fps", kDefaultFps).toInt();
+  size_ = s.value("size", kDefaultTextureSize).toInt();
+}
+
+void VisualisationContainer::Init() {
   setWindowTitle(tr("Clementine Visualization"));
   setWindowIcon(QIcon(":/icon.png"));
 
@@ -66,17 +77,8 @@ VisualisationContainer::VisualisationCon
   connect(overlay_, SIGNAL(ShowPopupMenu(QPoint)), SLOT(ShowPopupMenu(QPoint)));
   ChangeOverlayOpacity(0.0);
 
-  // Load settings
-  QSettings s;
-  s.beginGroup(kSettingsGroup);
-  if (!restoreGeometry(s.value("geometry").toByteArray())) {
-    resize(kDefaultWidth, kDefaultHeight);
-  }
-  fps_ = s.value("fps", kDefaultFps).toInt();
-  size_ = s.value("size", kDefaultTextureSize).toInt();
-
-  SizeChanged();
   vis_->SetTextureSize(size_);
+  SizeChanged();
 
   // Selector
   selector_->SetVisualisation(vis_);
@@ -130,6 +132,11 @@ void VisualisationContainer::SetEngine(G
 }
 
 void VisualisationContainer::showEvent(QShowEvent* e) {
+  if (!initialised_) {
+    Init();
+    initialised_ = true;
+  }
+
   QGraphicsView::showEvent(e);
   update_timer_.start(1000 / fps_, this);
 
@@ -165,7 +172,8 @@ void VisualisationContainer::SizeChanged
     scene()->setSceneRect(QRect(QPoint(0, 0), size()));
 
   // Resize the overlay
-  overlay_->resize(size());
+  if (overlay_)
+    overlay_->resize(size());
 }
 
 void VisualisationContainer::timerEvent(QTimerEvent* e) {
diff -rupN clementine-0.4.2.old/src/visualisations/visualisationcontainer.h clementine-0.4.2/src/visualisations/visualisationcontainer.h
--- clementine-0.4.2.old/src/visualisations/visualisationcontainer.h	2010-07-01 14:16:36.000000000 -0400
+++ clementine-0.4.2/src/visualisations/visualisationcontainer.h	2010-08-08 19:21:15.000000000 -0400
@@ -65,6 +65,8 @@ protected:
   void keyReleaseEvent(QKeyEvent *event);
 
 private:
+  void Init();
+
   void SizeChanged();
   void AddMenuItem(const QString& name, int value, int def,
                    QActionGroup* group, QSignalMapper* mapper);
@@ -77,6 +79,8 @@ private slots:
   void SetQuality(int size);
 
 private:
+  bool initialised_;
+
   GstEngine* engine_;
   ProjectMVisualisation* vis_;
   VisualisationOverlay* overlay_;