Skip to content

paintera-0.21.0

Compare
Choose a tag to compare
@hanslovsky hanslovsky released this 07 Oct 15:24
· 1645 commits to master since this release

Paintera 0.21.0

Previous release: 0.20.1

Changelog

New Features

  • Update imglib2-cache dependency to use Invalidate interface instead and remove Paintera's InvalidateAll and Invalidate interfaces (#316)
  • Remove global cache and rely on imglib2-caches only (#316)

Bug Fixes

  • clean-up masked source resources (#309) (#316)
  • Error message was confusing when paintera failed to deserialize project (#338). Print more helpful error message instead. (#339)
  • Filter-not-null label state preference pane nodes (#341)
  • Mesh resources would not be freed when not being used anymore (#337). An anonymous/lambda listener was the culprit. Explicilty naming and unbinding after use solved the problem. (#340)

Pull Requests

#316

Merge pull request #316 from saalfeldlab/remove-global-cache

[BUGFIX] clean-up masked source resources (#309)
[FEATURE] Update imglib2-cache dependency to use Invalidate interface instead and remove Paintera's InvalidateAll and Invalidate interfaces
[FEATURE] Remove global cache and rely on imglib2-caches only

#339

Merge pull request #339 from saalfeldlab/improve-max-id-error-message

[BUGFIX] Error message was confusing when paintera failed to deserialize project (#338). Print more helpful error message instead.

#341

Merge pull request #341 from saalfeldlab/ignore-preference-nodes-if-null

[BUGFIX] Filter-not-null label state preference pane nodes

Adding a state pane for label sources would fail if no masked source was provided because MaskedSourceNode.node would return null and VBox cannot have null children.

#340

Merge pull request #340 from saalfeldlab/fix-337

[BUGFIX] Mesh resources would not be freed when not being used anymore (#337). A anonymous/lambda listener was the culprit. Explicilty naming and unbinding after use solved the problem.

  • Release MeshGenerator resources when disposed

Fixes #337
Before this commit, a listener would be added to the isManagedProperty of the meshSettings to update the MeshGenerator with appropriate global or individual MeshSettings. For some reason, this kept the internal JavaFX classes NGMeshView and MeshView alive, prohibiting clean-up of their resources, and, as a result, leaking memory. This commit fixes this issue by adding a meshSettingsProperty to the MeshGenerator that the caller can unbind to remove the listener that holds on to the MeshManager's resources.

  • Set manager mesh settings to null and simplify removeAll

  • Revert back to unbinding mesh settings on separate thread

After @igorpisarev pointed out (and I confirmed) that unbinding is slow for a large number of selected meshes (e.g. select all on CREMI A), I had to revert the previous changes. I added a new single threaded executor to avoid creating new threads each time and inverted the call chain to avoid code duplication.