Added the ability to see how many possible file types are reported by the currently active input plug-ins on the File Association tab on the Diagnostic preference page including if there are duplicates with any found having (!) prefixed before the shown file extension in the tree for the item after the first instance of a file extension based on the order of parsing through the input plug-ins as they were loaded
Added better reporting of what the issue is when parsing an ATF string & resolved issues with the wrong error string being used
Added a maintenance section to the Local Libray preference page so its easier to determine if there might be an issue (e.g. incorrectly added duplicate entries due to bugs in earlier builds) whilst offering some modes to help resolve those issues along with a compaction mode if needed (useful to run if a lot of items have been removed to reduce the memory usage & how long it takes to load the database)
Added initial WACUP version of an AdPlug (AdLib) based input plug-in (named in_addanotherplug so as not to conflict with existing in_adlib) to expand the native playback support for video game based formats as per user requests (more needs to be done related to the file information support)
Added the initial WACUP implementation of a folder monitor feature for the local library (under Winamp's local library plug-in this was known as Watch Folders) which allows for per-folder configuration on how often scanning is done (unlike Winamp's plug-in which ran all scans at the same time) for added / modified / removed files (unfortunately this doesn't have live monitoring support for when WACUP is already running to remove the need to do full scans as I'm just not happy with how it needs to be done for now)
Changed the replaygain processing until a replacement in_mp3 is provided to make use of the already provided mpg123 so the processing of MP3 files can be done irrespective of the input plug-in support (this is a relatively temporary change until the replacement plug-in is provided)
Changed how the local library deals with batch metadata updates for files which are having their replaygain metadata updated to reduce the impact of the action which for some really large libraries could cause ui hangs to occur
Changed a slew of things related to the handling of files when not running with a local library database to get the cached metadata from files to reduce ui lags & other repeat access of the files for metadata
Changed how some of the plug-ins handle their caching of metadata to avoid the wrong values being stored which could then trigger unexpected local library database loads much earlier on during initial load
Changed the File Association tab on the Diagnostic preference page to use the more direct WACUP core method for determining the information vs the original method used for checking plug-in api compatibility as well as having it pre-collapse the entries for in_mod & in_vgmstream so the tree is a bit easier to read due to those plug-ins implementing support for so many file extensions
Changed the local library database handling a bit more after the last build to better ensure that if known batch updates are happening that the saving of the database is not going to be triggered before it's been completed which could for some scenarios trigger a crash due to running out of available memory (more will need to be done on this issue but this should help for some of the issues causing it)
Changed again some of the delay load handling for the supporting dlls to better ensure that only our dll will be loaded & to prevent the input plug-in from crashing if that is not able to be completed
Changed a few things with the database implementation to reduce the size of it's dll by a few KB
Changed the podcast plug-in feed update handling to attempt to make it more likely to prevent closing if it's correctly running
Changed the Win7Shell handling when the preview is open & WACUP is closed to reduce the time it takes for the action to complete
Changed the global hotkey plug-in handling to reduce it's impact on closing time if no global hotkeys have been actively enabled
Changed the handling of M3U based playlists to reduce the time it takes to process each entry especially when there's a title present which can make for noticeable reductions in the time taken to load (e.g. 89K entries in winamp.m3u8 with titles went from ~220ms down to ~165ms)
Changed some other aspects of file reading (viscolor.txt, bookmarks & skin information) to leverage the changes also made for playlist loading but to a lesser level of time reduction as they're already quick to load
Changed how some of the internal image library handling is done to reduce the impact of code paths that'll never be used from it
Changed how the database handling copes with some issues from a slightly corrupted idx files so it's more likely to find some results instead of just completely giving up
Changed some more aspects of how the podcast download view works to better ensure if there's an issue getting the last played time for items during initial loading of the view that it's not going to block the ui in the manner that it's been able to do previously due to locks not being released in a timely manner (this will do more processing compared to before but it's worth it not locking up & crashing us)
Changed the listview selection preservation handling to reduce the number of messages sent which may help reduce some of the random lock-ups being experienced if multiple actions have been triggered
Changed how the local library plug-in deals with item removal so it's now using a soft-delete behaviour which makes it easier to restore if needed the items so custom metadata is less likely to be lost (e.g. when doing a missing file scan & a usb drive is missing at the time) though this does come with the downside of causing the database to keep growing which may make some actions slower than expected (compared to the database when those entries were hard-removed)
Changed how the local library plug-in will try to deal with newly added items so they're more likely to appear due to a full view refresh if the attempt to add to the existing list isn't able to be done
Changed a few aspects of the NDE implementation to further reduce some of the duplicate processing done to locate specific values which makes the process a little bit quicker (e.g. when updating the last played time for downloaded podcasts)
Changed how the view cache for the local library plug-in is handled to further reduce the time taken to load (this is primarily for very large libraries though it's likely only going appear as saving fractions of a second for most but every little bit helps)
Changed the duplicate file extension matching when trying to play an item to better handle some edge cases found after the initial changes from a number of builds prior
Changed the initial loading of the podcast root view as well as how the last time a feed item was played to prevent some ui hangs / slowness that could be experienced
Changed the list of files ignored when showing the 'readme' for a skin (updated based on files excluded by webamp including dialogs.txt which is an early file used by Winamp 1.92+ for skinned preferences)
Changed again how the artwork & lyrics windows are handled so they should no longer cause ui hangs if starting a song playing early on during process loading
Changed some of the navigation node handling within the native library plug-ins to simplify processing & avoid the need for SendMessage(..) based calls that could in some instance cause a ui hang / crash
Changed the emdedded window handling to better ensure that the inner window created into it (normally a Windows dialog) is pre-sized to the outer window to resolve issues with some showing artifacts during loading in the 'wrong' position
Changed how the updating of the branding image for a podcast feed is done to better deal with invalid images & it not always finding the newer image if it's changed in a timely manner
Changed the podcast root view to make use of the higher resolution icons that WACUP now ships with for the navigation tree items (was missed from the initial changes to use these icons)
Changed the podcast root view initialisation (to get to showing the loading feeds text) to reduce it's impact on initial load times (this view is still too slow compared to the others)
Fixed a slew of concurrency issues with the replaygain processing as well as attempting to save out the new values into tags (this is still less than ideal due to some of the input plug-ins involved) which should resolve a number of hangs &/or unexpected text being shown within the processing window
Fixed some missed code path calls that could allow some of the input plug-ins to be sent metadata that they're known to not support which depending on how / when the call occurs could cause a hang / crash
Fixed some issues with the painting of classic skin windows during loading if a messagebox is shown where parts of the windows incorrectly showed or drew as black
Fixed a regression which prevented some playlists from being correctly expanded when being added into the main playlist
Fixed an issue with invalid MP3 files & then triggering a playlist undo action causing a lock-up whilst restoring the prior playlist
Fixed a regression going back a few months where the background colour of text part of queued playlist items was wrongly blended compared to the text time part
Fixed a performance issue with the painting of the main playlist editor items when really fast scrolling through it which could cause other ui aspects to become sluggish &/or stop updating (it's still possible if the playlist window is sized really large but for normally expected playlist sizes this should no longer be an issue)
Fixed a handling issue with corruption of the winamp.ini file due to unexpected control characters being stored in the file preventing loading of the previously set skin not happening between instances
Fixed the taskbar preview if set to show text not scrolling at an attempted equivalent rate when the low frame rate mode has been enabled
Fixed the taskbar preview if set to show text incorrectly clipping the length of scrolling lines to the bitmap being drawn into instead of using the actual string length (the larger the font the more obvious this became)
Fixed the taskbar preview if set to show text not scrolling the lines as expected if set to use an image for the background instead of the in-lined icon mode
Fixed a compatibility issue with the way the active input plug-in is determined when a plug-in reports support for extensions using wildcard matching (e.g. SP* for SPC based files)
Fixed a regression from a few builds back that altered the scrolling of the taskbar text with it incorrectly controlled by the classic skin smooth scrolling song ticker option
Fixed the implementation of the classic skin generic window title bar handling so it'll no longer show junk data where you'd expect to see the title of the window if the skin doesn't provide the expected bitmap or it's not possible to parse the gen.bmp bitmap to find the skinned text characters
Fixed the overall implementation of the classic skin main window visualisation so there should no longer be any flickering on moving the main window around as well as ensuring the no vis background shows as expected instead of it either not being show (more of an issue on initial loading) or it showing using an incorrect palette (which made some classic skins actually look better but wrong vs skin spec)
Fixed some of the output plug-ins crashing when an invalid buffer is passed to them to use for the output data
Fixed the in_sidious plug-in not coping well with some multi-threaded calls made to it before it's completely initialised which could also cause processing & on close crashes
Fixed the length for the currently playing SID file not always being read correctly causing stopping issues or more importantly not stopping when that's what is expected for it
Fixed the UI locking up / not showing the expected remaining time to play when coming to the end of playing a SID file due to not correctly checking the remaining status of the output plug-in
Fixed a compilation issue that caused some of the interactions between the streaming server & streaming source plug-ins to not work as expected (e.g. showing the uninstall settings prompt on deactivation)
Fixed the streaming source plug-in not always releasing the connection it had been attempting to make which if left running unchecked for long enough would cause a massive memory leak (api re-implementation fun)
Fixed an issue with the CSV export of the library database if invalid filename entries are present &/or other values are not able to be correctly mapped to the expected format (e.g. time values) which could cause the rest of the results to be skewed or information from the prior column being duplicated (the fun of dealing with some of my older plug-ins)
Fixed some of the extended metadata from the local library being incorrectly handled with ATF requests due to it being returned as the wrong type internally
Fixed the internal metadata handling sometimes double-processing the value through it when the first parse didn't provide anything as it's not going to get anything doing it again (ugg)
Fixed the search field not always showing as expected in the multi-pane local library views
Fixed an issue where loading a db file fails which could for some instances prevent other actions completing causing the ui, etc to lock-up
Fixed a number of issues related to db compaction handling along with an additional implementation to make it easier to report the progress
Fixed an excessive memory use when running a db compaction which depending on the size & other aspects could trigger a crash whilst processing (e.g for ~294K of records memory could peak at ~1.3GB whereas it's now peaks at ~440MB)
Fixed the CSA vis plug-in not applying dark mode to it's config correctly if the plug-in was not already running
Fixed a number of handling issues with the internet radio view which could cause it to crash when fast switching &/or the during database updates
Fixed some issues with handling the sizing of some integrated preference pages with multiple tabs on them (e.g. bottom being incorrectly clipped or not having the sizing applied as expected)
Fixed the external status of library playlists not being correctly reported on initial loading due to a timing quirk not present with older builds (because the media library core loads faster!)
Fixed the classic skin song ticker scrolling (more of an issue when smooth scrolling is enabled) not being correct due to a conflict with the timer that was intended to be used & not actually used (aka a typo bug)
Fixed the auto insert separator option not working due to a logic bug (has been broken since August 2022 :( )
Fixed a hang / crash on closing due to the selection preservation handling in the local library views due to the listview it was running on sometimes having been deleted mid-loop
Fixed the podcast root view handling not correctly handling local library database loading failures which could cause anything to do with getting the last time a feed item was played to make things slow
Fixed a hang / crash on closing if using the Not So Direct output plug-in & fade out on closing was enabled & a few things went on to prevent it from completing closing as expected
Fixed a crash on closing (often seen by the crash reporter running when WACUP is next started) due to a timing issue with the clean-up of the podcast downloads view if starting & closing things very quickly
Fixed a buffer handling issue that could cause replaygain processing to fail when the source files have large sample sizes
Fixed a small ui hang when first attempting to update all of the current podcast feeds if the podcast root view is not already loaded
Fixed some issues with the non-skinned font handling with the classic skin playlist window status area where the font was being clipped instead of sized a bit smaller to fit (not all fonts work but this should make things better compared to before)
Fixed some clipping issues with the drawing of different parts of the albumart window contents depending on the size & the font being used along with the orientation of the details mode which could be off
Fixed a crash on closing if the podcast downloads view was actively trying to update it's cached information for the existing downloaded files (the timing to cause this was tight but was possible to replicate)
Fixed a compilation issue causing the in_notyansf.dll being larger than it should have been (137KB vs 168KB)
Fixed a crash on closing if the JTF window is open & an action had triggered an internal recalculation whilst closing of the whole program is happening
Fixed the podcast preference page handling not re-enabling some of the controls when the show info pane option is re-enabled
Fixed the podcast root view double-processing some messages on initial loading which could make the view slower to load & preventing the selected feed not being correctly scrolled into view (if applicable)
Fixed a concurrency handling issue that could cause multiple access of the local library database (more of an issue if it involved a read & write) causing a crash &/or corruption of the database files
Fixed the notification area action to remove the currently playing item not setting the next item as expected if shuffled playbac is enabled (i.e. it was always keeping it in the 'current' item position)
Other miscellaneous changes in relation to local library view handling, crash reports & trying to clean-up the internal code implementation to reduce some more code duplication between plug-ins
Updated libcurl (libcurl.dll) to 7.86.0 (26 Oct 2022)
Updated libflac to 1.4.2 (22 Oct 2022)
Updated libnghttp2 (libcurl.dll) to 1.51.0 (13 Nov 2022)
Updated libpng (image.w5s) to 1.6.39 (20 Nov 2022)
Updated libsidplayfp (in_sidious.dll) to 2.4.1 (19 Nov 2022)
Updated Monkey's Audio (in_ape.dll) to 9.04 (11 Dec 2022)
Updated mpg123 (mpg123.dll) to 1.31.1 (1 Nov 2022)
Updated MSXplug (in_msx.dll) to 1.9.1 (25 Nov 2022)
Updated nsfplay (in_vermas.dll) to v2.5 (25 Oct 2022)
Updated OpenSSL (libcurl.dll) to 1.1.1s (1 Nov 2022)
Updated pugixml to 1.13 (2 Nov 2022)
Updated taglib (tag.dll) to 1.13.0 (27 Oct 2022)
Updated unrar (unrar.dll) to 6.2.2 (12 Nov 2022)
Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 7 Dec 2022
Updated WavPack (in_wv.dll) to 5.6.0 (23 Nov 2022)
Updated zlib-ng (zlib.dll) to 2.1.0-devel (11 Dec 2022)