MCPcopy Create free account
hub / github.com/dhewm/dhewm3 / Shutdown

Method Shutdown

neo/framework/FileSystem.cpp:2749–2799  ·  view source on GitHub ↗

================ idFileSystemLocal::Shutdown Frees all resources and closes all files ================ */

Source from the content-addressed store, hash-verified

2747================
2748*/
2749void idFileSystemLocal::Shutdown( bool reloading ) {
2750 searchpath_t *sp, *next, *loop;
2751
2752 backgroundThread_exit = true;
2753 Sys_TriggerEvent();
2754 Sys_DestroyThread(backgroundThread);
2755 backgroundThread_exit = false;
2756
2757 gameFolder.Clear();
2758
2759 serverPaks.Clear();
2760 if ( !reloading ) {
2761 restartChecksums.Clear();
2762 addonChecksums.Clear();
2763 }
2764 loadedFileFromDir = false;
2765
2766 ClearDirCache();
2767
2768 // free everything - loop through searchPaths and addonPaks
2769 for ( loop = searchPaths; loop; loop == searchPaths ? loop = addonPaks : loop = NULL ) {
2770 for ( sp = loop; sp; sp = next ) {
2771 next = sp->next;
2772
2773 if ( sp->pack ) {
2774 unzClose( sp->pack->handle );
2775 delete [] sp->pack->buildBuffer;
2776 if ( sp->pack->addon_info ) {
2777 sp->pack->addon_info->mapDecls.DeleteContents( true );
2778 delete sp->pack->addon_info;
2779 }
2780 delete sp->pack;
2781 }
2782 if ( sp->dir ) {
2783 delete sp->dir;
2784 }
2785 delete sp;
2786 }
2787 }
2788
2789 // any FS_ calls will now be an error until reinitialized
2790 searchPaths = NULL;
2791 addonPaks = NULL;
2792
2793 cmdSystem->RemoveCommand( "path" );
2794 cmdSystem->RemoveCommand( "dir" );
2795 cmdSystem->RemoveCommand( "dirtree" );
2796 cmdSystem->RemoveCommand( "touchFile" );
2797
2798 mapDict.Clear();
2799}
2800
2801/*
2802================

Callers

nothing calls this directly

Calls 6

unzCloseFunction · 0.85
RemoveCommandMethod · 0.80
Sys_TriggerEventFunction · 0.50
Sys_DestroyThreadFunction · 0.50
ClearMethod · 0.45
DeleteContentsMethod · 0.45

Tested by

no test coverage detected