Added the first testable implementation of the replacement Media Library Core (aka gen_ml2) which can be enabled via the Media Library preferences page for easier toggling between it & the legacy Media Library plug-in (gen_ml) to aid in testing (this is now integrated into the WACUP core & when enabled offers a simple disable the Media Library mode for those who don't want this feature without having to mess around & find the appropriate plug-in to disable)
Added the first testable implementation of a replacement shared skinning api which is used via the Skinned Prefererences option & also with the new Media Library Core (this resolves one massive issue I've had with Winamp since generically skinned windows were added in that you had to have the media library plug-in present to be able to use it which often people don't want & that meant either un-skinned dialogs or manually doing the skinning)
Added the currently available visualisation plug-ins onto the visualisation submenus so it's easier to quickly switch or disable using a visualisation without having to go into the preferences
Added the ability to set an older Winamp logo via the Discord now playing support as well as making it easier to enter a custom app_id if you want to use your own thing (within the limitations in the WACUP forum thread)
Added the ability for the visualisation plug-ins to now be handled by Crystal Classic skins (classic skin window transparency) via some additions to the WACUP core making it possible to detect generic skinned windows not created on the main UI thread (blah blah blah this makes things more consistently handled :) )
Added a /NOPATHSINI option to the installer for those really wanting to get a pre-5.1x style handling of the WACUP settings with new installs (don't do this on an existing install as you will regret it) so it's not within a sub-folder within the main program file (weird legacy request ;) )
Added a compatibility mode for the MAD input plug-in (in_mad.dll) so it can be used in a portable manner without needing to run as an administrator due to it trying to read / save it's settings from the OS registry (it'll now redirect them to be read from an in_mad.ini from the WACUP settings folder)
Added an initial test release of the Not So Wavey replacement WaveOut | MME output plug-in which unlike Winamp's WaveOut (out_wave) plug-in it will by default alter the output volume / pan directly on the audio without a discernable lag (unlike out_wave's alternate volume mode which was only ever as responsive to such changes as the length of the output buffer) instead of altering the WACUP process volume
Added IPC_ENQUEUE/IPC_ENQUEUEW APIs to make it a bit simpler to just add an entry to the main playlist when none of the other information is known / needed (this is an in-process API to complement the existing WM_COPYDATA's IPC_ENQUEUEFILE/IPC_ENQUEUEFILEW handling)
Added play/enqueue/enqueue & play/sendto support on the podcast view channel list to complement the episode list options
Added a 'remove duplicates' action onto the root playlists view right-click menu so it's easier to run the action on multiple playlists
Added a generic solution for dealing with the api that the modern skin engine attempted to use only with the Nullsoft DirectSound output plug-in for offering in-skin cross-fading support (this now opens up subject to plug-in support more output plug-ins being able to be used with this modern skin feature as well as removing the messagebox that is shown when using other plug-ins that don't support this)
Added support for using the transparency within splash.png images to allow for non-rectangular loading splash screen images to be used
Added a helper mode on the placeholder 'Last.fm Scrobbler' preferences page for installing the Legacy Last.fm Desktop App & associated Winamp plug-in (too many have reported trying to do this & don't notice that it's put the plug-in into the default Winamp install location & not WACUP's plug-in folder which this additional handling should help resolve if the mode on the preference page is used!)
Changed the Milkdrop desktop mode handling to use a method that will work on Windows 8 & newer without it requiring additional dlls nor it having the flickering issue that's plagued this feature for years due to Windows changes (note: this change kills the mode on Windows 7 installs - I'm still looking for a nicer solution that's not affected by 32-bit vs 64-bit Windows versions as the prior solution was)
Changed the WACUP core dll to now be a VS2017 compile which was the last thing being built as part of the WACUP provided files with the older VS2008 compiler (hopefully I've caught any issues that exist from mis-matched compiler quirks that can occur)
Changed the installer to download the default modern skins if selected instead of always shipping them within the installer &/or patching copies from the 5.666 installer (this gives an ~20% saving on the main WACUP installer whilst reducing the overall download requirement for subsequent updates as the modern skins provided aren't going to be updated every build so I'll save everyone & myself some bandwidth)
Changed how some aspects of installation are handled with leveraging the WACUP core to now better behave when updating an existing install
Changed the visualisation menu items for start/stop & configure to only be enabled if there's a valid visualisation plug-in to use
Changed how the bookmark menus are handled to better handle the library bookmarks plug-in not being installed (this is so something will be possible even if the full experience & some of the menu items are disabled due to the plug-in not being installed / enabled)
Changed to use less of the main window procedure handling from the Winamp core to better help with some of the locking issues with the recent builds as well as leaving (hopefully) just the main window drawing & the actual skin change handling under the Winamp core with everything else routing directly through the WACUP core now (aka another step closer to dropping the need for the Winamp core, yipee)
Changed how classic skins handled starting minimised (prior state or when forced via the loading shortcut properties) to do a better job in not having the windows show up until WACUP is restored to see it (there's still going to be cases where this isn't 100% such as from 3rd party plug-ins & also the legacy library window for the moment but it's still better compared to letting the Winamp core handle things)
Changed how adding or editing a podcast feed is done to better deal with slow web responses when trying to access the feed information so it now shouldn't be causing WACUP to lock-up / trigger the OS hung process handling
Changed how a number of the shared dlls are built to remove more unused code within them for almost 200KB of file size saving (not a lot in the grand scheme of things but every little helps)
Changed some of the API message handling to improve compatibility with some plug-ins along with trying to resolve some of the weirder crash reports seen over the past few months
Changed the Yule Log Twitter support to now use a non-deprecated libcurl api (which also helps to reduce the compiled libcurl size by a few KB)
Changed to use just the modern detours library instead of the previous hybrid compile with both the modern & a legacy version required for the skinned preferences scrollbar handling (this change may help with some of the conflicting weirdness experienced with the library scrollbar skinning though more needs to be done when it comes to skinned scrollbars)
Changed how some of the extraction works with the installer to better fit in with the compiler related changes & the sharing of the common runtime files
Changed to not load the specific old version of the AudioScrobbler plug-in that comes with the ml_ipod plug-in since it'll fail on all supported Windows releases due to a framework bug in the old plug-in
Changed to use a different way of handling the option for disabling always on top when a fullscreen application is detected instead of using the appbar based method from the Winamp core (this option with Winamp has been a source of odd bug reports for years so by using a Vista+ era api instead of a Win9x era api will work better along with not having a monitoring window running all of the time when not required)
Changed how the classic artwork window deals with the rating control (if visible) to reduce the rate of metadata re-querying that's done (e.g. when moving the mouse over the window)
Changed a lot of the internal WACUP core handling to now use more of the internal methods instead of the SendMessage(..) based ones that were needed before taking over the API handling (this provides a small performance boost by reducing how many messages have to be processed via the main window & in-turn any of the subclass procedures hooked on to the main window's)
Changed the WACUP general purpose plug-in API to now support a limited 'messageproc' callback solution (similar to the media library plug-ins) which helps remove a 3rd of the main window subclassing done by the WACUP provided plug-ins along with reducing the overhead involved with main window subclassing (this may make things feel a bit snappier depending on the setup as there's less things touching all of the messages going through the main window)
Changed how the generic skinned windows are created to effectively halve the time taken to create the raw window with my testing (for me this is a reduction from ~6ms to ~3ms which applied across all of the default WACUP windows is an ~20ms saving - this may not seem like a lot but any reduction is welcome though mileage will vary)
Changed it so if a plug-in has been disabled & a close is initiated that the restart message from the preferences will not be shown
Changed a number of things in preparation for replacing the Media Library core plug-in (gen_ml.dll) with an integrated WACUP replacement (this has been a long time coming but it should be worth it!)
Changed how the OpenMPT Decoder plug-in (in_mod.dll) is built to workaround a weird extreme slowness seen when initially loading the plug-in compared to all other plug-ins & supporting dlls (against my test setups it was often taking longer for in_mod just to be loaded to the point it can be queried for validity as an input plug-in vs how long it takes to do loading & initial initialisation of all of the general purpose plug-ins!)
Changed the YouTube related stream playback handling to use a different solution that should keep things working (an alternative solution is still under investigation)
Changed the scrollbar in the main playlist editor to match the OS related scaling seen with the media library scrollbars for a more consistent visual look
Changed the handling of the 'Media Library uses same font as Playlist Editor' & 'Use freeform scrollbars when available' from the Media Library 'Appearances' preference tab to always be done without the need for these options (this just makes things simpler going forward though if you're using the legacy Media Library core plug-in then they may still be present but hopefully shouldn't be having an effect)
Changed how the 'dead' Radionomy stream urls from SHOUTcast tunein urls are handled to better ensure they'll not be added into the main playlist editor (based on a request from Discord)
Changed how the settings cache & Milkdrop plug-in work to reduce the number of cache misses when trying to process reads related to milk2_msg.ini (this makes Milkdrop a bit quicker to load)
Changed the output plug-in preference page to now manage the active output plug-in based on a dropdown listing the enabled output plug-ins instead of basing it on the selection in the output plug-in list (this is based on repeated issues with users changing the selection & not realising that will change the active output plug-in despite the note at the top of the preference page)
Changed the plug-in preference page lists to better sort the listed plug-ins to favour the active plug-ins at the top which should be less confusing compared to the mis-matched active vs disabled vs failed to load
Changed how the internet radio view is drawn so that the genre tree now has it's expand/collapse elements automatically upscaled based on the font size being used in the view (this was much needed as the clickable area in the original non-scaled mode was hard to see at times depending on screen resolution & your eye sight & the skin being used)
Changed the Skinned Prefererences handling to use the new shared skinning api which was helpful in resolve a lot of the visual issues that existed with both the new code & in comparison to the prior implementation (note: there are still a number of visual issues remaining which will be resolved in later builds)
Changed the Playlist File Remover plug-in to better ensure it's only hooking the main & playlist editor windows if it's preference option has been enabled (this is a small change to resolve some quirks)
Fixed a crash seen when starting playback or querying the %playcount% ATF value with a corrupted library history database
Fixed (by replacing Winamp's handling) using the Numpad+1 / Numpad+3 to go back/forward by 10 playlist entries being slow
Fixed the Silence Detection idle timeout not being correctly disabled when the main silence detection option is being disabled (timer related weirdness)
Fixed a conflict with TortoiseGit where it would prevent some of the VS2017 runtime files within the WACUP program folder from being removed on uninstall
Fixed a potential crash that could occur during install due to a combination of dll loading order related weirdness
Fixed the classic Nullsoft easter egg not working due to some of the recent changes to handle more of the actions from the Winamp core
Fixed the OpenMPT Decoder preferences not showing the actual gain & stereo separation values (missed when doing a code merge some time back it seems :( )
Fixed the 'Generate HTML playlist' option not trying to automatically open the generated HTML file in the default browser (my IPC_OPEN_URL was incomplete)
Fixed WMA metadata sometimes having the last character incorrectly clipped off due to a prior taglib related change & how the BOM in some strings are used
Fixed the classic skin video window not showing the deactivated state when switching to a generic skinned window that was not created on the main ui thread (e.g. skinned visualisation windows)
Fixed enabling visualisation or DSP plug-ins & then allowing WACUP to restart to enable the plug-ins not then having it as the expected active plug-in (assuming the input selection wasn't then changed)
Fixed a crash related to loading corrupted NDE databases (note: there still be issues & depending on the corruption a large amount of the database may no longer be accessible but this is better than a full process crash & further potential data corruption)
Fixed the probable cause of the remaining message processing stack overflow crashes seen over the 1.0.14 beta builds (which hopefully the fix applied won't break anything else)
Fixed the Discord now playing not always showing the correct status if playback is restored in a paused state
Fixed the Discord now playing mode causing the odd hangs / crashes that have been seen when the feature is enabled due to multiple threads being generated which would then cause a block on the stopping mode (thanks to Dr Flay for trying out things which finally generated crash reports that actually helped to figure out what was going on at last since this has been an issue for some for many months)
Fixed a number of internal issues when attempting to build the WACUP core using the VS2017 compiler including some weirdness with some of the preference entries showing garbled text
Fixed a metadata handling issue with the PSF player plug-in
Fixed the possible cause of some of the weirder modern skin engine related start/stopping deadlock issues seen from the crash reports
Fixed the probable cause of trying to restart a visualisation plug-in too fast causing an error to be thrown or a running visualisation plug-in preventing closing with a modern skin from completing correctly
Fixed a number of cases where I was not cleaning up locally set accelerator tables which could cause a slow memory leak in some specific scenarios if the window related to it wasn't correctly created / destroyed (the fun things you find when trying to replace API interfaces from the inside-out!)
Fixed stopping the current visualisation plug-in sometimes being a lot slower than would be liked (which could appear as modern skins acting a bit oddly for a few seconds) as well as it causing an unnecessary delay on the overall WACUP closing time
Fixed the wrong menu being shown when opening the 'sel' button in the main playlist editor window (typo, oops)
Fixed the probable cause of a crash seen by some when the AAC decoder service fails to be correctly loaded
Fixed the streaming source plug-in incorrectly send the next song when the option has been set to disabled
Fixed some of the Milkdrop stats output re-querying strings that won't change for a small boost in overall fps
Fixed the probable cause of some hang crashes experienced when playing YouTube videos over an unstable connection & a track change is then attempted but cannot complete
Fixed some more instances of configuration settings being saved when there's been no actual change in the settings (this may help with some Milkdrop window position quirks)
Fixed the probable cause of a deadlock experienced with a ml_ll library import when handling a file using the legacy metadata handling mode whilst also attempting to start playback with a modern skin
Fixed a number of drawing issues with the skinned up/down control (mostly due to weirdness with how the hover state was being handled)
Fixed the classic ml_ipod plug-in not able to load due to a supporting dll failure as a result of a security related feature of WACUP
Fixed an issue with the installer where one of the NSIS plug-ins might not be removed prior to the installer cleaning up after itself (the temp folder would be removed after a restart but this helps to better ensure it'll be removed completely there & then)
Fixed the Milkdrop window when going into fullscreen mode (not when using the fake fullscreen mode) often shows the edge of the window to be used before the rendering has begun
Fixed the current installer not removing older copies of the WACUP installer from it's updates folder (if any exist) from the self-update support (depending on how the installer is run the current installer may still be left in the updates folder)
Fixed the Waveform Wrapper plug-in not correctly handing off some WAV files with MP3 data in them which could cause brief blips in the audio output
Fixed Milkdrop sometimes hanging / going slower a few seconds after WACUP is loaded & the information about the current song is being displayed via the F3 toggle (most probably don't even know that option exists but it helped to more consistently replicate a loading bottle-neck on loading along with the option to show the current frame rate - I now get an almost instant 50-60FPS compared to low 20FPS before)
Fixed the Alt+3 stream info dialog for HTTPS streams handled via the in_mp3 plug-in not showing the current stream information due to a force HTTPS -> HTTP remapping to allow the in_mp3 to even work
Fixed the replacement local library plug-in not correctly handling importing some files where some of the basic expected metadata is missing which would incorrectly cause the basic guessing to be used
Fixed some of the initial slowness on loading when the classic artwork window is enabled (there's still a lot more to do related to this in general as the Winamp core drawing the main window is now hindering things but this change helps a bit at least to my eyes with a fully loaded classic skin)
Fixed the preference options on the library nodes not always working or opening to the wrong item
Fixed a compatibility issue with some older plug-ins that use the IPC_FORMAT_TITLE api (e.g. ml_dlna)
Fixed a crash with the Streaming Source plug-in when trying to process a really long playlist file path
Fixed some slowness with the initial loading of the library playlists view as well as it not auto-scrolling the selected playlist into view
Fixed the internet radio view list flickering when any form of resizing is being done to the view (a side effect of how the tree was drawn)
Fixed the second information line on the discord status sometimes showing gibberish
Fixed 'bitrate' not being correctly returned via ATF / local library imports due to a typo causing the fallback mode to be used (i.e. guesses based on the file size)
Fixed some cases of newly added items into the replacement media library not always triggering an appropriate local library view update to allow those items to be seen without manually refreshing the view
Fixed some PSF sets failing to load with the WACUP provided decoder plug-in due to some issues when the plug-in was being re-compiled & ported to build under a newer compiler to the original plug-in
Fixed converting a high bitrate / samplerate file from FLAC to OGG Vorbis generating an incomplete / broken output file (silly issue from not having a large enough temporary working buffer to use)
Fixed the format converter not always handling some encoding errors as expected causing it to remain in the processing loop
Fixed WAV files other than 16-bit not always being reported correctly via the transcoding api (is likely there's more issues with the likes of 24-bit & higher that needs to be resolved in later builds)
Fixed a number of issues with the Opus encoder so it'll now better deal with different input bit depths vs what it wants to use natively which reduces the chances of a file conversion to Opus failing
Fixed the probable cause of the Milkdrop plug-in sometimes not seeming to re-use it's prior settings on loading due to a contention access issue with the settings cache (hopefully this won't break anything else)
Fixed some quirks with the taskbar / process title text not being set as expected when the main playlist editor is empty or when scrolling is not enabled with the ' *** ' part being incorrectly added
Fixed some visual issues with the podcasts library view depending on the skinning engine & other aspects
Fixed the restoring of the shuffle table between sessions not working due to lessening the requirements on using the Winamp core & some of the hook methods that were being used now no longer get run
Fixed saving the shuffle table between sessions not correctly truncating the file (this didn't affect the behaviour but could cause the file to potentially keep growing in size depending on the maximume main playlist editor size reached)
Fixed some sizing / display issues with the about dialog when first opened (some of these issues may still occur when the skinned version is being used)
Fixed some of the modern skin information being incorrectly clipped in the 'Skins' information panel
Fixed a slow closing of WACUP if the Internet Radio view is the current library view as well as making switching to other library views not take so long
Fixed the select search (F6) & forced view refresh (F8) actions not working in the Internet Radio view
Other changes related to moving more of the general handling over to just be done via the WACUP core without Winamp's core doing some of it (e.g. as with the visualisation & DSP plug-ins)
Updated cacert.pem to latest (14 Oct 2020)
Updated LAME (lame_enc.dll) to 3.100.2.4 (25 Aug 2020) for a 51KB size reduction due to it now using mpg123 for certain features
Updated libcurl (libcurl.dll) to 7.73.0 (14 Oct 2020)
Updated libexpat (xml.w5s) to 2.2.10 (3 Oct 2020)
Updated libjpeg-turbo (image.w5s) to 2.0.6 (16 Nov 2020)
Updated libnghttp2 (libcurl.dll) to 1.42.0 (23 Nov 2020)
Updated libopenmpt (in_mod.dll) to 0.5.3.13775 (25 Oct 2020)
Updated libsidplayfp (in_sidious.dll) to 2.0.4 (1 Oct 2020)
Updated libsndfile (libsndfile.dll) to 1.0.30 (19 Sep 2020)
Updated minizip (zlib.dll) to 2.10.3 (9 Nov 2020)
Updated Monkey's Audio (in_ape.dll) to 5.64 (24 Nov 2020)
Updated OpenSSL (libcurl.dll) to 1.1.1h (22 Sep 2020)
Updated Patreon list
Updated unrar (unrar.dll) to 6.0.1 (22 Oct 2020)
Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 22 Nov 2020
Updated zlib-ng (zlib.dll) to latest re-based update (23 Nov 2020)