clementine-player / Clementine

:tangerine: Clementine Music Player
https://www.clementine-player.org/
GNU General Public License v3.0
3.68k stars 670 forks source link

Update projectM visualizer to use the new upstream 4.x versions/API #7307

Open kblaschke opened 7 months ago

kblaschke commented 7 months ago

Before posting

Please follow the steps below and check the boxes with [x] once you did the step.

System information

Affects all supported platforms and Clementine versions at the time of opening the issue.

Expected behaviour / actual behaviour

Note: I'm a maintainer of libprojectM, actively working on the library and related apps.

Currently, Clementine uses a very old (v2.x) fork of libprojectM, which is part of the codebase.

While projectM hasn't changed much between 2.x and 3.x releases, the 4.0 release introduced several bugfixes and a stable C API to make intergrating and updating the library easier. The upcoming 4.1 version, despite being a minor upgrade, will be a major rewrite of projectM's internals, especially the renderer part which parses, runs and draws the visuals.

Replacing the current fork with the latest projectM release, either as an (optional) external dependency or a Git submodule, would bring these improvements to Clementine. Linking projectM as a shared library would also make it easier for Linux package maintainers, as Clementine can then use the system's libprojectM.so.

Since the API won't change in 4.1, work on integrating the library can already be done now. If no one assigns the issue, I'll see if I can find time to do this work after the projectM 4.1 release.