- Fixed: If an object is flagged for euthanization while it's in the gray
list, it should just be ignored during the propagation stage. - After sleeping on it and realizing what was really going in, I generalized the inventory fix from the 13th: The actor is flagged by Destroy(), then it is later inserted into the thinker list by DThinker::SerializeAll(). So rather than unlinking the skipped player from their inventory, just make sure any flagged thinkers aren't inserted into a list. - Fixed: FCanvasTextureInfo::Viewpoint needed a read barrier, and the whole list should serve as a root. - Reimplemented SPC playback as a custom codec for FMOD. - Removed spc_frequency, because snes_spc only supports the SPC's native frequency of 32000 Hz. SVN r806 (trunk)
This commit is contained in:
parent
b8304868ec
commit
ce811319a7
12 changed files with 367 additions and 168 deletions
|
|
@ -1162,20 +1162,10 @@ FArchive &FArchive::ReadObject (DObject* &obj, PClass *wanttype)
|
|||
{
|
||||
// When the temporary player's inventory items were loaded,
|
||||
// they became owned by the real player. Undo that now.
|
||||
AInventory *item;
|
||||
|
||||
for (item = tempobj->Inventory; item != NULL; item = item->Inventory)
|
||||
for (AInventory *item = tempobj->Inventory; item != NULL; item = item->Inventory)
|
||||
{
|
||||
item->Owner = tempobj;
|
||||
}
|
||||
item = tempobj->Inventory;
|
||||
tempobj->Inventory = NULL;
|
||||
#ifdef _DEBUG
|
||||
// The only references to this inventory list should be from the
|
||||
// temporary player, so they will be freed when a collection occurs.
|
||||
size_t a = 0;
|
||||
assert(item == NULL || (a = DObject::StaticPointerSubstitution(item, NULL)) == 0);
|
||||
#endif
|
||||
tempobj->Destroy ();
|
||||
}
|
||||
else
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue