mirror of
https://github.com/vcmi/vcmi.git
synced 2025-07-03 00:46:55 +02:00
Fix memory leaks in launcher.
This commit is contained in:
@ -985,7 +985,6 @@ void dispose()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// cleanup, mostly to remove false leaks from analyzer
|
// cleanup, mostly to remove false leaks from analyzer
|
||||||
CResourceHandler::clear();
|
|
||||||
if(CCS)
|
if(CCS)
|
||||||
{
|
{
|
||||||
CCS->musich->release();
|
CCS->musich->release();
|
||||||
|
@ -24,13 +24,13 @@
|
|||||||
|
|
||||||
void CModListView::setupModModel()
|
void CModListView::setupModModel()
|
||||||
{
|
{
|
||||||
modModel = new CModListModel();
|
modModel = new CModListModel(this);
|
||||||
manager = new CModManager(modModel);
|
manager = vstd::make_unique<CModManager>(modModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CModListView::setupFilterModel()
|
void CModListView::setupFilterModel()
|
||||||
{
|
{
|
||||||
filterModel = new CModFilterModel(modModel);
|
filterModel = new CModFilterModel(modModel, this);
|
||||||
|
|
||||||
filterModel->setFilterKeyColumn(-1); // filter across all columns
|
filterModel->setFilterKeyColumn(-1); // filter across all columns
|
||||||
filterModel->setSortCaseSensitivity(Qt::CaseInsensitive); // to make it more user-friendly
|
filterModel->setSortCaseSensitivity(Qt::CaseInsensitive); // to make it more user-friendly
|
||||||
|
@ -29,7 +29,7 @@ class CModListView : public QWidget
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
CModManager * manager;
|
std::unique_ptr<CModManager> manager;
|
||||||
CModListModel * modModel;
|
CModListModel * modModel;
|
||||||
CModFilterModel * filterModel;
|
CModFilterModel * filterModel;
|
||||||
CDownloadManager * dlManager;
|
CDownloadManager * dlManager;
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#include "../CStopWatch.h"
|
#include "../CStopWatch.h"
|
||||||
|
|
||||||
std::map<std::string, ISimpleResourceLoader*> CResourceHandler::knownLoaders = std::map<std::string, ISimpleResourceLoader*>();
|
std::map<std::string, ISimpleResourceLoader*> CResourceHandler::knownLoaders = std::map<std::string, ISimpleResourceLoader*>();
|
||||||
|
CResourceHandler CResourceHandler::globalResourceHandler;
|
||||||
|
|
||||||
CFilesystemGenerator::CFilesystemGenerator(std::string prefix):
|
CFilesystemGenerator::CFilesystemGenerator(std::string prefix):
|
||||||
filesystem(new CFilesystemList()),
|
filesystem(new CFilesystemList()),
|
||||||
@ -117,11 +118,6 @@ void CFilesystemGenerator::loadJsonMap(const std::string &mountPoint, const Json
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CResourceHandler::clear()
|
|
||||||
{
|
|
||||||
delete knownLoaders["root"];
|
|
||||||
}
|
|
||||||
|
|
||||||
ISimpleResourceLoader * CResourceHandler::createInitial()
|
ISimpleResourceLoader * CResourceHandler::createInitial()
|
||||||
{
|
{
|
||||||
//temporary filesystem that will be used to initialize main one.
|
//temporary filesystem that will be used to initialize main one.
|
||||||
@ -174,7 +170,8 @@ void CResourceHandler::initialize()
|
|||||||
// |-saves
|
// |-saves
|
||||||
// |-config
|
// |-config
|
||||||
|
|
||||||
knownLoaders["root"] = new CFilesystemList();
|
globalResourceHandler.rootLoader = vstd::make_unique<CFilesystemList>();
|
||||||
|
knownLoaders["root"] = globalResourceHandler.rootLoader.get();
|
||||||
knownLoaders["saves"] = new CFilesystemLoader("SAVES/", VCMIDirs::get().userSavePath());
|
knownLoaders["saves"] = new CFilesystemLoader("SAVES/", VCMIDirs::get().userSavePath());
|
||||||
knownLoaders["config"] = new CFilesystemLoader("CONFIG/", VCMIDirs::get().userConfigPath());
|
knownLoaders["config"] = new CFilesystemLoader("CONFIG/", VCMIDirs::get().userConfigPath());
|
||||||
|
|
||||||
|
@ -75,13 +75,6 @@ public:
|
|||||||
*/
|
*/
|
||||||
static void initialize();
|
static void initialize();
|
||||||
|
|
||||||
/**
|
|
||||||
* Semi-debug method to track all possible cases of memory leaks
|
|
||||||
* Used before exiting application
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
static void clear();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Will load all filesystem data from Json data at this path (normally - config/filesystem.json)
|
* Will load all filesystem data from Json data at this path (normally - config/filesystem.json)
|
||||||
* @param fsConfigURI - URI from which data will be loaded
|
* @param fsConfigURI - URI from which data will be loaded
|
||||||
@ -103,7 +96,12 @@ public:
|
|||||||
*/
|
*/
|
||||||
static ISimpleResourceLoader * createFileSystem(const std::string &prefix, const JsonNode & fsConfig);
|
static ISimpleResourceLoader * createFileSystem(const std::string &prefix, const JsonNode & fsConfig);
|
||||||
|
|
||||||
|
~CResourceHandler() = default;
|
||||||
private:
|
private:
|
||||||
/** Instance of resource loader */
|
/** Instance of resource loader */
|
||||||
static std::map<std::string, ISimpleResourceLoader*> knownLoaders;
|
static std::map<std::string, ISimpleResourceLoader*> knownLoaders;
|
||||||
|
static CResourceHandler globalResourceHandler;
|
||||||
|
|
||||||
|
CResourceHandler() {};
|
||||||
|
std::unique_ptr<ISimpleResourceLoader> rootLoader;
|
||||||
};
|
};
|
||||||
|
@ -945,7 +945,6 @@ int main(int argc, char * argv[])
|
|||||||
envHelper.callStaticVoidMethod(CAndroidVMHelper::NATIVE_METHODS_DEFAULT_CLASS, "killServer");
|
envHelper.callStaticVoidMethod(CAndroidVMHelper::NATIVE_METHODS_DEFAULT_CLASS, "killServer");
|
||||||
#endif
|
#endif
|
||||||
vstd::clear_pointer(VLC);
|
vstd::clear_pointer(VLC);
|
||||||
CResourceHandler::clear();
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user