merge a lot of these static destructor-only structs into regular
functions added to the exit chain with atterm so that they can be called
in a deterministic order and not whatever order the linker decides to put
them in. (Interestingly, the amount of memory used when repeatedly
executing the same map command at the console varies up and down, but it
now stays relatively stable rather than increasing unbounded.)
- Fixed: The list of resolutions in the video modes menu was not freed
at exit.
- Fixed: mus_playing.name was not freed at exit.
- Fixed: SN_StopAllSequences() should be called at the start of
P_FreeLevelData(), not just before the call to P_SetupLevel() in
G_DoLoadLevel(), so it can run even at exit. And C_FullConsole() can
call P_FreeLevelData() to free more memory too.
- Fixed: StatusBar was not freed at exit.
- Fixed: spritesorter was not freed at exit.
- Fixed: Bad things happened if FString's data pool was destroyed before
all C_RemoveTabCommand() calls were made.
- Added an overload for FArchive << FString.
- Fixed: The players' log text was not freed at exit.
- Fixed: Bot information was not freed at exit.
- Fixed: doomcom was not freed at exit. But since it's always created,
there's no reason why it needs to be allocated from the heap. My guess
is that in the DOS days, the external packet driver was responsible for
allocating doomcom and passed its location with the -net parameter.
- Fixed: FBlockNodes were not freed at exit.
- Fixed: Openings were not freed at exit.
- Fixed: Drawsegs were not freed at exit.
- Fixed: Vissprites were not freed at exit.
- Fixed: Console command history was not freed at exit.
- Fixed: Visplanes were not freed at exit.
- Fixed: Call P_FreeLevelData() at exit.
- Fixed: Channel, SoundCurve, and PlayList in s_sound.cpp were not freed at
exit.
- Fixed: Sound sequences were not freed at exit.
- Fixed: DSeqNode::Serialize() did not resize the m_SequenceChoices array
when loading.
SVN r106 (trunk)
- Fixed: FDoomEdMap needed a destructor.
- Fixed: Decal animators were never freed.
- Fixed: Colormaps were never freed.
- Fixed: Memory allocated in R_InitTranslationTables() was never freed.
- Fixed: R_InitParticles() allocated way more memory than it needed to. (And the
particle memory was never freed, either.)
- Fixed: FMetaTable::FreeMeta() should use delete[] to free string metadata.
- Fixed: FConfigFile::ClearCurrentSection() must cast the entry to a char *
before deleting it, because that's the way it was allocated.
- Fixed definitions of DeadZombieMan and DeadShotgunGuy in doom/deadthings.txt.
Skip_super resets the dropitem list, so having it after "DropItem None" is
pointless.
- Fixed: Decorate DropItem information was never freed.
- Fixed: FinishStates() allocated even 0-entry state arrays.
- Fixed: Default actor instances were never freed.
- Fixed: FRandomSoundList never freed its sound list.
- Fixed: Level and cluster strings read from MAPINFO were never freed.
- Fixed: Episode names were never freed.
- Fixed: InverseColormap and GoldColormap were never freed. Since they're always
allocated, they can just be arrays rather than pointers.
- Fixed: FFont destructor never freed any of the character data or the font's name.
- Fixed: Fonts were not freed at exit.
- Fixed: FStringTable::LoadLanguage() did not call SC_Close().
- Fixed: When using the -iwad parameter, IdentifyVersion() did not release the
buffer it created to hold the parameter's path.
SVN r88 (trunk)
- Converted A_Hexendecorations.cpp
- Changed the lower decal spawning code to transfer the main decal's color if
the lower decal's default color is the same as the main decal's.
- Changed the decal stretcher back to use the specified size parameters as a
scaling factor and not a destination size because this is more consistent with
the rest of the decal code. Also adjusted the blood smear definition in DECALDEF
and the description in the Wiki for this.
- Added Jim's most recent fixes.
SVN r77 (trunk)
- Fixed: Strife's ending check included destroying the computer - an event
that happens before the branch in the story.
- Fixed: The overloaded FRandom::Random2 function with mask parameter didn't
use its parameter.
- Added Jim's latest makefile.linux
SVN r60 (trunk)
- Added multiple-choice sound sequences. These overcome one of the major
deficiences of the Hexen-inherited SNDSEQ system while still being Hexen
compatible: Custom door sounds can now use different opening and closing
sequences, for both normal and blazing speeds.
- Added a serializer for TArray.
- Added a countof macro to doomtype.h. See the1's blog to find out why
it's implemented the way it is.
<http://blogs.msdn.com/the1/articles/210011.aspx>
- Added a new method to FRandom for getting random numbers larger than 255,
which lets me:
- Fixed: SNDSEQ delayrand commands could delay for no more than 255 tics.
- Fixed: If you're going to have sector_t.SoundTarget, then they need to
be included in the pointer cleanup scans.
- Ported back newer name code from 2.1.
- Fixed: Using -warp with only one parameter in Doom and Heretic to
select a map on episode 1 no longer worked.
- New: Loading a multiplayer save now restores the players based on
their names rather than on their connection order. Using connection
order was sensible when -net was the only way to start a network game,
but with -host/-join, it's not so nice. Also, if there aren't enough
players in the save, then the extra players will be spawned normally,
so you can continue a saved game with more players than you started it
with.
- Added some new SNDSEQ commands to make it possible to define Heretic's
ambient sounds in SNDSEQ: volumerel, volumerand, slot, randomsequence,
delayonce, and restart. With these, it is basically possible to obsolete
all of the $ambient SNDINFO commands.
- Fixed: Sound sequences would only execute one command each time they were
ticked.
- Fixed: No bounds checking was done on the volume sound sequences played at.
- Fixed: The tic parameter to playloop was useless and caused it to
act like a redundant playrepeat. I have removed all the logic that
caused playloop to play repeating sounds, and now it acts like an
infinite sequence of play/delay commands until the sequence is
stopped.
- Fixed: Sound sequences were ticked every frame, not every tic, so all
the delay commands were timed incorrectly and varied depending on your
framerate. Since this is useful for restarting looping sounds that got
cut off, I have not changed this. Instead, the delay commands now
record the tic when execution should resume, not the number of tics
left to delay.
SVN r57 (trunk)
partially because the background patch has to be drawn always to
overwrite the old display.
- Fixed: Giving a health item to a non-player caused a crash.
- Added a compatibility option to limit deh.MaxHealth to the health bonus.
Originally this value wasn't used for health packs. Doing this was a bug
in Boom but since there's quite a few maps out there which require
Boom's altered behavior it has to be compatibility optioned.
- Fixed: The health bonus's max health must be defined by deh.MaxHealth,
not deh.MaxSoulsphere. To achieve this deh.MaxHealth's handling had to
be altered because it has to default to 100.
- Fixed: ZDBSP created incorrect side references with compressed sidedefs
and both sidedefs of a linedef being the same. This only affects the
external tool because the internal node builder is run after uncompressing
the sidedefs.
- Added Jim's latest makefile.linux.
- Added a consistency check to the PNAMES loader because one crash log
indicated that it crashed due to a corrupt PNAMES lump.
- Brought back the sector based sound target handling as a compatibility
option. This radical change just broke far too many maps that depend
on the original behavior. Strife's special AI functions are excluded
though because they work better with the new method.
SVN r56 (trunk)