Added the ability for WACUP to run in a non-legacy mode aka not needing to use the original Winamp main program file to run (this is mostly for testing & the main things it won't provide for now are the equaliser & modern skin support as the the first needs a replacement to be decided upon & the second still requires figuring out the wasabi api that the plug-in is needing to work)
Added initial support for the Milkdrop visualisation plug-in to use Spout (https://spout.zeal.co/) & for it to act as a sender (dunno how useful this'll be as nestdrop seems to have it already handled but this native inclusion saves those needing something basic vs having to use an older modified version of the Milkdrop plug-in which is less than ideal vs what WACUP offers)
Added a non-linear peak fall off option (used only with the falling peak mode) to the classic spectrum analyzer visualisation which may look better depending on your taste
Added a check for update action to the agent mode right-click menu (the main WACUP program will still do it's own things but this is useful for testing & might help others)
Added in a placeholder preference page for appropriate installs to make it easier to change WACUP between running in legacy (uses the Winamp program file) & non-legacy modes
Added support for trying to skin the context menu (if the skinned menu support is enabled) which is shown when right-clicking within a skinned edit control (e.g. search field of a local library view) for better consistency with the rest of the skinned look
Added an option to the replacement local library plug-in so it's possible to control whether the newly added associative sorting is used or not (if enabled this will do additional sub-sorting of the view results for cases that make sense e.g. sorting by album will then sub-sort by the disc & track values to better group the album results) which some may not like or prefer the faster speed of the simple sort
Added a playback remapping so that opus files which don't play with the primary opus input plug-in will be attempted to be played using the vgmstream plug-in if present (e.g. incase they're lopus files that haven't been correctly named)
Changed some of the per library plug-in handling to now be done as part of the common shared skinning support so it's easier to keep things consistent as well as removing some more window subclasses
Changed some of the plug-ins to further reduce or if possible remove the subclassing that they're doing (especially of the main, library & generic skinned window frames) for a small performance improvement
Changed the flags used for the mini dump collection by the crash handler to try to get some more information from the WACUP process whilst not causing it to generate massively large crash.dmp files
Changed how the missing files detection is handled within the main playlist editor so it's using less memory & also uses a much simpler implementation so the missing status is now stored on the playlist item (this may also help with a few of the random crashes where this wasn't handling large playlist changes well at the same time)
Changed some of the internal variables & related data structures to reduce the memory usage for them (not a massive saving but bytes across duplicated items builds up quickly with 100k+ playlists, etc)
Changed the /DIAG & root diagnostics preference page to use the same method for reporting some of the key file paths instead of using their own versions (a legacy from how WACUP initially developed which saves a small amount of code from the WACUP core)
Changed how the prompt informing that modern skin support is not available handles things so it'll now revert to the base skin which with some of the other changes going on helps to avoid a crash occuring
Changed how the overall & dialog class icons are applied (i.e. what you see in the taskbar & on dialog titlebars respective) to use a faster method to help reduce the loading overhead (this saves ~30ms on my machine which is into the slightly noticeable time range & means my main test installs are now closer to loading around half a second on average :) )
Changed the splash screen initialisation to reduce it's impact on loading times (before this change I was seeing on average a ~50ms overhead on loading times when enabled whereas it's under ~20ms post change)
Changed how the w5s (winamp 5 components) are found & loaded to reduce some of the overhead in trying to find them &/or their delay loaded versions for a small reduction in their overall overhead on loading
Changed how the input & general purpose plug-ins are loaded to avoid some double processing of them related to filtering out dlls with the same name but from doing things with betas that aren't supported or older versions (this is primarily to avoid version conflicts but the checks weren't sharing some of the information which meant there was a small amount of time per dll being wasted on loading)
Changed how the native windows are created to remove some duplicate processing to get them correctly positioned & sized along with avoiding a white flash that could sometimes be seen during WACUP loading
Changed when the Win7shell plug-in creates it's list of icons to use is created to remove the delay it caues during WACUP loading (this was taking upto 30ms on my development install & now has negligible impact)
Changed around some of the media library core initialisation to reduce it's loading overhead
Changed how the DirectShow plug-in (in_dshow.dll) gets some information it needs via a live patch so it's SendMessage(..) call no longer hits the main window (just makes things a bit quicker during loading)
Changed how the library history plug-in loads & stores its settings to help reduce the time taken to load along with keeping the settings file cleaner so only changes from the defaults will actually be stored
Changed how the podcast download view deals with retrieving the last played information on initial load to avoid it causing the main ui to block whilst waiting for the local library database to be loaded (depending on the configuration & other factors in the loading process, this might not have been noticed or it could cause the ui to look like it's just about to crash before it then resumes normal loading)
Changed some of the library view resizing handling to reduce some of it's overhead & to make things a little bit quicker to complete (it's still not as buttery smooth as I'd like but some of that is down to Windows afaict)
Changed the handling of the information pane in the podcast view to try to match the text rendering to use the skin defined font instead of just matching the font size (there's some quirks to this depending on the font being used but that's down to how the integrated browser control seems to work in relation to using non-scaleable fonts)
Changed how the newly added in_xsf plug-ins are initialised to reduce their impact on loading times (this moves some relatively slow non-essential initialisation to when it's needed e.g. opening config)
Changed how the artwork cache works to remove some duplicate processing as well reducing the impact on closing times so it should only happen now if there's an actual change to the cache (before it could be triggered by the priming of the cache on loading which ends up being wasteful when it's not required)
Changed how the shared skinning service handles closing to lower it's impact on closing times (this now removes the system components from appearing in my on closing profiling file under normal conditions)
Changed how clicking on the notifier for the Winamp provided skins (i.e. Winamp Modern, Bento) so it won't try to open a now playing url which due to other aspects of WACUP's handling to avoid hitting broken old Winamp site urls would send you to the WACUP forum (it will now just skip the action even if the skin is configured to open the url (this is a semi-permanent change until a solution is decided on with what service to use for now playing links)
Changed how the global hotkeys plug-in creates & destroys it's registered hotkeys to help improve overall loading & closing times when the plug-in is fully enabled
Changed how the generic skinned windows handle the Ctrl+F4 (close window) shortcut to better ensure it's going to work consistently without some of the windows not always working or needing custom handling
Changed how the generic skinned windows handle the Alt+F4 (close program) shortcut to better ensure it's going to work consistently without it not workign in some windows (e.g. classic spectrum analyzer)
Changed the unskinned menu handling to now try to follow the OS dark mode support (this is something that has a number of limitations due to Windows not really offering much to 'classic' programs since it was first introduced in Windows 10 1809 & newer - more will likely be done with WACUP to try to better follow the OS dark mode handling but some of it is ironicallly going to have to involve using it's skinning support to achieve this vs letting the OS just handle things nicely for us)
Changed the Yule Log plug-in to now run most of the actions on a background thread instead of doing it delayed on the main ui thread which should make it more tolerant of slow internet connections, drive access, discord, etc so it's much less likely to trigger the unresponsive handling which has been happening for some (this is one of the earlier WACUP plug-ins & I should have made this change a long time ago based on the experience gained from the plug-ins & core changes that came afterwards)
Changed the crash reporter & how it handles the dmp files to better suit my needs as part of the automatic submission process in relation to other recent changes that have caused much larger dmp files to be created depending on the crash & other aspects of the install
Changed all of the WACUP compiled files to now use the VS2019 compiler instead of VS2017 which has saved just over 0.5MB across all of the files & related runtime whilst making compilation of WACUP much faster (it's halved the time it takes for me to run a full project re-build to take just shy of 4 minutes)
Changed how the library podcast view is handled with it's resizing & dealing with WACUP being restored from minimised to remove a load of duplicated resizing of the window to ensure things will be redrawn (specifically for the embedded browser control for showing the currently selected feed/episode information) which should now make resizing of the view better compared to before
Fixed the remove missing / unsupported files action sometimes causing a crash when using the library navigation tree menu (doing it within the current view was ok due to the nature of the issue)
Fixed another cause of the ml_ll view live updating causing a deadlock to occur when it's attempting to update the playcount & the currently playing item within the currently active ml_ll view
Fixed the ml_ll playcount related updates not triggering a periodic database save (to avoid losing the accumulated playcounts due to crashes) when there's no ml_ll view currently active as well as it potentially conflicting with the ml_history database also being saved out around the same time
Fixed a crash manifesting as WACUP just instantly terminating instead of triggering the crash report that could occur if mulitple NDE database files were trying to be updated at the same time
Fixed loading some incomplete classic skins (going as far as having only a main.bmp / main.png) not triggering all of the default images to be used which would cause for example no skinned font to show
Fixed a regression with the skinned scrollbar handling which caused the treeview scrollbars to not update their position when scrolling via the mousewheel
Fixed the probable cause for some of the hangs seen when the crash reporter starts (the changes at least seem to allow my Windows 7 test install to always complete when previously it's gotten stuck in a loop)
Fixed a regression that would cause the for compatibility purposes a Winamp 5.666 version string to appear with modern skins if there's nothing in the playlist instead of the current WACUP version string
Fixed the classic skin main window & some of the internal api handling not updating it's state fast enough when the playback is paused (e.g. starting with autoplay & paused resume wouldn't show the seekbar in the correct position until playback was enabled)
Fixed some of the initialisation messages not being correctly sent when expected if starting WACUP in a minimised state
Fixed some visual issues with the initial loading of some of the views & their positioning within the media library window so this should now hide all of that before the view is correctly flagged as visible
Fixed some colour flickering when the library window is initially loading as well as sometimes happening when switching between different library views (it would appear as the window background colour showing briefly instead of the listview background which wasn't desired & made switching views seem less than ideal at times)
Fixed a memory leak with the library view window handling if a view was zero sized
Fixed the sizing of part of the podcast view so it doesn't look weird with too much background gap when using a larger font size of the ui
Fixed the skinned window edge being drawn on windows that are essentially not visible (no width or height) which in some cases could appear as random lines (noticed whilst fixing the podcast view issue above)
Fixed the output plug-ins not being selected to be installed when using the 'lite' install made along with some other changes to what is counted as it (feedback is welcome on how far to push lite mode)
Fixed the library window shortcuts not working consistently (e.g. F8 to refresh the view not being triggered)
Fixed the Ctrl+F4 handling on the main window so it'll only hide the window & not act like a toggle (which is what the Alt+W shortcut is for)
Fixed the right-click menu in the Milkdrop window not appearing in the correct position when using the context menu button / Shift+F10
Fixed the right-click menus in the skinned windows that support them which are created not on the main ui thread (e.g. classic spectrum analyzer) not being able to use the skinned menus (this is something that Winamp was never able to do so it's nice to finally figure out & get this working for WACUP)
Fixed the probable cause of the format converter / transcoding action failing if trying to use it more than once during an instance
Fixed the /UPDATE & internal usage of that mode mis-reporting that there's a newer build to get when already running on a newer build & the 'ok' to update flag on the WACUP update reponse hasn't been set
Fixed the Shift+Click handling with the agent icon handling to be more reliable as sometimes it could still cause WACUP to be started / brought to the foreground instead of closing the agent child process
Fixed changing the skinned menus option causing the library views to revert to a generic font due to it resetting some of the skinning code without refreshing the ui when only a config re-read was needed
Fixed the time restore & autoplay plug-in saving out a state change on closing if there's not actually been one (e.g. starting then stopping WACUP without playback & no change in the main playlist)
Fixed the settings cache in rare circumstances causing a dead-lock to occur when WACUP is closing due to it trying to re-prime the cache when a configuration change is being saved out
Fixed more of the plug-ins to do a better job in avoiding saving non-changed configuration values
Fixed the replacement local library plug-in view handling to avoid some odd lock-ups & crashes on loading related to the status bar updating which wasn't as thread safe as would have been liked (aka multi-threading can be hard to get right at times especially with the ui)
Fixed the handling of the IPC_GETOUTPUTTIME api when WPARAM=1 so it'll better ensure a valid length for the current item in seconds is reported instead of having a tendency to fail & report no length
Fixed the probable cause of the history view sometimes not setting a valid title string for an entry along with it incorrectly skipping really short plays of files & some other tweaks to the update process
Fixed a roughly 2 year old bug with WACUP's build of Milkdrop where it wouldn't use the user configured font size even if it had been correctly configured due to it always using the default font size
Fixed some issues with the handling of the video window which could occassionally cause the last frame of the video to remain being shown until an action caused the video window to have to be resized
Fixed the sorting of the offset & filename/url columns in the library history view being switched around causing unexpected sorting results when sorting by those columns
Fixed a slew of flickering issues related to the client area border of the skinned treeview, listview & edit controls when a succession of paint events are needed (e.g. library view resizing or holding down the F5 key to reload the current skin) though this still isn't a nice as I'd like & there's more that will need to be done
Fixed dragging items downwards in the main playlist editor bouncing back upwards when the drag action gets to the bottom due to the wrong display offset for the playlist window being set on the bounds check
Fixed a possible issue when drag + dropping files onto the main playlist editor where it was possible for the current playlist to get corrupted at the items on & after the current drop point
Other related changes being applied from one plug-in into another (especially with the library plug-ins) where the fix may help but isn't something that's been seen within those plug-in(s)
Removed some more of the code used to share memory variables between the Winamp & WACUP core as well as removing some of the compatibility code from the WACUP core to appease the remaining bits of the Winamp core that are being run
Removed the option to revert back to gen_ff's font handling since the WACUP provided handling to fix slow loading issues has long since been confirmed as working well
Updated cacert.pem to latest (30 Sep 2021)
Updated installer to be built with NSIS 3.08 (25 Sep 2021)
Updated libcurl (libcurl.dll) to 7.79.1 (22 Sep 2021)
Updated libopenmpt (in_mod.dll) to 0.5.12.15759 (4 Oct 2021)
Updated libnghttp2 (libcurl.dll) to 1.46.0 (19 Oct 2021)
Updated mpg123 (mpg123.dll) to 1.29.1 (17 Oct 2021)
Updated Monkey's Audio (in_ape.dll) to 7.12 (10 Oct 2021)
Updated Patreon list (15 Oct 2021)
Updated universal runtime files (Microsoft.VC140.CRT folder) (newer is 350KB smaller)
Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 18 Oct 2021