Skip to content

Commit ab8db68

Browse files
Merge pull request #1791 from plugdata-team/develop
Fix plugin shutdown bug
2 parents e213743 + f4a2f08 commit ab8db68

File tree

1 file changed

+26
-12
lines changed

1 file changed

+26
-12
lines changed

Source/Sidebar/DocumentationBrowser.h

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ class DocumentationBrowserUpdateThread : public Thread
9999

100100
~DocumentationBrowserUpdateThread()
101101
{
102+
102103
instance = nullptr;
103104
stopThread(-1);
104105
}
@@ -202,20 +203,33 @@ class DocumentationBrowserUpdateThread : public Thread
202203
}
203204
}
204205

205-
void run() override
206-
{
207-
try
208-
{
209-
fileTreeLock.enter();
210-
fileTree = generateDirectoryValueTree(File(SettingsFile::getInstance()->getProperty<String>("browser_path")));
211-
fileTreeLock.exit();
212-
sendChangeMessage();
213-
}
214-
catch(...)
206+
void run() override
215207
{
216-
std::cerr << "Failed to update documentation browser" << std::endl;
208+
try
209+
{
210+
int const maxRetries = 50;
211+
int retries = 0;
212+
213+
while (retries < maxRetries) {
214+
if (threadShouldExit())
215+
break;
216+
if (fileTreeLock.tryEnter()) {
217+
fileTree = generateDirectoryValueTree(File(SettingsFile::getInstance()->getProperty<String>("browser_path")));
218+
fileTreeLock.exit();
219+
break;
220+
}
221+
retries++;
222+
Time::waitForMillisecondCounter(Time::getMillisecondCounter() + 100);
223+
}
224+
225+
226+
sendChangeMessage();
227+
}
228+
catch(...)
229+
{
230+
std::cerr << "Failed to update documentation browser" << std::endl;
231+
}
217232
}
218-
}
219233

220234
void filesystemChanged() override
221235
{

0 commit comments

Comments
 (0)