DarkRadiant: favourites b13ba221

Author Committer Branch Timestamp Parent
greebo greebo favourites 02.01.2021 09:18 favourites 3a7b0130
Affected Issues  0005127: Managing favorite resources (entities, textures,...)
Changeset 0005127: Fix crashes when destroying Populator objects deriving from ThreadedResourceTreePopulator and introducing their own members.
Due to C++ dtor execution order threads will crash when the base class ThreadedResourceTreePopulator calls Delete().
The 100% solution would be to disallow subclassing from wxThread, but I'd like to keep the abstraction and the code re-use - therefore deriving classes must invoke EnsureStopped in their destructors. If they fail to do so, there's another safety measure in ResourceTreeView to call EnsureStopped before releasing the instance, to give classes a chance to clean up while the hierarchy is still intact.
mod - libs/wxutil/dataview/IResourceTreePopulator.h Diff File
mod - libs/wxutil/dataview/ResourceTreeView.cpp Diff File
mod - libs/wxutil/dataview/ResourceTreeView.h Diff File
mod - libs/wxutil/dataview/ThreadedResourceTreePopulator.h Diff File
mod - radiant/ui/mediabrowser/MediaBrowserTreeView.cpp Diff File
mod - radiant/ui/mediabrowser/MediaBrowserTreeView.h Diff File