Added an option on the Taskbar preferences page to control whether WACUP is hidden from the taskbar or not when minimised (this has been defaulted to on to replicate the Winamp behaviour for this action)
Added a workaround to deal with crashes seen by the WaveOut Output plug-in (out_wave.dll)
Added a specific sort by duration action to the main playlist editor & library playlist views
Added a specific mode on the Visualisation preferences page to disable visualisation loading (this is like the equivalent mode on the DSP/Effect preferences page)
Added an option for the Discord support to automatically disable it when playback has stopped (this can allow other programs to update your Discord Rich Text without also having to close WACUP)
Added %wacup_version% as an always available ATF variable (e.g. this might be useful for the HTTP posting actions or any other related logging that might be done via Yule Log, etc)
Added an option on the Advanced preferences page to show the plug-in lists in the classic single line style instead of the default multi-line description style (this is for those that don't like or need the newer default plug-in list style)
Added IPC_HAS_METADATA_READ_SUPPORT & IPC_HAS_METADATA_WRITE_SUPPORT helper messages to quickly determine if the input plug-in responsible for a file type has the extended metadata api support for read / write
Added the 'Artist Index' filter option (which groups the filter results by the first letter of the artist) to the replacement local library plug-in (ml_ll.dll) based on forum feedback (if this works ok from testing then other variants of this index may be added e.g. album artist, genre, etc)
Added some additional resource usage information to the crash reports to help better detemine resource leak based crashes
Added resizing methods to api_albumart to complement the existing synchronous & asynchronous (WACUP addition) GetAlbumArt methods to simplify with getting artwork without each plug-in needing to do resizing if needed (this can also help reduce the overall memory usage if the artwork cache is enabled as the resized image is cached instead of the original "full fat" image that was loaded)
Added IPC_SHOWWND & IPC_HIDEWND api commands to explicitly be able to show / hide the specified windows (as determined by the IPC_GETWND parameter defines) along with some main window & library window additions for the older 2.9x era IPC_GETWND & IPC_ISWNDVISIBLE APIs)
Added compatibility support for the 3rd party "What's Playing?" plug-in so it will now make use of the settings folder instead of trying to save into the program folder (this is a shame it wasn't natively done when the plug-in was being updated until 2005 & the APIs needed were already a few years old by that time)
Added 'Manual Playlist Advance' menu items to complement the existing Repeat & Shuffle menu items (subject to the skin & menus it offers)
Added loading checks to prevent files related to the unrelated & reviled 5.8 beta from being used under WACUP (either from people manually trying to use the files from it or due to some weird installation weirdness based on a batch of crash reports received)
Added an alternative mode to the Global Hotkeys plug-in if the multimedia keys don't work (thanks to Sprite via Discord for reporting & help test this works)
Added some supporting features needed to ease the interaction of Homeseer with WACUP & the JTFE queue implementation (w.i.p. so no real details for now on this)
Changed a massive amount of the main playlist editor & playlist & related API support to now be handled via WACUP code instead of using the original Winamp code (there might be some issues / differences in behaviour that I've missed so please do tell me so I can get the compatibility / expected behaviour re-implemented)
Changed how the Windows 10 Integration plug-in (gen_win10shell.dll) is allowed to be loaded to hopefully prevent it crashing for some
Changed the installer to better handle not having an internet connection or if not allowed through the firewall by giving a useful message on what needs to be done or what can be done to workaround the issue
Changed the Portables plug-in to not have the settings cache applied to it which may help fix some of the odder crash reports seen
Changed the Cover & Tag plug-in handling for finding the built-in windows to be applied more generically to fix some other plug-ins including cases when changing the main window class & plug-ins have a hard-coded assumption of it being "Winamp v1.x"
Changed the installer to deal with most of the downloaded components & related validation in a simpler manner which should cause fewer issues going forward
Changed new installs to default to requiring the user if they later install the Sqrsoft Output plug-in (out_sqr.dll) to require it to be manually enabled before it can be used (the plug-in is causing a load of crash reports)
Changed the handling of failed HTTP stream playback to attempt to use the MP3 Decoder (in_mp3.dll) if that wasn't the plug-in already attempting to be used (e.g. builds of the 3rd party in_opus.dll plug-in will incorrectly try to handle any HTTP stream url even if it's not related to what the plug-in supports)
Changed how some of the required file paths are generated to use less code & to be correct irrespective of the owner process that is calling WACUP core methods
Changed the settings cache to pre-prime itself earlier which helps alleiviate some oddities noticed
Changed the way the font size in the information pane of the podcasts view is calculated to try to better match with the rest of WACUP irrespective of OS scaling
Changed some of the Playlist Undo plug-in handling to be done directly within the WACUP core (more will be done to move the plug-in completely into the WACUP core)
Changed how the NotSoDirect output plug-in saves it's settings to reduce unnecessary configuration saves when nothing has been changed
Changed the installer to not attempt to re-install some of the supporting files that WACUP relies upon if they're already present (this may help with some setups where updating can fail due to files not being able to be updated primarily to anti-virus &/or 3rd party software messing with things)
Changed the plug-in loaded to block a few more plug-ins that are known to cause crashes &/or conflict with the native WACUP implementation (e.g. in_wm, gen_nopro & gen_skinmanager)
Changed the podcast view initial loading to show a message until everything is ready (this is related to helping resolve the deadlock on loading crash below)
Changed to use a shared genre list between the plug-ins / libraries for a 14KB size reduction
Changed the icons in the library window navigation tree, internet radio & podcast feeds list to adjust to the size of the list text so they better match & looks better with larger font sizes (note they will be blurry until higher resolution base images are created)
Changed the input, general, library, dsp, visualisation & portable plug-in preference pages to use the newer style list layout like the output plug-in list for consistency
Changed as many of the preference pages provided via the Winamp core to now be WACUP implementations (this means most settings are now only altered when actually changed instead of being always saved when closing the preferences window which reduces the risk of data loss / settings file corruptions & so on)
Changed how background title reading is done to try to avoid hangs related to URL / UNC paths
Changed the error reporter handling to avoid attempting to also send the crash report as an email if there's no obviously configured default email client
Changed the main config reading method to now be WACUP handled (this removes reading some config values which can be done elsewhere or are not needed)
Changed the artwork handling of Opus files to be read via the WACUP shared metadata service instead of relying upon input plug-ins (this may help to resolve a stability issue seen when using in_bpopus & allows artwork to still work with the alternative in_opus plug-in that some users have been using)
Changed how the seek bar is handled under classic skins which now allows its information message to match the WACUP long times formatting option)
Changed the IPC_GET_PLAYING_TITLE & IPC_GET_PLAYING_FILENAME APIs to do the equivalent of a IPC_GETLISTPOS & IPC_GETPLAYLISTTITLEW / IPC_GETPLAYLISTFILEW when passing the param as 1 (this is a helper to remove one SendMessage call for cases where also knowing the result from IPC_GETLISTPOS is not needed)
Changed some more of the menu / API handling from Winamp code over to WACUP code based on issues seen with some of the crash reports to try to better diagnose what's going wrong
Changed in_cue.dll & gen_cue.dll to be part of the default list of 3rd party plug-ins not to automatically load to avoid issues if updating an existing Winamp install to a WACUP install with them present (they've been found to cause issues under both Winamp & WACUP so it's better to avoid them being loaded as it took a while to track them down as the cause of stability issues for one user)
Changed the version string shown if there's nothing playing &/or no title can be shown under modern skins to now be the current WACUP version instead of the Winamp core version (this is more like classic skins though there's some parts under a classic skin that will currently show the wrong string - more work needs to be done on replacing all of the main window handling to resolve that discrepency)
Changed how output plug-in loading is done when opening the preferences window to try to minimise a configuration saving conflict between NotSoDirect & Nullsoft DirectSound (out_ds) plug-ins (to maintain compatibility for when the default output plug-in is switched to NotSoDirect they save into the same configuration section & without out_ds always re-saving it's settings on closing even if there was no change this can cause problems if NotSoDirect is the active output plug-in - recommendation is to disable out_ds if using NotSoDirect to avoid the whole issue :) )
Changed the way the installer is built to simplify some aspects of the overall building & release process which should save me some time :)
Changed how things are handled when a crash is detected which should better prevent unnecessary code (e.g. generic skinning) from running which might be causing some crash report collections to fail
Changed how the artwork cache works to better suit the common use case whilst making it less likely to have issues when dealing with more extremely sized pieces of artwork (not a commmon case)
Changed a number of the plug-ins to use the new api_albumart changes for resizing images to remove a number of potential issues when dealing with large artwork (especially with 12500x12500px images)
Changed scrolling the mouse wheel up/down in the Milkdrop & Classic Artwork windows to change the WACUP volume (this improves consistency with other plug-in windows)
Changed how the Windows 10 Integration plug-in works to remove the need for subclassing to aid in removing it as a possible cause of some crashes
Changed how an aspect of closing is done to see if it will help resolve some of the odder crashes when WACUP is closing (normally due to plug-ins)
Changed a number of messageboxes shown (e.g. on visualisation error or when a crash has occurred) to timeout in a reasonable time instead of waiting around & causing other potential issues or leaving unwanted running processes due to not seeing / reacting to them until much later on (some issues may be missed due to this but it's probably better than what is happening for some setups when issues occur & attempts to inform are done)
Changed an internal method shared between the core & plug-ins for getting metadata to do a better job of dealing with lifetime quirks related to the passed in parameter values (relates to the playlist loading failure)
Changed how PNG images are processed to (hopefully) not break loading any that already work whilst allowing interlaced images to be correctly loaded (if it does break anything then we can blame Dr Flay for this one)
Changed what happens if the core playlist services cannot be created to now inform the user & abort continuing to load WACUP instead of allowing it to limp along in a broken state (a re-install hint is offered)
Changed how the crash reporter works to prevent it staying open in a few non critical scenarios
Changed how plug-in loading is done to better mitigate against older versions of plug-ins included with WACUP (e.g. from old Winamp Essential Packs or manually trying to re-use Winamp versions that have since been replaced with WACUP versions but are using the same filename) trying to be used & breaking / crashing WACUP
Changed a few places including the crash reporter to make it easier to distinguish between a beta & a public preview build being used
Changed how SPC titles are read with an interim solution until some issues are fixed with the SNESAmp Wrapper plug-in (this may still cause titles to show incorrectly based on the information in the local media library but it's more likely to show something nicer compared to the past few builds)
Fixed a workaround to deal with crashes seen by the DirectSound Output plug-in (out_ds.dll) not working as expected in all scenarios
Fixed a crash in the Vorbis Decoder plug-in (in_vorbis.dll) if the supporting libvorbis.dll cannot be loaded when trying to play an OGG Vorbis file
Fixed trying to use Milkdrop's (somewhat broken) desktop causing a crash due to the required vms_deskop.dll not being correctly installed for it to use
Fixed a crash when trying to generate the skin folder / filepath for the IPC_SKIN_CHANGED_NEW API message via the skins manager preference page
Fixed a crash related to column name retrieval within NDE in relation to a potential database corruption
Fixed the likely cause of a crash seen when trying to retrieve artwork for the SMTC (Windows 10) feature
Fixed the likely cause of a crash when accessing the config / about dialog of the FLAC input plug-in (based on a delay loading related issue from the crash reports)
Fixed a message handling issue in the History library plug-in preventing it correctly saving it's database on periodic save requests
Fixed the current playlist item not being drawn in the windowshaded playlist editor mode once focus has been lost along with resolving a flickering when resizing the window in that state
Fixed a potential lock-up on loading if the JTFE media library integration is enabled & the library window is slow to be created
Fixed reading of metadata from files not showing the expected data in some cases due to a replacement method not always providing the correct status result causing the valid metadata to be ignored
Fixed the likely cause of a crash seen when using the 'Open / Add file(s) to playlist' action & trying to process a playlist (or so it seemed from the crash report)
Fixed a number of crash issues related to a mis-match in the memory methods of the C run time libraries being used between the WACUP core & some of the plug-ins (especially the replacement local library plug-ins & the 'Edit Item Metadata' (Shift+E) dialog in the main playlist editor)
Fixed library playlists incorrectly showing some stream urls as missing when that check only relates to non-stream content
Fixed the title of items when being bookmarked sometimes showing as giibberish (have dropped trying to use the existing Winamp code for WACUP replacement which behaves as expected)
Fixed podcast feeds without the expected XML declaration at the start of their feed not being able to be added (this now does an alternative check which should work for both RSS & ATOM feeds showing this issue)
Fixed the podcast view sometimes failing to load correctly & eventually causing a loading deadlock crash
Fixed the vertical divider in the podcast view incorrectly showing when the information area is the only thing showing
Fixed some issues related to metadata retrieval not working as expected due to incorrect API responses
Fixed the Streaming Url Processing plug-in often reporting an incorrect title if it's not been used to play a stream it supports during the running WACUP session (this was causing issues with some of the re-worked checks to minimise re-saving the contents of the main playlist to reduce overall closing times)
Fixed the output plug-in preferences page list not looking correct depending on the OS text scaling mode being used (things should now gracefully adjust for the size of the list item)
Fixed an issue sometimes preventing a visualisation plug-in from being re-started if already used during that session
Fixed enabling/disabling plug-ins via the plug-in preference pages incorrectly selecting the plug-in when it should not have been (this would be an issue on the output, dsp & visualisation pages where the selected item determines the active plug-in)
Fixed the plug-in preference page lists not sizing correctly to the visible area including showing a horizontal scrollbar incorrectly at times
Fixed the selection not always being scrolled into view in the browse for folder dialogs (this was a regression related to build 4994 changes)
Fixed a number of the windows not restoring their position compared to how 5.666 worked (e.g. the Add/Open File/Url dialogs)
Fixed some of the bundled modern skins not correctly showing as the WACUP version due to a missing file used for install type checking
Fixed the crash reporter dialog not reacting to Escape / Alt+F4 actions as expected once the crash report collection has been completed
Fixed the undo playlist dialog not being correctly sized according to OS text scaling / high-dpi setups
Fixed the in_nsv plug-in crashing when trying to start play a stream (changed what dlls it tries to load to avoid a self-unloading issue seen)
Fixed a crash seen in the crash reports related to saving the main playlist editor
Fixed a memory leak related to embedded file artwork via the shared metadata handling
Fixed lame_enc.dll not always being installed when it should (this generally was causing the Streaming Source plug-in to fail to load in some setups)
Fixed the likely cause of a crash seen when deleting a library playlist which was the viewed playlist at the time of the deletion request
Fixed the likely cause of a hang seen when viewing a library playlist due to the missing files check being run on an UNC based server path
Fixed a crash seen when trying to query embedded artwork from Opus files with in_bpopus.dll installed as the Opus handling input plug-in (this change now completely ignores using the plug-in for embedded artwork)
Fixed the plug-in lists not displaying correctly when the Skinned Preferences option is enabled (missing icons or incorrectly sized or just showing a blank list)
Fixed the start streaming server button in the preferences not always starting the first stream source (if available) as the expected default configuration behaviour
Fixed the default playlist font size on new / reset installs being TOO LARGE (was a typo causing it to be 22px instead of 12px though should the default be a bit larger?)
Fixed enabling the Nullsoft NSV Decoder plug-in not also enabling some of the supporting component dlls needed
Fixed the cause of a lot of crashes seen due to a lifetime handling issue of some of the settings cache related objects
Fixed a crash when using the replacement local library plug-in (ml_ll.dll) to add items into the playlist via drag & drop along with some related issues due to how the internal values were being kept cached
Fixed the classic skin clutter bar view file info action not working as expected (weird winamp to wacup transition issue)
Fixed the crash reporter not always being run when some VS2017 specific C/C++ run time exceptions occurred (e.g. WACUP would crash without the crash reporter running - I hope this doesn't cause me more work...)
Fixed an occassional deadlock seen due to an issue within the locking used in one of the JTFE queue management methods
Fixed moving JTFE queued items around in the playlist sometimes flipping their actual position in the queue (the context of the queue item position was being lost which all of the other changes to the playlist handling now allows for better integration to remove a lot of the hacks that were needed)
Fixed a number of long standing JTFE queue handling issues where moving items in the playlist during that session would cause the wrong file (if there's duplicates to be selected) as well as sometimes items being incorrectly marked as being queued (especially after moving or drag+dropping items into the playlist)
Fixed the position of the sliders on the NotSoDirect preferences page not always being saved
Fixed a taglib MP3 file length reading issue related to a patch applied to avoid invalid access breaking the end of file offset detection which is needed when trying to work out the duration of a file without appropriate headers as part of the file (aka guessing the file duration from it's size & reported bitrate which doesn't work if you're not using the correct file size)
Fixed issues with item selection in the main playlist editor incorrectly persisting compared to the wanted listview style handling the WACUP implementation is aiming for (e.g. selecting an item when items were already selected was meant to select the new item & de-select the others but that wasn't happening until this build fixes things)
Fixed some menu integration issues compared to 5.666 for the replacement local library (ml_ll) & library playlists (ml_playlist) plug-ins along with removing the need for these plug-ins to subclass the playlist editor
Fixed the likely cause of a crash seen when a file is externally modified but is deemed to be related to WACUP (i.e. settings files not caught by the settings cache)
Fixed the bookmarks submenu on the 'File' menu under modern skins (that support that menu) not following the categorising options in all scenarios when the library plug-in is enabled
Fixed a crash when trying to play bookmarks via the 'File' menu under modern skins & not using the Library Bookmarks plug-in
Fixed parts of the classic skin playlist editor window flickering (this affected windowshaded mode the most & also the normal mode selected item duration which is in the bottom right corner of the window)
Fixed some of the threaded actions not always releasing the handle associated with them which over the life time of a long running WACUP session could cause a potential resource handling issue
Fixed the probable cause of some issues seen when stopping the Classic Spectrum Analyzer (vis_classic.dll) visualiation plug-in which then cause the rest of WACUP to hang & eventually crash
Fixed an issue with the artwork cache not always clearing out prior cached data when being updated (this was causing issues viewing artwork in the Local Library views as well as some long running installs)
Fixed a number of memory leaks related to the use of extreme sized artwork (e.g. 12500x12500px) causing problems across a number of the plug-ins making use of artwork
Fixed the delayed loading of dbghelp.dll failing causing a repeating set of errors about dbghelp.dll not being able to be loaded (e.g. when in low memory scenarios & WACUP has crashed)
Fixed a crash caused by NotSoDirect being called for it's current status when it's in the process of being unloaded
Fixed the main window visualisation when using a modern skin & playback is paused appearing to flicker / jump around
Fixed the main window visualisation when using a modern skin sometimes showing a solid line in the oscilloscope mode
Fixed using F3 in the Milkdrop window to show the currently playing item information not drawing it on the screen
Fixed a possible cause of some of the deadlocks seen from the crash reports when Milkdrop tries to get the currently playing title string
Fixed the Windows 10 Integration plug-in not always sending the update message for artwork changes to be correctly displayed &/or removed
Fixed a drag & drop onto a selected file in the main playlist editor incorrectly setting the new item as selected or queued if the existing item was already matching either of those conditions
Fixed a possible cause of a crash on unloading Milkdrop when trying to free its texture data
Fixed a crash when trying to get information about SID files when the in_sidious plug-in hasn't been fully initiliased
Fixed a possible cause of crash when updating the playback history in the library due to a buffer persistence issue
Fixed a crash when using the built-in taskbar preview actions to control playback (if already using the included advanced Win7Shell version then that would not crash)
Fixed some information needed for the crash reports not being correctly saved to the crash.log file in some instances
Fixed a possible cause of a crash when the requested visualisation plug-in fails & a notifying messagebox is shown but not responded to in a timely manner
Fixed a possible cause of an issue that could cause some titles when added into the main playlist editor sometimes appearing as corrupted (when force updated / played then they would show the correct title)
Fixed (hopefully completely this time!) an issue seen with the handling of the IPC_PLAYFILEW_NDE API message when adding items from the local library into the main playlist editor (ml_ll needs to replace ml_local!)
Fixed a crash in the artwork handling when attempting to resize the loaded image but not having fully ensured that there was image data loaded
Fixed an issue causing the width & height from a loaded png to be incorrectly reported as set if there were issues decoding the image (this isn't a user facing change but helps keep things cleaner internally)
Fixed an issue causing some playlist loading requests to fail due to an internal buffer handling issue when trying to determine the length of an entry prior to being loaded into the main playlist editor
Fixed a comparison issue with the Playlist Separator plug-in preventing some of the insertion actions working correctly
Fixed a hang due to some stream playlists from Tunein containing streaming urls which are named like playlist files but are the actual stream which caused WACUP to try do download the stream as a playlist (this now does some additional checking though more will need to be done but it resolves the issue seen in the handful of crash reports where this happening)
Fixed some possible metadata truncation related issues with displaying due to interim build changes & also existing issues found whilst reviewing other changes
Fixed the main playlist editor not always reading titles in the background if the window was hidden or unexpected closed (e.g. depending on how a modern skin is configured)
Fixed some additional causes of the main playlist editor under a classic skin flickering especially when in windowshaded mode & playback is active (there's still some other cases but they're being driven by the main window trying to update information on the playlist editor window which will have to be resolved once the main window drawing it taken over by WACUP code)
Fixed a possible issue related to incomplete youtube-dl related stream downloads preventing playback
Fixed a number of crashes related to mis-matched / incomplete updates (e.g. running WACUP before the update has completed) or when certain key services cannot be loaded (e.g. albumart vs gen_ff assuming it's there)
Fixed the crash reporter option for attempting to send an email incorrectly appearing as enabled even if it's been intentionally disabled (oops)
Fixed a crash related to the VGM (in_vgm_w.dll) input plug-in when it's still playing on closing with a modern skin loaded which would incorrectly keep trying to access sample data for the skin visualisation modes
Fixed a possible cause of somes crashes related to weird API accesses (these are masking some other issue from what I can tell but the crash reports aren't conclusive on what's going on)
Fixed a crash due to an older version of the Time Restore & Autoplay plug-in being installed (additional checks are now made to prevent the older plug-in being loaded when a newer updated one is already part of WACUP)
Fixed the playlist editor context menu showing twice if when using the Windows context menu action (button or Shift+F10) & you use escape to cancel the action
Fixed trying to select a newly added playlist item requiring 2 clicks for it to register the item selection after using the Add File/Folder/Url actions
Fixed the option to enable/disable using the classic skin style mouse cursors not being correctly applied across all of the skin (core mis-match issues)
Fixed some other options on the classic skin preferences page not being correctly applied until a restart of WACUP
Fixed the current WACUP version not being shown on start-up when using a classic skin with double-size enabled
Removed the option for not having the classic skin equaliser follow the global double size setting (this might have made sense on 640x480 setups but it seems superfluous nowadays - if you use it then let me know!)
Other small changes to attempt to fix some of the issues based on information from the received crash reports (e.g. library playlists & ASIO output)
Updated brotli (libcurl.dll) to latest Git commit from 19 Mar 2020
Updated libcurl (libcurl.dll) to 7.70.0 (29 Apr 2020)
Updated libopenmpt (in_mod.dll) to 0.4.12.12633 (13 Apr 2020)
Updated OpenSSL (libcurl.dll) to 1.1.1g (21 Apr 2020)
Updated Patreon list
Updated Monkey's Audio (in_ape.dll) to 5.38 (26 Apr 2020)
Updated unrar (unrar.dll) to 5.90.2 (26 Mar 2020)
Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 1 May 2020
Updated WavPack (in_wv.dll) to 5.3.0 (14 Apr 2020)
Updated zlib-ng (zlib.dll) to latest re-based update (27 Mar 2020)