Skip to content

Implement 4.2 release features#950

Closed
revmischa wants to merge 6 commits intomasterfrom
feature/4.2-release-tasks
Closed

Implement 4.2 release features#950
revmischa wants to merge 6 commits intomasterfrom
feature/4.2-release-tasks

Conversation

@revmischa
Copy link
Member

Implements several features targeted for the 4.2 release:

Bug fixes:

New API features:

Build improvements:

The variable monitoring feature (#664) is not included as it requires deeper architectural changes to the expression evaluation system.

When building for GLES platforms, SOIL2 uses eglGetProcAddress but the
EGL library wasn't being linked, causing undefined symbol errors at
runtime on systems like Raspberry Pi OS.

Fixes #926
Adds projectm_set_preset_start_clean() and projectm_get_preset_start_clean()
functions to control whether new presets start with a black canvas or inherit
the previous preset's last frame.

Default behavior remains unchanged (copy previous frame), but applications
can now opt-in to clean starts by setting this flag to true.

Fixes #298
Adds projectm_playlist_set_preset_load_event_callback() to allow applications
to handle preset loading themselves. This enables loading presets from:
- Archives (ZIP files)
- Network sources (HTTP)
- Custom storage solutions
- Asynchronous loading patterns

When the callback is set and returns true, the playlist library skips its
default filesystem-based loading. If the callback returns false or isn't set,
the default behavior is used.

Fixes #946
Adds a callback that allows applications to provide textures from
non-filesystem sources like archives, network, or procedurally generated
content. The callback receives the texture name and can return either
raw pixel data or an existing OpenGL texture ID.

Fixes #870
Adds ENABLE_MACOS_FRAMEWORK cmake option to build projectM-4.framework
and projectM-4-playlist.framework bundles instead of plain dylibs.
Only available on macOS with shared library builds.

The frameworks include all public headers in the Headers/ directory
and use standard macOS framework versioning (Version A).

Fixes #924
@revmischa revmischa force-pushed the feature/4.2-release-tasks branch from d6a0440 to 48a60d2 Compare January 22, 2026 05:50
Move TextureLoadData and TextureLoadCallback from TextureManager.hpp
to a separate TextureTypes.hpp header. This allows ProjectM.hpp to
include only the necessary types without pulling in internal
dependencies that aren't installed.
@revmischa revmischa closed this Jan 22, 2026
@revmischa revmischa deleted the feature/4.2-release-tasks branch January 22, 2026 07:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant