Added an option to try to provide a copy of the albumart for currently playing item in a manner that allows Discord to show it instead of just being limited to the predefined logo branding image
Added forced mono playback support to the FLAC, Musepack, Vorbis & WavPack input plug-ins (for when the option is enabled via the Playback preference page)
Added 24-bit output support for Musepack when the option is enabled via the Playback preference page
Added an option to the native scrobbling support so it can be made to only scrobble what's known to be in the local library database as a means to control what might be scrobbled (e.g. ignoring temp files)
Added processing time to the /*DIAG command-line options to help give an indicator of any perf issues when trying to load the specified database
Added an option to the classic skin prefs page so it's possible to disable the ' *** ' part appended to the songticker text if it needs to be scrolled due to being too large to fit within the skin area
Added a $rating([filename][, star_mode]) ATF method to make it hopefully simpler to have the current playing or a custom file's rating shown using unicode stars (imho nicer to look at vs asterisk unless setting star_mode to zero)
Added all of the created generic embedded windows to be accessible as toggle window global hotkey action instead of relying on the core &/or plug-in creating such windows to set things up which meant some were missed
Added support for skins to override the default big clock window colours which follow the main skins colours by either a bigclock.txt (done in the same manner as the waveform seeker plug-in)
Added an option onto the History media library node to try to refresh the current titles it has cached which can be useful if the main ATF has been changed to help keep things looking the same (this new action will not refresh the title for urls as that's often not going to be viable without playing them & I doubt anyone would appreciate them all being pinged)
Added matching refresh & remove menu items from the local library node right-click menus to the local library view settings button menu which should make it easier for some to find that don't know about the node right-click menus
Added a remove view item(s) menu action to the local library view settings button menu as a complement to the additional menu items noted in the line above
Added making backup copies of the bookmark related files when they're being modified incase of there being any issues during the modification process
Added basic panning / balance support to the Not So Yasapi output plug-in but only if the source is stereo (mono / more channels is something for later) which should suffice for most when this plug-in didn't do anything (it's somewhat at odds with the intent of WASAPI but its been asked for a few times now so here we go)
Changed how the crash reporter handles auto restarting so the dialog now cancels the restart if using the action button or clicking the close window button instead of triggering the restart immediately which is useful for when there's a core bug which might get it stuck in a restart loop
Changed the message shown if there's an issue to load any of the needed w5s component dlls to make it more obvious that re-downloading the WACUP install is required if it failed after a self-update attempt
Changed some of the native WACUP input plug-ins to attempt to react to the main replaygain preference option being toggled if playback is happening (there's still cases where it will not fully live update)
Changed back the global hotkeys plug-in to be loaded under WINE again as it can work for some setups & was unbeknownst to me being actively used so this should resolve that for those users
Changed how the WACUP core dll is built to now have the cpu optimised image handling aspects in a supporting dll (pucaw.dll) which is mostly to help save time when compiling the core dll
Changed the diagnostic preference page & crash reporter system details for WINE setups to better handle things when some of the information isn't provided despite the API calls giving a successful response
Changed the WAV handling input plug-in's "formatinformation" response to try to report the sub-format of the file (e.g. "Signed 24 bit PCM")
Changed some of the plug-ins, supporting libraries & core dll loading to reduce the memory & some aspects of initialisation to be done when they're going to be used instead of always done if never used (this is a small reduction compared to work done a year or so back but every byte saved & fewer calls needed to allocate more memory helps)
Changed the crash reporter to skip reporting the current skin in it's summary log file where it's know that a heap / process memory corruption has occurred which is likely to cause ini reading issues
Changed some of the plug-ins & core dll to remove some duplicate processing done on internally generated strings to reduce some of the cpu overhead for small per-call savings (aka micro optimisations)
Changed how WACUP is shown in Task Manager for its running process name
Changed IPC_GET_GENSKINBITMAP to expose the core's viscolor.txt related information for those skins supporting it
Changed some of the nde memory handling for a small reduction in database loading times (typically a few ms per db)
Changed the missing files highlighting of the main playlist to now do the periodic checking on a background thread to avoid it causing ui redraws & potentially blocking the main ui thread when the view of the playlist hasn't changed nor has the missing status of the items shown which avoids some main ui thread contention & triggering playlist redraws & the associated cpu load for no useful benefit
Changed the Taskbar Text sub-page to allow for the option to control appending ' *** ' to the end of the taskbar string if scrolling is enabled to be available under the default taskbar text string (previously it was only available if a custom atf string was selected to be used for the taskbar text though disabling this may break some external tools that scrape now playing from the process text)
Changed how the tooltips for the generic skinned windows are created to minimise their impact during initial loading (they tend to take 5-10ms to be created on my dev setup which adds up with multiple windows)
Changed the streaming source plug-in to avoid lame_enc.dll being immediately loaded if there's no streams configured to automatically be run on load
Changed how resuming playback on loading works to avoid a potentially noticeable delay in playback starting if replaygain handling is also enabled
Changed how the podcast plug-in saves out feed changes to avoid it causing as many ui related blocks along with getting it begun sooner during closing if there's a need for it
Changed how current playing information from the input plug-ins is handled to avoid too many calls causing higher than expected cpu loads (this is more for some modern skins which this build doesn't support)
Changed how the vertical padding around the skinned buttons is determined to help avoid the lower part of characters like y being clipped (more of an issue for those on Win7)
Fixed the extraction of file extension changes from the prior build not working as expected which caused some files with multiple dots/periods in their full file paths from being played due to the wrong extension having been extracted which could not then be matched to any of the appropriate input plug-ins (this reverts some of the change as aspects are still needed for virtualised vgm related file paths)
Fixed the refresh metadata action in the local library filter panes not working due to a bug preventing the contextual data being passed to the processing thread
Fixed the local library view albumart cache not generating a consistent hash for the file when the media file was located within the first level folder (e.g. d:\music) which could cause some actions including refresh the albumart to not always work as expected
Fixed some albumart in the local library views not being displayed correctly (e.g. part of it being wrapped to the other side of the image) if the original size of the image vs the requested scaled down image didn't align in an expected manner against the desired output size for the image vs any centering that might be needed
Fixed using the built-in null output plug-in under some modern skins causing a crash when trying to interact with the skin crossfading controls (this isn't supported by the null output & neither is crashing)
Fixed the IPC_UPDTITLE api & similarly related internal actions not always appearing to work due to the background metadata request processor not always being created in an expected manner which also manifested in streaming url title updates not being shown
Fixed the equaliser window button right-click menus getting corrupted due to the wrong menu being worked on with the newly added actions on the on/off button from the prior build
Fixed a playback failure with in_mp4 in relation to the crash fixes introduced from the prior build due to some iTunes related metadata for gapless playback being incorrectly re-applied on all audio samples
Fixed the possible cause of some installs experiencing crashes when there is a playback event triggering the Windows 10+ SMTC feature due to some aspects of the cppwinrt instance having not been initialised
Fixed a crash with the recently added native scrobbling feature if playback is happening & the scrobbling setup has not been completed at the time of a new playback event
Fixed an in_mp4 related crash more likely to be seen if still playing whilst closing has been triggered due to an incorrect status check
Fixed in_mp4 not applying ReplayGain to AAC audio because someone didn't remember to do it when libfaad2 was introduced for AAC playback
Fixed another crash in the notsodirect output due to a mishandled device sharing update
Fixed how ReplayGain information is obtained so it should no longer cause a potential long blocking action on the main ui thread (e.g. due to the local library already being busy at the same time) which has been causing some setups to crash due to the OS treating it as a hung process or for refreshing the newly playing item title updates to fail or for ReplayGain to not be applied as expected for any MP3 files
Fixed a playlist item title formatting crash issue (possibly a weird side-effect of the issue above this)
Fixed a libpng build configuration issue which could cause valid png files created under much older libpng versions to fail to be decoded as expected which could cause full process crashes to occur or aspects of some modern skins / albumart to fail to render as expected (this explains some of the weird skin loading related failures over the years as libpng 1.6.x changed some handling on chunk load)
Fixed NSF/NSFE playback not working due to an internal api change no longer passing the internal object to the playback thread (along with some related changes to avoid the thread handle from leaking)
Fixed the crash report summary incorrectly handling crash reports from WINE configurations due to them having an extra line in the message body which wasn't being clipped along with not being able to access the zip comment if it's already open in another process as long as it doesn't have an exclusive lock & allows for shared read-only access
Fixed a hang / crash that could occur in some instances when trying to use the preference option to completely reset the local library database if there's some actions already running against it which are taking longer to abort than expected
Fixed a small closing performance issue with the NSF/NSFE (in_notyansf) input plug-in which caused it to appear in the profiling output when most of the time it shouldn't have been
Fixed the JTF window initial search on load incorrectly following the search delay input time which depending on the configured delay would make the window loading feel really slow
Fixed some parts of the skinned JTF window incorrectly changing the text font seen when moving the window between monitors (more of an issue if the dpi of the monitors is different)
Fixed the unskinned JTF window not showing the search results in the listbox using appropriate colours if dark mode is enabled & WACUP is following that OS styling
Fixed some of the local library queries incorrectly allocating more memory for the item records than is needed when the number of results is known instead of allocating with the default padding
Fixed some deadlocks related to getting metadata from the local library plug-in
Fixed the play/enqueue/enqueue & play handling from the local library plug-in incorrectly allowing the thread used to avoid a main ui blocking action (e.g. if made to play all local library items) to be created as many times as possible when an action was already in process (aka don't hold down enter on a selected library node)
Fixed a crash when trying to update the internal shuffle table due to too many actions from different threads trying to start playback
Fixed the albumart plug-in window sometimes not showing the metadata that's expected for the playing / selected file if it's not present in the local library database (this wasn't a consistent failure)
Fixed some issues with a number of the input plug-ins not liking being called too fast as part of some of the fix testing in the lines above this
Fixed a thread safety issue with an internal api used to generate unique values which could in rare situations cause a processing related crash
Fixed the local library plug-in incorrectly enumerating over all of the extended metadata values when being used to generate item titles & a "stream" prefixed tag is requested (e.g. streamtype) which will never succeed as only non-stream values are supported by the local library
Fixed a performance issue with obtaining AAC audio data from MP4 based files which often affected the waveform seeker plug-in preview for such files (e.g. taking 15 seconds vs under 2 seconds for a 3 minute test file)
Fixed the JTF window flickering (still not 100% on the groupbox) on resizing or when moving it around (much more of a problem for the unskinned version) due to the native listbox control not doing double-buffered painting & some of the JTF window drawing code being slower than it should have been (it's now much faster) along with the skinned version incorrectly pre-filling all of the window background when only the area not showing items needed to be filled in
Fixed the JTF window not correctly handling DPI related monitor changes which could cause the window to appear in an odd manner making it unusable for some setups
Fixed the new library playlist action not always creating the initial empty playlist file which would cause the playlist view to show the no source playlist error
Fixed an recurring failure when trying to send files to be processed for replaygain due to a timing & feature validation conflict when checking writing replaygain metadata is supported
Fixed a crash for some replaygain processing attempts due to a conflict with trying to update the local library metadata for the file in a way that was needed when WACUP was using ml_local but is no longer needed for it's native plug-in
Fixed some FLAC files incorrectly playing which could appear as too much gain being applied
Fixed MP4 based files with AAC not showing the appropriate progess when processed for replaygain (due to decoder handling changes it often meant they'd jump from 49% to 100%)
Fixed the folder monitor status column being auto-resized incorrectly if there's no folders set to be monitored
Fixed the wrong reason being shown in the replaygain processing list when the file(s) trying to be processed are handled by any input plug-in(s) which are unable to save the metadata into the file(s)
Fixed the library navigation tree handling incorrectly handling the bookmarks & local library plug-ins when moving them in the tree by not putting them into the new position due to them also acting as drag & drop source points (aka not getting the api right & returning the wrong value for the intent of the action needed)
Fixed the library navigation tree incorrectly indicating that sub-node items can be moved when it's not currently implemented in WACUP's library core (will be considered as a feature to add later on)
Fixed some inconsistency with the way controls on the history preference page were being handled causing some to be incorrectly disabled from unrelated options
Fixed the 'is podcast' option on the batch metadata edit dialog being always checked due to not verifying that the value from the local library had been obtained
Fixed an internal api change exposing a title handling issue in the Streaming Source DSP when it's set to use the v2 protocol causing the current playlist string being used for the title parameter causing it to display incorrectly (e.g. as 'artist - artist - title' instead of 'artist - title' when using the default ATF formatting)
Fixed some typos related to the word library (libary & libray)
Fixed the podcast downloads view running its processing timer when there's no active downloads running for a small cpu reduction
Fixed the classic skin song ticker not reflecting the changed song in some instances (more of an issue since the above fix altered the timing of things happening to expose this occuring on going backwards)
Fixed some main window timer actions incorrectly being double processed which could cause for slightly more idle cpu load than intended
Fixed some more unwanted initialisations in some of the plug-ins for aspects not needed immediately along with a small performance issue on applying colouring to some of the image elements
Fixed the handling after a crash not always clearing out the last crash message which could cause it to keep embedding the first crash message into any other crash reports instead of the actual crash reason which would cause the error reporting preference page to show the wrong reason (all due to trying to avoid calling some actions during the crash collection stage that would fail if using the native OS ini handling)
Fixed a missing reason being shown for plug-ins intentionally not loaded by the core under WINE due to it not offering the support needed to use them
Fixed a random crash when attempting some podcast downloads due to a timing issue preventing the needed internal service from having yet been created
Fixed some of the menu items on the import sub-menu of the library button menu showing the folder monitor sub-menu instead of doing the intended mode
Fixed the library view buttons being double processed for some of the plug-in views on loading for a small reduction in view loading times
Fixed a possible crash issue when closing the internet radio or podcast views due to incorrectly handling the clean-up of the imagelists used by them
Fixed a resource leak when modifying the albuamrt on the Alt+3 / File Info dialog due to some debug code incorrectly still being enabled for the build
Fixed a resource leak when the library navigation tree needed to set the icons within it & they didn't already match to the existing native icon sizes
Fixed a loading performance regression with the Playlist Separator plug-in (in_text.dll) along with using a less than ideal way to register itself in time to have it's separator items shown in the correct visual state as soon as WACUP's playlist editor window is visible
Fixed a crash when trying to add some google podcast feed urls
Fixed memory leaks related to the hotkey registration mis-handling the display string being used for them due to a regression from a prior bug fix a year or so back
Fixed a timing issue with the about preference page where the build version information could stay showing as checking for updated information when the connection had already failed but was not indicated
Fixed the local library view filter pane columns not reflecting things correctly when they're being re-ordered (if supported within the view handling)
Fixed some issues with the custom mp3 encoder setting handling which could cause it to be ignored & use the default encoder settings vs what's expected
Fixed an ini parsing issue when priming the settings cache which could cause the processing to get stuck in an endless loop due to unexpected differences in the linebreaks found in some ini files
Fixed the core incorrectly trying to update some of the notification area icon tooltips when those icons aren't configured to be shown
Fixed a loading performance issue with the Not So Direct output plug-in causing it to equate to a third of the initial time to load the default output plug-ins
Fixed a regression which broke double-clicking in the waveform seeker window to start playback around the position of the double-click
Fixed how podcast downloads are verified to better handle the feed file reporting a completely different size to what is downloaded which could cause some feeds to keep re-downloading already downloaded episodes
Fixed unicode stars not shown in the classic skin songticker when set to use the skinned font (now it's handled like a normal asterisk character instead of showing as blank spaces)
Fixed the internet radio plug-in running a timer to update it's navigation node which hasn't been applicable for a few years
Fixed opening the about dialog before any other dialogs (e.g. preferences) not applying dark mode as expected
Fixed the titlebar text of the generic classic skin windows sometimes flickering during painting (aka double-buffering to the rescue)
Fixed playback resuming on start-up & showing what's playing in Discord is enabled could sometimes show as paused despite playback happening due a timing issue with how some of the plug-ins resume playback
Fixed a drawing issue with the big clock ocsilloscope visualisation mode where there could be seen a partial line from the centre line to the first plotted value (e.g. more obvious with sine waveforms)
Fixed the big clock spectrum analyser visualisation mode still moving / flickering when playback is paused instead of sticking with the last processed state per all other spectrum analyser instances seen
Fixed the visualisation preference page not showing the currently selected plug-in as selected if it's not actively running when the page is loaded (the plug-in would still be run via other actions but the page would effectively act like no visualisation had been selected)
Fixed some inconsistencies with the visualisation preference page & the main window menus which could make it seem like the selected visualisation setting had been lost when it was tied to the running state instead of the prior preference / menu selection
Fixed an issue with the multiple visualisation support which due to changes related to dropping the re-use of the Winamp core meant some of the WACUP visualisation plug-in handling now wouldn't trigger the quit method to be called on closing the whole process (closing a single visualisation plug-in would do as expected) which could prevent some window positions, etc from being saved out as expected
Fixed the streaming url plug-in incorrectly trying to react to some metadata requests which can at times cause slow responses
Fixed some handling issues with the dsp & visualisation plug-ins which were not intended to be accessible with this build type
Fixed some 2SF sets not working by disabling the JIT until a solution can be found (be it updating desmume or other patching)
Fixed the unskinned menus not always showing using the OS dark mode style if that's the expected view due to not triggering the initialisation needed if no dialogs have already been shown during the instance
Fixed a deadlock in the playback history handling for new installs or ones with an empty history database when there's a request for the metadata due to the local library plug-in also being empty & the option is set to query this as a fallback metadata source
Fixed a local library plug-in api call incorrectly reporting back whether a file is known in its database or not which could cause some incorrect behaviour such as in the file info pane of the bento / BBM skins
Updated ASAP (in_later.dll) to 6.0.3 (9 Mar 2024)
Updated cacert.pem to latest (11 Mar 2024)
Updated c-ares (libcurl.dll) to 1.2.7 (23 Feb 2024)
Updated libcurl (libcurl.dll) to 8.6.0 (31 Jan 2024)
Updated libfaad2 (libfaad2.dll) to 2.11.1 (14 Nov 2023)
Updated libjpeg-turbo (image.w5s) to 3.0.2 (24 Jan 2024)
Updated libnghttp2 (libcurl.dll) to 1.60.0 (1 Mar 2024)
Updated libopenmpt (in_mod.dll) to 0.7.5.20388 (17 Mar 2024)
Updated libpng (image.w5s) to 1.6.43 (23 Feb 2024)
Updated minizip-ng (zlib.dll) to 4.0.5 (6 Mar 2024)
Updated Monkey's Audio (in_ape.dll) to 10.60 (19 Mar 2024)
Updated mpg123 (mpg123.dll) to 1.32.5 (17 Feb 2024)
Updated OpenSSL (libcurl.dll) to 3.2.1 (30 Jan 2024)
Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 23 Mar 2024
Updated WavPack (in_wv.dll) to 5.7.0 (29 Feb 2024)