From b784d3daf05a3b5943b960a28795c8f8d77dc730 Mon Sep 17 00:00:00 2001 From: Mike Choi Date: Tue, 8 Jan 2013 12:59:46 +0100 Subject: [PATCH] VST Effects: fix for uncontrollable plugin window Supposed fix for 3595560, see also http://sourceforge.net/apps/phpbb/lmms/viewtopic.php?f=7&t=778 http://sourceforge.net/tracker/?func=detail&aid=3595560&group_id=105168&atid=640434 VST effects pluginWidget is not deleted, when we close General Settings of instrument track, on which are directly attached VST effects, but only when we remove this VST effects or tracks itself. Signed-off-by: Tobias Doerffel --- plugins/vst_effect/VstEffect.cpp | 4 ++++ plugins/vst_effect/VstEffectControlDialog.cpp | 2 +- src/gui/widgets/pixmap_button.cpp | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/plugins/vst_effect/VstEffect.cpp b/plugins/vst_effect/VstEffect.cpp index 2ada8ca14..a6286d38e 100644 --- a/plugins/vst_effect/VstEffect.cpp +++ b/plugins/vst_effect/VstEffect.cpp @@ -162,6 +162,10 @@ void VstEffect::openPlugin( const QString & _plugin ) void VstEffect::closePlugin() { m_pluginMutex.lock(); + if( m_plugin->pluginWidget() != NULL ) + { + delete m_plugin->pluginWidget(); + } delete m_plugin; m_plugin = NULL; m_pluginMutex.unlock(); diff --git a/plugins/vst_effect/VstEffectControlDialog.cpp b/plugins/vst_effect/VstEffectControlDialog.cpp index bb012b93b..ce598fade 100644 --- a/plugins/vst_effect/VstEffectControlDialog.cpp +++ b/plugins/vst_effect/VstEffectControlDialog.cpp @@ -226,7 +226,7 @@ void VstEffectControlDialog::paintEvent( QPaintEvent * ) VstEffectControlDialog::~VstEffectControlDialog() { - delete m_pluginWidget; + //delete m_pluginWidget; } diff --git a/src/gui/widgets/pixmap_button.cpp b/src/gui/widgets/pixmap_button.cpp index 0320b4932..795915da5 100644 --- a/src/gui/widgets/pixmap_button.cpp +++ b/src/gui/widgets/pixmap_button.cpp @@ -57,7 +57,7 @@ void pixmapButton::paintEvent( QPaintEvent * ) { QPainter p( this ); - if( model()->value() || m_pressed ) + if( model() != NULL && model()->value() || m_pressed ) { if( !m_activePixmap.isNull() ) {