Browse Source

Avoiding crashes in plugins if components get deleted during a paint callback

tags/2021-05-28
jules 11 years ago
parent
commit
cc3aa5c757
3 changed files with 6 additions and 3 deletions
  1. +2
    -1
      modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp
  2. +2
    -1
      modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp
  3. +2
    -1
      modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp

+ 2
- 1
modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp View File

@@ -1051,7 +1051,8 @@ public:
Timer::callPendingTimersSynchronously();
for (int i = ComponentPeer::getNumPeers(); --i >= 0;)
ComponentPeer::getPeer (i)->performAnyPendingRepaintsNow();
if (ComponentPeer* p = ComponentPeer::getPeer(i))
p->performAnyPendingRepaintsNow();
recursionCheck = false;
}


+ 2
- 1
modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp View File

@@ -1655,7 +1655,6 @@ public:
if (isControllerInitialised) editController->terminate();
if (isComponentInitialised) component->terminate();
//Deletion order appears to matter:
componentConnection = nullptr;
editControllerConnection = nullptr;
unitData = nullptr;
@@ -1667,6 +1666,8 @@ public:
editController2 = nullptr;
editController = nullptr;
component = nullptr;
host = nullptr;
module = nullptr;
}
bool initialise()


+ 2
- 1
modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp View File

@@ -1285,7 +1285,8 @@ public:
handleUpdateNowIfNeeded();
for (int i = ComponentPeer::getNumPeers(); --i >= 0;)
ComponentPeer::getPeer(i)->performAnyPendingRepaintsNow();
if (ComponentPeer* p = ComponentPeer::getPeer(i))
p->performAnyPendingRepaintsNow();
}
break;


Loading…
Cancel
Save