v1.11 Breaking C API change to Completion Actions - added Pre and Post completion functions
LatestNew Features
This release adds a breaking API feature to the C interface: pre-completion and post-completion functions. The C++ interface is unchanged.
A pre-completion function is called before the complete action task is 'complete', which means this is prior to dependent tasks being run. This function can thus alter any task arguments of the dependencies.
A post-completion function is called after the complete action task is 'complete'. Dependent tasks may have already been started. This function can delete the completion action if needed as it will no longer be accessed by other functions.
It is safe to set either of these to NULL if you do not require that function.
See CompletionAction_c.c for an example showing both how to modify following tasks as well as free memory from the completion action and previous tasks.
The C++ equivalent was already possible, I have updated the example CompletionAction.cpp to demonstrate how.
Fixes
In addition this release adds the following fixes:
- Allow ENKITS_API to be defined externally + Initialisation order warning fix
- enki::ThreadDataStore padding changes and improved static_assert - fixes #67
- Fix for WaitforTask running tasks if pCompletable_ already complete and not nullptr
Thanks to @BobbyAnguelov, @TurtleSimos and @makuto for their issue reports, PRs, and testing which have helped bring this release together. I'd also like to thank our Patreon and Github supporters for their financial assistance.
Support development of enkiTS through Github Sponsors or Patreon