mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-30 02:50:05 +00:00
FileChooser: Avoid throwing bad_weak_ptr
It seems like shared_from_this may not be enabled when a unique_ptr is assigned to a shared_ptr (although it *should* be enabled when constructing a new shared_ptr from a unique_ptr). Functions that return objects that may need to use shared_from_this now return shared_ptr, just to be safe. Additionally, in some cases, shared_from_this was being called from Thread::run after the last reference to the shared object had been released. We now call shared_from_this during 'open', which will always run on the message thread while at least once reference to the shared object is alive.
This commit is contained in:
parent
1ff7fc38b1
commit
fd2f866dd1
7 changed files with 19 additions and 16 deletions
|
|
@ -219,11 +219,11 @@ private:
|
|||
|
||||
FileChooser::Native* FileChooser::Native::currentFileChooser = nullptr;
|
||||
|
||||
std::unique_ptr<FileChooser::Pimpl> FileChooser::showPlatformDialog (FileChooser& owner, int flags,
|
||||
std::shared_ptr<FileChooser::Pimpl> FileChooser::showPlatformDialog (FileChooser& owner, int flags,
|
||||
FilePreviewComponent*)
|
||||
{
|
||||
if (FileChooser::Native::currentFileChooser == nullptr)
|
||||
return std::make_unique<FileChooser::Native> (owner, flags);
|
||||
return std::make_shared<FileChooser::Native> (owner, flags);
|
||||
|
||||
// there can only be one file chooser on Android at a once
|
||||
jassertfalse;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue