Skip to content

Conversation

@cwisniew
Copy link
Member

@cwisniew cwisniew commented Feb 5, 2025

This change is Reviewable

kwvanderlinde and others added 6 commits January 24, 2025 15:24
The cache is moved to `ZoneView` to better match the 1.15 and earlier cache. The cache is now cleared on `TokensChanged`
events as well as `TopologyChanged`, as it was before.
The getAssetAsynchronous method uses a thread pool so that requests to
load assets don't block networking threads etc.

It has been a single thread pool through the existing git history
but it is assumed that it is like this because it used to have a thread
and then was converted to use a single thread fixed thread pool.

Unfortunately having a single thread only means that if an asset load
callback indirectly loads another asset then this can deadlock
since the asset loader thread needs to be released before the load
request can start, which it can't because that thread is waiting for the
result of loading the new asset, thus it deadlocks if an AddOn includes
a JavaScript onInit script since it deadlocks waiting to load that
script.

Changing the thread pool so that the threads load in parallel is an
observable change that could cause problems,
but if the AddOn isn't already loaded the addonLoader's thread pool
loads it instead and that works fine,
so MapTool should be alright with addons and other assets loading in
parallel.
…mask-cache-not-invalidated

Fix noded topology cache invalidation
Use a variable sized thread pool in AssetManager
…e-to-draw

Drawing tools should always be available, even for players
@cwisniew cwisniew added the ignore-for-release-note Wont be auto added to the release note label Feb 5, 2025
@cwisniew cwisniew closed this Feb 6, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ignore-for-release-note Wont be auto added to the release note

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants