Age | Commit message (Collapse) | Author |
|
When new bitmaps are added and the underlying Common::Array needs
to move to expand, this invalidates all pointers to bitmaps, which
makes it basically impossible to use the bitmap segment since you
never know if a reference is going to be invalidated due to an
array move.
To solve this, BitmapTable is changed to hold pointers to
SciBitmaps that are allocated separately on the heap instead, so
when those bitmaps are looked up, the resulting pointers are valid
for the lifetime of the bitmap, instead of the lifetime of the
Common::Array used internally by BitmapTable.
|
|
|
|
Bitmaps in ScrollWindow and Robot code are managed by the kernel
and not by game scripts, although they must be able to be
referenced through a reg_t. To prevent incorrect GC of bitmaps
that are in use but not referenced by any game script, explicit
memory management of hunk entries can be enabled.
|
|
These should be all the actually used subfunctions.
Co-authored-by: Colin Snover <github.com@zetafleet.com>
|
|
|
|
No functionality change has been made with this commit. This avoids
setting and getting the reg_t members directly, and is the basis of any
future work on large SCI3 scripts (larger than 64KB)
|
|
Having a deleted script with non-zero lockers had the side effect of
making the deleted script re-appear in the GC's work list, including
any (deleted) objects in the script.
This should be the root cause of bugs #3299458 and #3295849, so
also delete the workaround added for that in 35086fe1.
|
|
The sanity check added in rev #35086fe17c fixes the crashes with that
code when an invalid reference is about to be processed, but these
references shouldn't be in the stack at all in the first place, so the
root cause seems to be somewhere else.
|
|
|
|
|
|
This allows us make _windowList private again
|
|
|
|
|
|
|
|
SCI32 has no ports
|
|
|
|
SCI scripts can contain stale pointers, which are used later on. We now delete
the contents of hunk entries without invalidating the relevant pointers and let
the GC clear the references. Many thanks to waltervn and wjp for all their work
and help on this.
|
|
svn-id: r55890
|
|
svn-id: r55116
|
|
svn-id: r55086
|
|
wastes cycles if we're not debugging the GC
svn-id: r52465
|
|
svn-id: r50553
|
|
svn-id: r50552
|
|
The version of push() that pushes arrays inside WorklistManager has been renamed to pushArray(), so that it's more apparent where arrays are pushed.
svn-id: r50486
|
|
svn-id: r50443
|
|
svn-id: r50430
|
|
This means a little bit more overhead but makes the code much more readable
and understandable.
svn-id: r50429
|
|
svn-id: r47940
|
|
svn-id: r47833
|
|
svn-id: r47707
|
|
svn-id: r44878
|
|
svn-id: r44629
|
|
Script::_objects by a HashMap -- goodbye, class IntMapper
svn-id: r44240
|
|
and scriptObjInit11 to be more similar
svn-id: r44234
|
|
svn-id: r44170
|
|
svn-id: r44130
|
|
svn-id: r44126
|
|
svn-id: r43980
|
|
getresourceManager -> getResourceManger
resourceManager -> resMan
segmentManager ->segMan
svn-id: r43908
|
|
- Made some version comparisons for old SCI0 versions easier to read
- Removed the GET_SEL32SV macro
svn-id: r43729
|
|
- Replaced some EngineState parameters
- The SCI version is now obtained from the resource manager or the segment manager, thereby simplifying several functions
- Plugged 2 leaks in the fallback detector
- Renamed the segment manager and resource manager to "segmentManager" and "resourceManager" in all places, for consistency
svn-id: r43722
|
|
svn-id: r42167
|
|
Storing them as reg_t* could cause the pointers to become invalid
when they pointed into CloneTable since CloneTable can be re-allocated.
svn-id: r41220
|
|
"show_map") and removed the GFXWC macro. Some cleanup
svn-id: r41032
|
|
by changing the executionStack implementation to a list.
svn-id: r40971
|
|
svn-id: r40767
|
|
code should be even stricter in detecting invalid VM stack access (and some bugs when loading saves might be fixed now...)
svn-id: r40694
|
|
svn-id: r40431
|
|
svn-id: r40377
|
|
svn-id: r40376
|