aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-06-17 12:15:54 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-06-17 12:15:54 +0000
commitbdc1755bc730e3b0e9553be7d0b04cf3db6d69ff (patch)
tree80f1b491e39b4a5777cd52d48671ffe8647a579e
parentd4f1dfb9db563e266387c71b77024302f2732677 (diff)
downloadqmmp-bdc1755bc730e3b0e9553be7d0b04cf3db6d69ff.tar.gz
qmmp-bdc1755bc730e3b0e9553be7d0b04cf3db6d69ff.tar.bz2
qmmp-bdc1755bc730e3b0e9553be7d0b04cf3db6d69ff.zip
fixed critical bug which causes crash
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@426 90c681e8-e032-0410-971d-27865f9a5e38
-rw-r--r--src/qmmp/output.cpp10
-rw-r--r--src/ui/mainvisual.cpp2
2 files changed, 8 insertions, 4 deletions
diff --git a/src/qmmp/output.cpp b/src/qmmp/output.cpp
index a7ae2d8ed..bf08da376 100644
--- a/src/qmmp/output.cpp
+++ b/src/qmmp/output.cpp
@@ -139,12 +139,15 @@ Output::Output (QObject* parent) : QThread (parent), r (stackSize())
Output::~Output()
{
qDebug("Output::~Output()");
- Visual *visual = 0;
- foreach(visual, m_vis_map.values ())
+ foreach(Visual *visual, m_vis_map.values ())
{
+ visual->setOutput(0);
visual->close();
}
- //m_vis_map.clear();
+ foreach (Visual *visual , visuals) //external
+ {
+ visual->setOutput(0);
+ }
}
void Output::error ( const QString &e )
@@ -165,6 +168,7 @@ void Output::addVisual ( Visual *v )
void Output::removeVisual (Visual *v)
{
+ v->setOutput(0);
visuals.removeAll (v);
if (m_vis_map.key(v))
{
diff --git a/src/ui/mainvisual.cpp b/src/ui/mainvisual.cpp
index b52bcc0ce..61807bf11 100644
--- a/src/ui/mainvisual.cpp
+++ b/src/ui/mainvisual.cpp
@@ -166,7 +166,7 @@ void MainVisual::timeout()
update();
m_draw = TRUE;
}
- else if (m_draw && output() && !output()->isRunning())
+ else if (m_draw && (!output() || !output()->isRunning()))
{
m_draw = FALSE;
m_pixmap = m_bg;