mirror of
				https://github.com/vcmi/vcmi.git
				synced 2025-10-31 00:07:39 +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 | ||||
| 	CResourceHandler::clear(); | ||||
| 	if(CCS) | ||||
| 	{ | ||||
| 		CCS->musich->release(); | ||||
|   | ||||
| @@ -24,13 +24,13 @@ | ||||
|  | ||||
| void CModListView::setupModModel() | ||||
| { | ||||
| 	modModel = new CModListModel(); | ||||
| 	manager = new CModManager(modModel); | ||||
| 	modModel = new CModListModel(this); | ||||
| 	manager = vstd::make_unique<CModManager>(modModel); | ||||
| } | ||||
|  | ||||
| void CModListView::setupFilterModel() | ||||
| { | ||||
| 	filterModel = new CModFilterModel(modModel); | ||||
| 	filterModel = new CModFilterModel(modModel, this); | ||||
|  | ||||
| 	filterModel->setFilterKeyColumn(-1); // filter across all columns | ||||
| 	filterModel->setSortCaseSensitivity(Qt::CaseInsensitive); // to make it more user-friendly | ||||
|   | ||||
| @@ -29,7 +29,7 @@ class CModListView : public QWidget | ||||
| { | ||||
| 	Q_OBJECT | ||||
|  | ||||
| 	CModManager * manager; | ||||
| 	std::unique_ptr<CModManager> manager; | ||||
| 	CModListModel * modModel; | ||||
| 	CModFilterModel * filterModel; | ||||
| 	CDownloadManager * dlManager; | ||||
|   | ||||
| @@ -22,6 +22,7 @@ | ||||
| #include "../CStopWatch.h" | ||||
|  | ||||
| std::map<std::string, ISimpleResourceLoader*> CResourceHandler::knownLoaders = std::map<std::string, ISimpleResourceLoader*>(); | ||||
| CResourceHandler CResourceHandler::globalResourceHandler; | ||||
|  | ||||
| CFilesystemGenerator::CFilesystemGenerator(std::string prefix): | ||||
| 	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() | ||||
| { | ||||
| 	//temporary filesystem that will be used to initialize main one. | ||||
| @@ -174,7 +170,8 @@ void CResourceHandler::initialize() | ||||
| 	//    |-saves | ||||
| 	//    |-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["config"] = new CFilesystemLoader("CONFIG/", VCMIDirs::get().userConfigPath()); | ||||
|  | ||||
|   | ||||
| @@ -75,13 +75,6 @@ public: | ||||
| 	 */ | ||||
| 	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) | ||||
| 	 * @param fsConfigURI - URI from which data will be loaded | ||||
| @@ -103,7 +96,12 @@ public: | ||||
| 	 */ | ||||
| 	static ISimpleResourceLoader * createFileSystem(const std::string &prefix, const JsonNode & fsConfig); | ||||
|  | ||||
| 	~CResourceHandler() = default; | ||||
| private: | ||||
| 	/** Instance of resource loader */ | ||||
| 	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"); | ||||
| #endif | ||||
| 	vstd::clear_pointer(VLC); | ||||
| 	CResourceHandler::clear(); | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user