Added support under Windows 10 / 11 for most configuration dialogs / messageboxes / windows shown to follow the OS dark mode setting (note: this is mostly relying on the OS to do the drawing so some controls &/or dialogs may not be supported depending on the OS version &/or specific revision being used) - if there's anything obviously missed &/or from 3rd party plug-ins then do let me know so I can try to handle them!
Added support under Windows 10 / 11 for the installer & uninstaller (once updated to this version or newer) to follow the OS dark mode setting
Added the ability to run the modern skin engine plug-in (gen_ff.dll) in WACUP's non-legacy mode (aka a big step closer to finally dropping the need for legacy mode & using the original Winamp exe to run)
Added a triple-size mode for classic skins (Ctrl+Shift+D menu shortcut) for those finding double-size is still too small (this depends on plug-in support much like some of the earlier WACUP changes to allow the generic skinned windows to support double-size)
Added an initial input plug-in for playing local Opus audio files (streaming support will follow later once the base plug-in including it's handling of metadata editing has been confirmed as working ok)
Added an input plug-in based on the recent in_vgm/libvgm solution (v0.51) by Valley Bell (named in_vermas so as not to conflict with existing in_vgm copies for those still preferring that) with the expected WACUP integration changes (transcoding, unified fileinfo / alt+3 dialog, removing legacy client support, etc)
Added 4 input plug-ins to the installer which add support for DS Sound Format (in_2sf.dll), Game Boy Advance Sound Format (in_gsf.dll), DS Nitro Composer Sound Format (in_ncsf.dll) & SNES Sound Format (in_snsf.dll) which increases the out of the box support for video game related format (these are modified from https://github.com/CyberBotX/in_xsf/ to improve WACUP the integration & resolve some issues)
Added reporting of the overall initial loading time (more might be happening after this time) & the time for the main aspects of the core to load into the load profiling output (some might find it useful if your WACUP install seems to take an unreasonable amount of time as a means of confirming if that is the case)
Added options onto the equaliser window 'auto' button right-click menu & the appropriate equaliser under modern skins to control additional equaliser preset handling to auto-select based on the reported genre of the playing item (this is the merging of the old 'Auto EQ' plug-in into the WACUP core to make things a bit quicker & more seemless with this feature that many had wanted over the years)
Added the helper IPC_TOGGLE_MUTE & IPC_IS_MUTED api for plug-ins to use to be able to toggle the current playback volume between muted & the previous level (if the user hasn't changed it since the api was called) & to check if the muted state is currently set (please note that this does not relate to the self managed mute option that modern skins offer)
Added a .beat time (Swatch Internet Time) mode to the Big Clock plug-in base on a request from the Discord server (niche player gets a niche feature so it somewhat makes sense)
Added compatibility changes to allow the old (circa 2003) Bouncing Cube visualisation plug-in to work under WACUP (this helps resolve it needing to be run as an administrator for the configuration options to be applied as well as resolving issues with the window size & position due to a conflict with OS DPI scaling vs a non-DPI based API that the plug-in uses with it's window position handling)
Added /REMOVEPLAYLIST which accepts a playlist guid (such as from /ENUMPLAYLISTS) to complement the existing playlist command-line actions
Added an 'Appearance' preferences page under the 'General' preferences node where the playlist editor font controls now reside (this has applied to everything instead of just the playlist editor which is why it's been moved from the 'Playlist' preferences page) along with using skinned preferences & skinned menus as well as some other non-skin specific options (more will be moved / added to this preference page in later builds)
Added options on the 'Appearance' preferences page to make it possible to adjust the font used for the skinned menus (new addition which Winamp didn't offer which should make them less jarring to use)
Added a new IPC_WACUP_HAS_LOADED notification to know that loading should have completed enough
Added an OS compatibility check for the 'FaultTolerantHeap' being enabled which can occur due to the OS being helpful if there are too many crashes (e.g. during development) but it can cause more problems such as modern skin loading issues & more crashes on closing (hence the need to make it more obvious if this has been enabled as it's caught me out a few times)
Added support to the appropriate WACUP provided media library plug-ins to allow for type to find to work (e.g. with the list focused it'll jump to the item that matches based on what's entered which Explorer & other instances of listview controls do & something I'd missed compared to the Winamp versions of the plug-ins)
Added the ability to specify a custom songticker ATF string (which works for all skin types) on the Appearance preferences page for those wanting more customisation over the look of their WACUP install
Added a configuration option to the Milkdrop plug-in to have it not recursively load presets found in the sub-folder of the currently specified root preset folder (this is not enabled by default as the abaility for the plug-in to find & render any of the available presets is less monotonous for most users out of the box vs this option which enables the 'classic' Milkdrop preset loading behaviour)
Added an option to the Lyrics plug-in to not show the albumart for the current item being shown (taken from a Discord request)
Added the option to the add / edit view dialog for local library views when using ml_ll to have the filtered results list aligned to the right of the view instead of to the bottom (still the default style)
Added remove item actions to the ml_ll local library views (including to the upper pane filters unlike Winamp's plug-in) & the navigation tree view right-click menus doing either removing the selected through to the ability to remove missing &/or unsupported items (where there is no input plug-in claiming ownership) which should make ml_ll better at purging items no longer needed
Added batch edit metadata (the ctrl+e in-view shortcut) to the ml_ll local library vies selection right-click menu which enables a mode that hasn't been working in the ml_local plug-in this replaces
Added support for the ml_ll local library database to be handled via the export -> local library option if it's the currently used local library plug-in (more to do with the old vs new handling but this'll do for now :) )
Added a save as csv file option to the ml_ll save as action as a more obvious version of the export smart view option (via the library button menu) which will save the current view results
Added tooltips on the classic skin equaliser window for the 'hidden' areas for setting the bands to maximum/default/minimum
Added an input & encoder plug-in for the True Audio (TTA) lossless audio format (this is lesser known but might be useful to some users with older audio collections that still need its support)
Added play/enqueue/enqueue & play options to the library podcast root node menu that allows for sending either all or only the newest podcast episodes into the main playlist editor
Added the ability to now also edit the title for a playlist entry (main & library playlists) in addition to being able to edit the entry that the playlist item relates to (dunno how this was never requested before nor why Winamp didn't have the functionality for me to replicate as part of WACUP but this is why WACUP is like a WinAmp++ :) )
Added support for the podcast & downloads views to show the last time the podcast episode was played (either as the url or the locally downloaded file) to make it easier to determine what ones have been played or not as well as making use of information that is present from other parts of the media library without having to go to another library view (e.g. history)
Added support for modern skin tooltips (unless the skin does it's own tooltip handling) to follow the scaling of the skin instead of staying super small (thanks to eris & mirzi for getting this working)
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 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 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)
Added some more options to the big clock plug-in for the time of day mode so it can now be in either 12hr/24hr mode along with not showing the seconds & how the PM indicator is displayed in the 12hr mode
Added Windows on ARM detection to the crash reporter (as running WACUP on Windows 10 for ARM on a Raspberry Pi 4 is now a known to work configuration which runs surprisingly well though a native ARM64 verison of WACUP would likely make for a nicer experience on such hardware...)
Added checks on loading for OS version compatibility being enabled which in one case was set to Windows 98 & was causing a slew of crashes so it's better to warn where possible as OS compatibility really isn't needed
Added the ability to now configure & use up to 10 active stream sources when using WACUP's streaming source DSP plug-in which can be configured via Preferences -> Streaming (this is compared to a fixed 3 streams from prior builds)
Added support for holding shift + arrow key up / down or shift + mousewheel scroll up/down to offer finer resolution of volume change compared to the normal level that matches Winamp's behaviour
Added a $year alias to use within the NDE queries which can make it easier to have a local library smart view which automatically updates to only show files from the current year (if there's more aliases that make sense to add then let me know & I'll consider them if they make sense :) to add)
Added support for @WINE@ in modern skin script parameters so it's possible for the skin (sparingly) to know if it's being used under WINE or a normal Windows setup (incase of needing to work around WINE bugs for the hopefully short term)
Added an option to control whether the text shown in the classic skin windowshaded playlist editor is capitalised or not (am going non-capitalised by default going forward so this allows for getting the Winamp style back for those that want it)
Added official command-line handling support for interacting with the player when using non-legacy mode or native only mode with the 64-bit builds with limited support provided for legacy mode instances (this is not something that has been formally supported in all prior WACUP builds & is why the functionality has been broken for at least 9 months with the beta builds prior to this build being released)
Added the ability when using non-legacy mode or native only mode with the 64-bit builds to specify multiple items via the command-line handling options related to play / enqueue / enqueue & play (this is also a new addition over what Winamp was able to offer which is why it's not available when using the legacy loading mode)
Added the current running time for the current WACUP instance to a 'Statistics' block on the 'About | Updates' preferences page as sometimes it's useful to know this without forcing WACUP to crash :)
Added a 'duplicate at bottom' action on the playlist editor's send-to menu which is equivalent of the 'enqueue' action that Winamp's send-to menu would show but better reflects the action without the imho confusion of having an 'enqueue' action on there (added based on feedback from discord)
Added %samplerate_khz% to complement the previously added %samplerate% ATF metadata variable which preformats the output (if available) in a kHz style (e.g. 44100 -> 44.1 or 22050 -> 22.05) without having to do weird ATF string processing :)
Added the ability for the crash reporter to now check when a crash happens for any post-install updates for the build that's failed to be applied in-between full builds (this has been done due to too many of the beta testers just not bothering to check the forum as per beta testing instructions when there are repeated crashes especially after a new build has been released so this should make my life easier!)
Adding a ML_MSG_TREE_ONDESTROYVIEW notification for the media library plug-ins which'll send the current hwnd about to be destroyed so the plug-in knows & can trigger any clean-up as needed in a more timely manner vs a last minute reaction to the views getting the WM_DESTROY message (dunnoy why this was never something Winamp did as it'd have made a few things simpler plus it helps move things a bit more away from relying on Windows messages for things :) )
Added /UPDATE=noui to offer a pure command-line mode for triggering an update which assumes that by running the command you do want to do an update check
Added an option to the dedicated album art window (via gen_classicart.dll) so it's possible to now have the artwork slightly blended with the window background if enabled (some may like this so here's another option to add to the mix!)
Added support for module files (e.g. MOD, XM, UMX & any of the other 56 extensions) to be treated like a playlist if there are any reported sub-songs within them (there's an option to go back to the older style of treating them as one big file if that's preferred but automatic expansion is the default behaviour going forward)
Added a 'Volume' tab to the main Playback preferences page so it's possible to check the internal WACUP volume level & the reported external process volume level from the OS mixer so that the effective playback volume level can be determined (e.g. if the OS mixer volume level is 25% & the internal WACUP volume level is 100% the effective volume level is 25% which would make it sound a lot quieter vs other programs)
Added support for the modify option to be enabled via the add/remove OS preferences (subject to Windows supporting allowing it) which may be helpful in some situations if there's an issue or the user is unclear about what might have been changed (this will not be available for portable installs)
Added an on closing notification message for the plug-ins to hook so it's easier to know what the type of close is (currently normal or self-restart) so the likes of the autoplay plug-in can update their stored states before the full closing process is commenced
Added the ability to revert back to the last library playlist (if one exists) via the right-click menu on the playlist child nodes or from within the root of the library playlists node (this is not currently done within the specific library playlist views for now as a proper undo mode makes more sense to be implemented into them but this will at least help with making use of the backup playlist files)
Added ability to either manually or from the current skin to override the taskbar preview & overlay icons with the files needing to go into a 'Taskbar' sub-folder in the WACUP settings folder or root of the skin folder/archive being used
Added using Shift + Spacebar in the main playlist editor to force scroll the currently playing item back into view depending irrespective of the default Spacebar setting (this makes it easier to get close to the old Winamp behaviour whilst embracing some of the WACUP adjustments to the handling based on feedback to try to make things more consistent in their handling vs different Winamp skins & other players)
Added initial WACUP versions of a NSFPlay/NSFPlug v2.5 based input plug-in (in_notyansf) for NSF/NSFE support, an MSXplug based input plug-in (in_msx), an AdPlug (AdLib) based input plug-in (named in_addanotherplug so as not to conflict with existing in_adlib), an ASAP (8-bit Atari) based input plug-in (named in_later so as not to conflict with existing in_asap) & an sc68 (Atari ST & Amiga) based input plug-in (named in_sc68k so as not to conflict with existing in_sc68) to further expand the native playback support for video game based formats as per user requests (more needs to be done to some of these plug-ins mostly related to format conversion support)
Added support to the listview header skinning to show the column sorting direction in a more legible way as it's using the filled up/down unicode arrow character from the font instead of a fixed small image as Winamp's media library implementation was doing which wasn't scaled to fit unlike this new implementation :)
Added support for classic skin loading to look for cursors in a 'Cursors' sub-folder within the skin (folder or archive format) so it's a bit cleaner for skinners who want to use it instead of dumping everything in the root of the skin folder / archive
Added resetting of the 3rd party lyricsplugin window settings to the /RESETCLASSICSKINPOS & /REPAIR command-line actions
Added an option on the playlist preferences page so it's possible to enable a behavioural change to prevent the currently playing item being always scrolled into view when there's an item selected
Added Ctrl+Shift+A as a playlist window shortcut to quickly remove the selection from any of the playlist items (this is applied in both the main playlist editor window as well as library playlist views)
Added Ctrl + double-click on the classic skin playlist editor's 'selection' button to trigger the invert selection action
Added support to the button skinning to now handle the split style in a more legible as it's using the filled down unicode arrow character from the font instead of a fixed small image as Winamp's media library implementation was doing which wasn't scaled to fit unlike this new implementation :)
Added support to the /enableplugin & /disableplugin command-line options so that specifying gen_ml or gen_ml.dll or library will allow for WACUP's media library core to be controlled with this option in a comparable manner to what the earlier builds which used the separate Winamp plug-in required for it to be controlled
Added better plug-in support for those shipped with WACUP that can be forced to output mono audio if the playback option to force mono playback is enabled (this is still incomplete & a post-processing step will most likely be implemented so there's not a reliance on plug-ins to be updated to support this playback mode)
Added compatibility improvements for the iZotope Ozone Free DSP plug-in so it's settings will be saved without needing to run everthing as an administrator, fixing it causing WACUP to massively lag when it's window is visible & avoided an issue during it's unloading which could cause the WACUP process to hang on closing if it was active at the time (nothing WACUP is doing wrong, just an old plug-in being weird)
Added Alt+B & Alt+R for toggling the Big Clock & Wavefork Seeker plug-in windows respectively as global keyboard actions when WACUP is focused (taken from a user request & hopefully doesn't break anything)
Added a command-line helper mode that can be used to attempt to collect a running process dump & submit it like a crash report if a WACUP instance is hanging (though the chance of needing this should be much lower since recent beta build changes to resolve what was determined to be the cause of that issue especially when using Windows 7)
Added a workaround to deal with some older visualisation plug-ins that can at times throw un-helpful error messages whilst still being able to run
Added a workaround to deal with the AVS visualisation plug-ins sometimes locking up the process when they're being loaded (it still doesn't help AVS crashing especially in the convolution.ape)
Added playback support for BeatSaber song files along with trying to correctly determine the artwork file that is associated with them (as long as the expected json file is found)
Added a 'delete current song' to the notification area icon support (icon packs would need to be updated using ico9=delete.ico to support customising this in the icp files) to offer a different way for deleting the current playlist item with appropriate handling to deal with it also playing (this has been done to remove the need to patch around non-WACUP issues with the old 3rd party gen_delete plug-in)
Added an 'extension' filter to the offered local library plug-in filters so it's a bit easier to distinguish the different potential file types within the local library database without having to remember to do things like ?(filename ends "opus")|(filename ends "mp3") to manually filter the search results
Added a means to prevent the dedicated album art window for modern skins (if they follow a standard way of defining the window) from being created if the album art plug-in is being used (this helps to avoid the double album art window & menu items which can be confusing at times without having to mess around with editing / recompiling aspects of the modern skins)
Added an option on the Media Library preferences page to have the navigation tree located to the right of the current view
Added a 'freeze windows' option for the classic skin handling so any native / generically skinned windows handled via the core will have their position effectively locked (using the control key can override this to allow for resizing / repositioning as needed - the classic skin options preferences page details more about this)
Added a clarification on the taskbar preferences page for where the custom icon (taskbar.ico) needs to be put to be used
Added an option on the classic skin preferences page so it is now possible to use either the classic skin text font or a real text font for the song info area (where the kbps / kHz values are displayed) as this might be useful for some depending on the skin aesthetic & font options available
Added better handling of the tooltips in the podcast & downloads views to deal with the descriprion from the feeds being provided in html so they now should appear in a reasonable plain text format
Added a tooltip for the kbps / kHz areas of classic skins so it's possible to see the actual value if playing something which causes the clipped version of the value to be shown
Added a native replacement of buggy timer.w5s from 5.666 which provides the Timer script object for modern skins (far too many hours taken going over the Winamp3 SDK to figure out the interfaces, etc to get this working!)
Added setting the currently playing stream as a button on the Discord Rich Presence (this will however only work for others viewing your profile & won't work if done yourself because that's what Discord does)
Added a workaround for invalid mp3 files that may be sent to in_mp3 to prevent that plug-in causing a crash
Added smooth scrolling support for the classic skin song ticker (there's an option on the Classic Skin preferences page so the Winamp style of scrolling can be re-enabled for those who prefer that)
Added better icon support for the media library navigation tree items so it does a better job of resizing the icons as needed compared to the hackish workaround that was used to attempt to achieve it with the media library core plug-in from 5.666 (aka what's seen with the prior preview builds)
Added preference options for the media library tree so the icon support can be enabled or disabled along with whether the buttons on the nodes (as seen for however many months its been) is preferred if not wanting to have the icons shown
Added a processing set of images for the local library to make it visually more obvious that something is happening for some of the long running actions along with the number of items remaining (which mirrors what's seen with the remaining podcast downloads to complete)
Added new images for the WACUP provided library navigation tree items so they have a higher native resolution instead of 16x16px as per 5.x
Added changing the main ui font to now be done via any supporting windows instead of just via the main playlist editor window (e.g. using Ctrl + NumPad Plus, Ctrl + NumPad Minus or Ctrl + Enter) along with classic skins being shown an indication of what the change was via the song ticker status
Added to the library window button menu an update all podcast feeds item (this mirrors the item on the right-click menu of the podcast & download view items)
Added to the library window button menu refresh all metadata & remove all missing / unsupported items (this mirrors the item on the right-click menu of the local library root view item)
Added reporting of some additional information on the 'misc' diagnostics preference tab which mirrors some of the information found in the crash report logs & can be useful for seeing if there's a possible resource leak for some (am aware of some 3rd party plug-ins that can & will cause such issues)
Added specific library window button menu handling for a new import submenu as well as internal handling changes to simplify getting the export menu & a slew of other small changes related to this
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 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)
Added a tataki.dll compatible replacement to be able to drop needing to re-use that supporting dll from 5.666 (it's been an on/off effort to do this over the past 3 or 4 years due to time & needing to be in the mood & from having to massage aspects of the Winamp3 / Wasabi sdk into a manner that works for what the modern skin engine plug-in gen_ff.dll & a few of the other plug-ins require so there will likely be some issues related to this change vs the crashes that the original dll were causing particularly on closing)
Added an option on the Modern Skin General preference tab to control the loading of the Color Editor (default loading is off as most will not need this so it saves some resources & time on loading & avoids some potential conflicts that can occur from trying to load this old component)
Added an initial implementation for handling local MP4 files containing dash / fragmented data frames along with resolving a number of other problems with some invalid / missing frames (e.g. for bitrate)
Added a number of compatibility improvements for the 3rd party lyricsplugin from window styling (follows the classic skin scaling options now) to menu items not working correctly & so on
Added a WACUPified build of the classic full-screen Geiss visualisation plug-in (it won't use settings for existing older copies of the plug-in due to this build of it not using the OS registry to allow it to be usable with portable installs)
Added an option to the skin preferences page to limit the option for selecting a random skin on playback to only select classic style skins
Added a native implementation of the Jump To Track (gen_jtt) plug-in (originally from 2003) which completes the trio of the Jump To dialogs now being implemented within the WACUP core :)
Added double-clicking on the vertical divider in the library window between the navigation tree & the currently selected view to act as a way to resize the navigation tree to only take up the width needed to see the currently visible items within it (something that I've been wanting for a long time to make the alignment of things a lot simpler vs trying to eyeball it)
Added double-clicking on the vertical divider in the internet radio & podcast views to resize to the radio station genre tree & the podcast channel list respectively
Added double-clicking on the vertical dividers in the local library views to align the divider to the right edge of the filter to it's left to make it easier to align things based on the intended sizings
Added an option to the Playlist preferences page to control whether existing title information in playlists if present is used or if it'll be ignored when added from outside of WACUP (e.g. via drag & drop or from Explorer) causing the titles to be regenerated based on the current ATF string
Added drag & drop support for some of the media library navigation child nodes onto the main & playlist editor windows instead of only being able to use the right-click options &/or doing it from within the selected library view (e.g. podcast downloads or a bookmark category)
Added support as well as an option to the Video preferences page to allow supporting plug-ins (aka in_mp4) if the option is enabled to attempt to fallback to using OpenH264 for decoding that data format (this will attempt to get the required dll & is aimed more at WINE setups where Media Foundation support is lacking but is off by default as most setups do not require the additional processing this adds)
Added a libfaad2 based AAC decoder instead of trying to re-use the Fraunhofer based aacdec.w5s from 5.666 for M4A (MP4 using AAC) files (may also look at a Media Foundation based solution later but this is more portable e.g. for WINE)
Added an option on the File Association diagnostics preference page so it's possible to save the currently reported file associations to a text file
Added a patch for out_sqr v1.7.9.1243 to correct issues with it's preference dialog along with some related in-core handling to resolve tab placement issue
Added support to allow manual title refreshes in the main playlist editor (e.g. via Ctrl+Alt+E) to now by default trigger the local library plug-in (if enabled & the item(s) are known in it's database) to refresh the metadata it has cached for those playlist items before the new title is generated (there is an option on the playlist preferences page to disable this)
Added the ability to change the view mode of the local library root instead of mimicking the plug-in from 5.666 where it'd only over show the results in a simple list
Added a preference option on the Notification Area preference page to control the click behaviour of the notification area between click to show/hide or to always show it (with ctrl+shift+click doing the opposite to the currently selected mode)
Added a preference option to control the 'show all by/from artist/album' action in the local library results right-click menu (done as part of the replacement of the local library plug-in)
Added an option when running modern skins to have the script timers run at a lower frequency compared to the default that WACUP now applies (60fps vs 30fps) which is closer to what 5.666 & earlier would run them at & may be of use for WINE / slower setups where the 60fps target can cause a higher CPU load than would be expected (the 60fps target was to provide consistency with the classic skin main window vis)
Added a ProcDump based mode to try to use for cases where WACUP is crashing & it's crash reporter is not being triggered (still not 100% certain how well this mode will work & may itself need some tweaking)
Added a basic debugging mode when running WACUP under a debugger to report the last file that the local library plug-in has attempted to process (via an add or update action) to try to determine some reported failures (this is primarily aimed at being used in addition to the ProcDump based 'debugging')
Added more proxy mode options related to the updated libcurl & updated the proxy help documentation
Added an option to the local library plug-in to control whether it'll do case insensitive sorting (default) or not for the view filter handling (not doing this might be useful for finding mis-cased typos)
Added a small information dialog that'll appear during loading if the main playlist is taking much longer than would be expected (e.g. could be due to slow network resolution or from trying to load all files from a drive due to folders being allowed as playlist entries) & should not appear for the majority of setups (famous last words)
Added support for the spacebar to trigger the process wide play/pause/show active main playlist item handling if the library navigation tree is focused (this should help to improve the likelihood it works depending on how the WACUP instance was made to be the active program)
Added support for using a mlnotfound.png/bmp from within the root of the skin being used or the WACUP settings folder to allow using a different image for when there's no albumart able to be shown within the album cover view modes
Added an option on the format converter preference page so it can be made to convert any spaces in the final generated filepath to underscores
Added support for Ctrl+F8 to trigger a full reload of the current library view unlike F8 which (if supported by the view) will try to refresh things based on the current search parameters (this is mostly just a quicker way to help when testing without having to change to another library navigation node & back again to the one wanted)
Added support for an ATF based custom matching rule with the album art reading preferences (General -> Album Art)
Added %fullfolder% to the ATF support to return the complete folder path for an item (if applicable) instead of just the current folder as %folder% does (this can be used with the above additional albumart reading mode)
Added an 'Audio from this Year' local library view preset so it's easier to see if $year query variable in use
Added an option on the Notification Area preference page so it's now possible to have the right-click menu show a minimal playback menu instead of the full main right-click menu
Added an option to the classic spectrum analyzer visualisation to vertically flip the image (bug found during some clean-up & made into an option as some liked it)
Added an option to the local library preferences to control whether albumart (if set to be shown) will be preloaded or not in the background for album items not yet viewed (this is off by default for now as it can cause excessive CPU levels whilst all of the items are being processed which isn't ideal for laptops or older devices)
Added the ability to customise the name of podcast feeds shown within the podcasts library view (not the local library sub-view that shows podcasts from the local library database) to aid in better organising the list
Added export support of WACUP's current podcast subscriptions to an OPML file (this is done via the export sub-menu shown from the button menu in the library window)
Added import support of OPML files containing podcast feeds into WACUP's current podcast subscriptions (this is done via the import sub-menu shown from the button menu in the library window & the podcast navigation node right-click menu)
Added a workaround to hook the modern skin guru meditation error window to be able to auto-close it after a few seconds to avoid it causing problems if left unattended as seen in some crash reports
Added a /FIXWAMODSHADE command-line option to fix an issue with the Winamp Modern skins where the modern skin engine can incorrectly save a height for the windowshaded main window causing an unexpected band appearing below the normally seen part of the window (this is to save those users who experience the issue from otherwise having to wipe their modern skin related config file if it happens to them)
Added the ability to check & report in the plug-in preference pages if a plug-in dll failing to load is likely due to it not having been built to support DEP/NX-bit (aka very likely to be an old plug-in)
Added a WACUPified version of the MatrixMixer plug-in (out_neo.dll) to aid in up/down-mixing the audio channels along with some other audio processing whilst using the other available output plug-ins & is configured via Preferences -> Plug-ins -> Output -> Channel Mixer (for beta testers this will remove the interim build of the dll so those of you not paying attention to things will no longer get an error message on loading along with disabling the original out_mixer from being loaded as it doesn't support the other WACUPified output plug-ins)
Added export actions to the appropriate library navigation tree right-click menus where an export option is implemented to mirror those also provided via the library button's export sub-menu
Added an option to the Playback preferences page's audio modes section to control (subject to input plug-in support) if files with video will have that rendered as well or if only the audio will be used
Added some handling to try to determine why in_mp3 is giving a generic error message if it's not able to save metadata edits to files to try to determine if it's a locking issue or a different issue
Added initial opt-in support to the Streaming Source plug-in for when configured to use the SHOUTcast 2 connection mode to send the albumart for the currently playing item (this will if needed resize the albuamrt down to avoid the server limitations with albumart support & depending on how well this addition works, stream branding support might be added for those also requiring full parity with dsp_sc)
Changed the classic skin main & equaliser windows to now be drawn & handled just by the WACUP core instead of letting the Winamp core do it - this is a MASSIVE change & there's likely to be some minor issues with things maybe not reacting like Winamp did though it's also allowed for refining some actions (e.g. easier access to the known equaliser presets via the menus instead of going into a dialog)
Changed the installer to no longer try to re-use a Winamp compatible uninstall entry in the Windows registry & instead use a WACUP specific one due to winget / other application management software incorrectly trying to update & then breaking WACUP installs using unrelated "winamp" installers (this unfortunately breaks the ability to have plug-in / preset pack installers see the WACUP install & will require either having to manually enter the WACUP program folder to use &/or extract their contents & manually copy things over - am sorry about this but I can't fix those installers & "winamp" updates effectively wiping out valid WACUP installs is not acceptable)
Changed the skinned menu handling implementation to not be provided via Winamp which is a bit visual different but should improve consistency to the OS menu handling & when WACUP is on high-dpi displays
Changed how the WACUP loader is managed so it will now only remain running to do the update check (if applicable) before closing instead of just sitting there waiting for the spawned Winamp process to close (this is in response to an issue with Stereo Tool DSP v9.70 where it causes WACUP to hang on loading until the waiting loader process exits - not sure what that DSP changed from v9.63 but this change was going to happen eventually as part of the work to remove the use of winamp.original so why not do it now :) )
Changed some of the metadata handling to avoid some more non-metadata specific values being queried from the taglib based handling (seen in a waveform seeker crash when the 'type' was being queried)
Changed how some of the internal main playlist title sanitisation is done in response to a crash report seen within that handling
Changed how the reading in of the configuration is done to hopefully work around an odd runtime handling issue seen in some crash reports which prevents WACUP from being able to complete its loading
Changed libvorbis.dll to export some more methods that are needed by the recent updates below (the downside of trying to size optimise dlls at times)
Changed the handling of plug-in unloading to try to deal with some odd crashes seen when trying to determine the validity of the plug-in information (e.g. related to stacked plug-ins)
Changed the media library plug-ins to be able to directly indicate they want their preferences to be placed under the 'media library' node so the media library core doesn't need to figure it out (that behaviour is still maintained for compatibility with older media library plug-ins)
Changed ml_wire.dll to now be named as ml_podcast.dll since this makes more sense when browsing the plug-ins & because I no longer need to maintain compatibility with the legacy media library core plug-in
Changed the Waveform Seeker plug-in to not process any files supported by the newly added in_xsf plug-ins (see top) due to it triggering thread-safety issues within the plug-ins (not ideal but it's better than it crashing until something can hopefully be done to the upstream copies of the plug-ins to fully resolve this issue)
Changed the media library plug-ins provided with WACUP to use a newer revision of the media library plug-in interface (this won't prevent older media library plug-ins from being used & like has been done with other plug-ins under WACUP offers better integration for the native WACUP plug-ins)
Changed the media library plug-ins to use more shared code for a small saving whilst changing them to use some direct library api calls instead of the slower SendMessage(..) based calls
Changed how the export menu on the library button & window menu (if using a modern skin) are handled to better ensure they update if there's changes with the library views available (this also removes the plug-in trying to pre-populate on loading for a small performance improvement on loading)
Changed how the album art plug-in works to use a simple cache to help minimise its overall impact on WACUP's load time as well as reducing how often it re-queries metadata
Changed the references to use of the spacebar in the milkdrop window to better reflect that shift+spacebar is the preferred soft-cut to next preset action from trying to better ensure that spacebar works uniformly for toggling the playback state)
Changed how the Win7shell plug-in & related DWM (desktop window manager) methods are handled when attempting to use WACUP on some esoteric setups where the DWM methods needed aren't available
Changed how the main playlist editor drawing is handled to minimise the chances with some modern skins on loading / change from another skin (e.g. Big Bento) for it to show the items using the classic base skin colour with a fallback system font (this also offers a small reduction on loading times but the main thing is to avoid the jarring mixed look whilst the skin engine is still doing it's initial loading)
Changed how playlist entries are handled when read to minimise associated drive activity (especially when using HDDs over SSDs) & to avoid offline UNC based paths triggering validity checks to help resolve reported issues with excessively long initial loading times (e.g. a 1200 entry test playlist went from 33ms to 6ms be loaded on my development machine - 6ms is how long a 300 entry playlist before the changes would take for comparison - the change also meant a 4.6s wait with a playlist containing an UNC path went away)
Changed how the library bookmark & podcast download views work to reduce their impact on initial loading time if they were the last view prior to closing (is more work that needs to be done for the other library plug-ins)
Changed how the classic skin oscilloscope is handled to have it better fill the available area it's drawn into whilst making it less likely to appear as top heavy when using the solid drawing mode
Changed some of the handling around the Alt+3 File Info dialog to better deal with edits failing to be saved (e.g. if it cannot be applied on the currently playing file)
Changed some of the handling around trying to update the metadata of the currently playing file (still more to do but this should help with some of the reported issues)
Changed the plug-in profiling support to release its log file where possible once loading has finished
Changed the skinned preferences handling to prevent trying to override the winamp.ini setting to manually enable it when running WACUP on WINE
Changed the write ratings option to be disabled if the replacement local library plug-in is being used (still need to sort out a better shared handling for this so it's not reliant on a local library plug-in though it will still remain as a default option when re-implemented - we can all thank a certain singer user for that)
Changed how the splash screen on start-up action is handled so it will now be cancelled just after it's loaded instead of waiting for a generic time (also from testing, the splash screen seems to add around 10% to the initial loading time so keep that in mind if you want WACUP to load as fast as possible)
Changed how the oscilloscope data is rendered in the main window visualisation & related plug-in api calls so it should now be oriented in the correct way compared to other software
Changed how Milkdrop deals with running on a monitor in portrait mode to now by default attempt to fill the monitor instead of only filling half of it (this can be manually done via the 'dualhead' options)
Changed how the library playlists root & child playlist views (if enabled) are managed to reduce the delay / impact of them upon the initial load time of WACUP if they're the last view being restored
Changed how the classic skin equaliser window is handled compared to Winamp to better ensure that it's not going to appear as can sometimes happen (this change replaces a prior WACUP patch for this issue)
Changed the /RESETCLASSICSKINPOS to also reset the double-size mode to off & better ensure that the classic skin main window will be in a visible non-windowshaded state when using this command-line option
Changed the /STARTMIN & /STARTMAX command-line actions to now be handled by the WACUP loader which makes loading cleaner & also prevents it being applied to an existing running instance (which Winamp is incorrectly doing e.g. starting with /STARTMIN & then calling it again will trigger the already started instance to come into view when that's not the right behaviour for a loading only related option)
Changed some of the paramater validation of the volume & panning apis to make them more robust to bad input (to prevent values wrapping around oddly) along with having the new value returned in the api calls (this might be helpful for some to check what was actually set, etc)
Changed the library playlist view handling to now save any metadata information obtained when viewing playlist items that didn't already have that information stored (this reduces duplicate processing when viewing the playlist & also can improve loading times due to not needing to trigger an immediate loading of the local library database)
Changed to have WACUP provide the base services manager & callbacks implementations instead of Winamp (this isn't the final implementation as there's patching & hooking required to get it working but it's enough to help test that it works as this took a few days to get it to a seemingly stable solution)
Changed how the child process determines the path of the WACUP loader (e.g. wacup.exe or winamp.exe) to resolve some issues now that the loader program isn't kept around after starting
Changed to have WACUP now provide the 'PE_Info' & 'VID_Info' implementation (the video support has been broken for a while) once I finally figured out the 3 files from the Winamp3/Wasabi SDK that were needing to be used directly or slightly modified or provided enough information to be able to create the definition for the dispatchable class that needed to be interacted with (aka it took months of on/off work to figure this out)
Changed how the Win7shell plug-in handles its rendering to now be done in it's own thread which should help resolve some of the hang related crashes seen with some setups (e.g. due to the OS fonts folder containing lots of fonts which can be slow to enumerate &/or triggering a font parsing crash)
Changed some of the core & plug-in menu handling (e.g. the exporter plug-in menu insertion) to resolve some issues found as part of replacing the skinned menu handling
Changed some of the preference pages to now have an obvious ATF help link if ATF is used on it (e.g. the Discord preferences now make it more obvious what is used to be able to refine what's shown to others)
Changed the podcast view's edit action to now support changing the feed url without having to manually add a new feed & remove the existing feed (there might be some more work required to refine this)
Changed the installer to no longer rely on the helper findwinamp.dll by using the equivalent handling from the WACUP core dll instead (this also saves ~50KB from the installer size)
Changed the album artwork & lyrics plug-ins to respond to a new IPC_PLAYLIST_ITEM_REMOVED api to better ensure they update as expected if the item they are showing has been deleted from the main playlist
Changed the autoplay handling so it now waits until WACUP is known to be in a loaded position which should help to avoid some issues experienced with modern skins not receiving some notification messages (this removes the need for the delay load option)
Changed how the vgmstream input plug-in handles file conversion to make it more compatible with the common formats (e.g. to MP3 which only supports mono or stereo input) - there's more to do for this but it'll do as a workaround for the time being
Changed how the WACUP files are compiled to better leverage the build machine's capabilities to save around 1min 30sec
Changed the main implementation of the Three Mode Repeat plug-in (gen_3mode.dll) to now be done directly within the WACUP core as part of taking over the classic skin's main window handling
Changed the Windows 10 references in the gen_win10shell plug-in to now also reference Windows 11 since the main SMTC feature relates to it (the preview so far seems to make the SMTC integration actually useful instead of just being related to the volume change flyout that appears with Windows 10)
Changed the skinned menus to not be enabled when running under WINE as it really doesn't like them (will need to be figured out later on)
Changed how some of the crash report handling is done in an attempt to resolve some of the odder crashes
Changed the SID Player plug-in to support the HVSC songlengths.md5 format as well as the older songlengths.txt (for those still using it)
Changed how going into double (or the new triple) size mode works for classic skins to better ensure that the skinned windows will not be placed outside of the available screen(s) - this may cause some layouts to get messed up but it's the better choice compared to not being able to find the windows as some have been complaining about for years)
Changed how the sizing of the classic skin playlist editor is handled to no longer use a Winamp core compatible mode which made things like window docking less ideal with the addition of the 3x mode scaling
Changed how the WACUP provided non-library plug-ins deal with skinning to leverage the new shared skinning core so that disabling the media library core will not force them to be unskinned (unlike the ~18 years it's been with Winamp & it's media library / skinning implementation)
Changed the installer to ensure I can't generate a build where the reported version number & the compiled version don't match (e.g. it being 1.1.1.8256 but appearing as 1.1.0.8256)
Changed how the Waveform Seeker plug-in works to make it more thread-safe which should help with some processing oddities along with a processing conflict that can cause it to fail
Changed the option on the Taskbar Text preferences tab to be disabled if the override option is enabled for using the playback state to control how the taskbar text reacts (this avoids some confusion about the top option seemingly not working when the override has been enabled)
Changed the classic skin main window windowshaded visualisation handling to make better use of the space available when running in a non-scaled skin mode (may need some more tweaking though 38x5 isn't much to work with to start with)
Changed how the replacement local library plug-in (will just refer to it as ml_ll from now on) deals with its initial view loading to minimise the overall impact it has on WACUP's load time (this means it typically won't block things whilst loading the database which can be noticeable depending on its size)
Changed the ml_ll upper view panes (if applicable) to show a scanning state instead of nothing when things are being processed (this makes things a bit more consistent between the upper & lower panes during searching / initial loading of the view)
Changed ml_ll to not temporarily remove the sub-view nodes when the local library database was cleared as the feedback this was more confusing & didn't work reliably vs having the add new media / db load error dialog when accessing any of the local library views
Changed the lyrics & albumart plug-ins to minimise how much they save into the settings file so only config values changed from default will be saved (need to apply this to everything where possible so it'll be an on-going change as time allows)
Changed the lyrics & albumart plug-ins to better handle there not being anything in the main playlist from updating when the playlist is cleared & nothing is currently playing to not showing the 'no lyrics' message & the albumart plug-in making the missing artwork image less jarring so it's slightly faded into the window background (this should just make things a bit cleaner & nicer if there's no active playlist)
Changed the installer to have it avoid extracting some aspects that aren't going to be used if updating an existing install in a known good condition
Changed the AVS visualisation plug-ins to be part of the WACUP installer instead of a via a helper installer (isn't worth the hassle with repeated false positives on the helper dll that aren't being cleared vs a 0.26MB overhead on the installer)
Changed some of the add bookmark handling (playlist editor menu / keyboard shortcut / base api) to minimise the chances of adding an existing file / url that has already been added as a bookmark (aka one for benno)
Changed how the history plug-in works to try & avoid a timing quirk when cross-fading is enabled & things take longer than expected to update internally causing the title & duration of the prior playing item being used for the newly played item (still not 100% this change will resolve the issue occassionally being seen but it might make duneflower happier with me)
Changed the default playlist type to save to be m3u8 instead of m3u which may annoy some but it's better for ensuring what is output will be 'good' for many more users
Changed how the various plug-ins are loaded to avoid anything that's not got a plain 'dll' extension (e.g. dll-off) being incorrectly matched & loaded as a plug-in (a bit of how the OS file search works vs me not doing more to avoid loading invalid matches aka duneflower broke things in a weird way when trying to determine a different issue)
Changed how the installer deals with closing an existing WACUP install vs the process taking too long to close whilst causing other checks to believe there is no longer a running process (this manifests as a file being reported as not able to be updated with a user facing prompt but work when using the retry action - if it does still happen then I'd need to know what the file(s) unable to updated so I can adjust things)
Changed how the WACUP provided library plug-ins trigger undo actions on the main playlist to be registered which should resolve some of the weirdness seen (e.g. needing to do a double undo action to get back or it not always catching the changes in an expected manner)
Changed the installer to do a check incase it may have crashed previously & attempt to remove any of the locally cached file (this is based on 2 weird setup failures that have been experienced related to other aspects of the WACUP install process crashing in earlier beta builds)
Changed how the installer & the crash reporter deal with an update being seen whilst having just had a crash & the option to restart WACUP after a crash (not the default behaviour) work to try to better ensure that there are no processes keeping things locked (it still might be possible but this is a non-default scenario
Changed the crash reporter to now attempt to recover & send the collected information (if that succeeded) if the crash reporter could not complete or ironically it crashed (this also should do a better job at ensuring any temp file created during the crash report phase are now cleared once a succesful launch of WACUP has been achieved)
Changed the skin selection description for the Big Bento Modern (BBM) skin to make it more obvious that the skin is general 2x the default size of other comparable skins based on feedback via Twitter
Changed a few things with the crash reporter's collection stage to try & resolve some of the odd hang failures that have been noted (still not 100% sure about this but self-handling crashes is messy)
Changed how the send-to menus on the classic skin main window song ticker & also the one in the playlist editor right-click menu works to now work irrespective of the media library core being enabled (if nothing is using it then the menu will be disabled) as well as hopefully resolving a weird positioning issue when the menu is set to be skinned (seems to be relate to how the send-to sub-menu was generated)
Changed how single / double-clicks work with the agent icon handling to minimise it being able to trigger multiple instances if those that have been started are taking to long to respond (e.g. due to a hard drive waiting to spin-up) which is then making the existing instance checks timeout & so cause multiple instances to appear
Changed how the self restarting action works to do it a bit earlier on in the closing process to see if it'll resolve some of the reported failures along with adding in means to hopefully detect if it was attempted but the self restart didn't run
Changed the crash reporter to also attempt to collect the winamp.original.pid.dmp file that relates to the crashed WACUP instance (there's no guarantee the OS will have also generated this file but it might be there so it's better to try & get as much information as possible when it comes to crashes to be in a better position to try to resolve the crash issue)
Changed how the bookmark submenus are handled with their dynamic creation to resolve a Windows 11 beta visual issue when skinned menus are enabled (one of the bookmark sub-menus appears with rounded edges instead of the expected square corners for the WACUP skinned menus)
Changed how the Win7Shell plug-in works with regards to it's checking for the need to render it's preview in reponse to changes with the Windows 11 beta preview (this is a temporary change to prevent the preview constantly running once it's been triggered until things are much closer to a non-beta Windows 11 release when it should be more feasible to improve the checks that are otherwise having to be done)
Changed how the WACUP provided library plug-ins deal with maintaining view selections to prevent them processing their view items when there isn't a known selection already present (this has the benefit of reducing some of the pressure that can be placed on keeping a view updated including triggering some of the odder crashes seen due to slowness to process 100,000s of view items before the OS thinks its hung)
Changed how generic window titlebars under a classic skin are drawn for skins which haven't been updated to support numbers & some extended characters to instead condense the text drawn instead of leaping potentially large empty blocks (e.g. when skinned prefs is enabled & looking at the preferences window titlebar which normally tries to show the current WACUP build number)
Changed the skinned scrollbar handling to reduce some of the overhead needed to get to the actual drawing which may help resolve some of the weirder crashes due to them
Changed a callback method that the WACUP media library plug-ins were using for getting skinned listview column size changes to now be done via the new shared skinning support (this has the bonus of removing a window subclass done on the listviews which is a good thing as less subclassing means less overall overhead)
Changed the library history plug-in & anything else WACUP provided using it's database to now use a differently formatted history database which resolves some issues the Winamp layout was having (this will migrate the old format over to the new one automatically so there shouldn't be any loss of valid history)
Changed the library history plug-in view initialisation to make it less likely to block WACUP on initial loading
Changed how the podcast downloads view deals with loading to provide some feedback something is happening instead of showing a blank list (this is more of an issue for larger stored lists of downloads)
Changed how the WACUP provided library plug-ins deal with tracking the currently playing item to reduce the memory overhead from duplicating some of the handling
Changed how the ml_ll local library handles playcount updates to minimise loss of that information if WACUP happens to crash (it'll now trigger a save after 3 events which should average a save every 10mins based on average song lengths)
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 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 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 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 how the generic skinned windows deal with child windows to try to reduce some of the messaging overhead that was happening prior (e.g. sending more window changing messages than needed) which shouldn't cause issues for more plug-ins out there but it did mess up the re-worked thinger plug-in so an updated build of that will be needed
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
Changed how the MP4 input plug-in deals with metadata requests for urls to try to avoid a multiple access related crash
Changed how the update check is done on initial loading so for normal checks it'll no longer block loading though any triggered due to a crash will maintain blocking until the check has been completed & user action has been taken as needed (especially when there's a newer build to use & it has a fix for the cause of the crashes being experienced!)
Changed the main visualisation handling to now run at 60fps by default (as that's what most screens have used for many years) & for it to run at that update rate when using a modern skin (since this drives the api that the modern skin engine plug-in queries)
Changed how the modern skin engine plug-in & some related dlls for it to operate are handled on loading to override a number of the runtime methods related to memory & string handling as part of trying to resolve some crashes by the plug-in due to incomplete initialisation & parameter validation of some key string methods (the aim is for this to improve modern skin stablity by working around it's problems)
Changed the library history plug-in to do a better job of live updating the view results as applicable instead of triggering a full refresh which should be faster & minimise resource pressure especially when updating a large history database (this should hopefully resolve some of the last remaining issues related to using the view & keeping it open to monitor what's going on over time)
Chnaged how long the DirectSound output plug-in might hang around for on closing to account for the overall output buffer size including fade out on closing so it won't wait up to 20 seconds for it to close on some setups (one of my Windows 7 VMs will always take the maxiumum amount of time before it completes it's clean-up of the DirectSound device being used which makes no sense when it's fine on everything else)
Changed the initial drawing of the main playlist editor window to wait a bit longer which helps to avoid the default classic skin colours from showing when loading with the Bento/Big Bento skins (there's still some delay in the colour seen when switching from a classic skin to a modern skin that needs to be figured out)
Changed how ReplayGain is handled especially for MP3 files to better ensure that if a file has the appropriate ReplayGain metadata present it'll be applied (if ReplayGain is enabled) instead of relying upon the input plug-ins to do it (they still can handle this themselves though for now when in non-legacy mode the WACUP core will do the processing for files being processed via in_mp3 re: feedback that it doesn't work right so am using this as a means to help test out what might be going wrong)
Changed the in_mod input plug-in to report -1 for the bitrate on starting playback instead of reporting the current channel count (why?) & to report some more information for 'formatinformation'
Changed the shared metadata handling to do a better job in skipping trying to process requests for metadata requests that are always going to fail before triggering relatively time consuming calls
Changed the handling of the Nullsoft Midi plug-in so it's provided bitrate to the core is corrected since it appears to be providing it as bps instead of kbps as all other input plug-ins are doing (e.g. it'd show as 160000 instead of 160 for modern skins which doesn't often fit nicely)
Changed some of the input plug-ins to do a better job in only calling the 'SetInfo' if there's a change in the information instead of just spamming this & the impact it can have (related to the TTA plug-in change below)
Changed the handling of separator playlist entries so it is possible for them to generate blank titled entries (e.g. when using the newly added separator://! option) without the entry being used for the title as it's fallback (this makes sense for most other things but this doesn't work well with playlist separators where it might be wented e.g. turning of showing playlist numbers & using it to block out albums)
Changed how the CD playback plug-in initialises itself to minimise the delays on loading that it can cause (this still isn't ideal but it's better than a normal 2 second wait) & it should have negligible impact on loading times if there are no compatible drives present
Changed the installer to no longer set the CD playback plug-in to be disabled even if selected to be installed since the plug-in is no longer causing the loading delays that earlier revisions of it had
Changed the update action on the 'About | Updates' preference page to avoid it triggering the unresponsive handling when getting the new build update due to slow connection to the update server
Changed how the settings cache works on closing to avoid it causing up to a 1 second delay on the overall process close time
Changed how the podcast download manager works to avoid it hanging on closing as well as improving it's theoretical top speed as long as your internet connection is able to support it
Changed how the MP3 (in_mp3.dll) & DirectShow (in_dshow.dll) input plug-ins from 5.666 are handled to avoid a delay loading related failure for their dependency on the nsutil.dll (seen this with a few crash reports so am now pre-loading the dll if these plug-ins are loaded to avoid this problem)
Changed the WACUP provided media library plug-ins to use a faster way of getting the current selection from listviews which for some views with 10,000s of items can resolve unresponsive related hangs
Changed some of the WACUP provided media library plug-ins to use a background thread for handling sorting changes when clicking on the view columns instead of doing it synchronously as there's been some crash reports where this is taking too long & makes the OS think that it's hung
Changed the installer to make a better attempt at determining if there's an existing portable install preset to try to default to want to update that if there's no traditional install detected
Changed how the 'type' & 'length' metadata values are obtained so that the local library values will be used if they're plausible instead of hitting the input plug-in responsible for the file (this may also help with some reports of things not working correctly e.g. the waveform seeker preview) when the length cannot be obtained due to something else having exclusive access to the file which blocks metadata reading
Changed how the volume, balance/panning, position seeker & equaliser bars work under classic skins when using double/triple-size modes to offer finer resolution of the change being attempted in relation to the larger size of the controls versus the internal mapping of the values used to represent them
Changed the scrolling into view behaviour when using the enter/return key to start playback on a partially seen item of the main playlist editor so it'll just scroll the playlist enough for it to appear instead of centering it in the window (this better aligns the behaviour with the double-click fix further below)
Changed how some of the internal memory handling works to better ensure that what was allocated is cleared out when it's finished being used (this may cause some more crashes in the short term but should be worth it though hopefully it won't cause more crashes)
Changed how the calculated ReplayGain values are attempted to be saved into the files to try & avoid running on the main ui thread to avoid some of the file updates inadvertently triggering the hung handler
Changed how the main playlist is restored between sessions to better ensure that the stored title will be used instead of it incorrectly trying to re-read or generate the title (should make it a bit faster)
Changed the manually forced refreshing of titles in the main playlist editor to now allow unc/samba based paths to be processed (this relates to a change from some time back to avoid hitting them unnecessarily & having hangs / crashes due to slow processing &/or blocking waiting on the path to resolve when it's not going to due to the device it relates to not being available at the time)
Changed how the delayed unloading of the internet radio view is done to avoid it causing ui hangs & potentially triggering the unresponsive handler
Changed some of the artwork & metadata handling to better ensure that the portable plug-ins as currently re-used from 5.666 can keep working without hopefully crashing as they have a tendency to do
Changed some of the plug-ins (artwork, lyrics, history) & parts of the core metadata & artwork handling to de a better job of dealing with relative file paths - there's a load more that needs to be done to better ensure that anything officially provided with WACUP will be able to work with relative file paths especially for media so it's easier to move a WACUP install around (especially with portable installs) so it'll have more chance of "just working" which the use of absolute filepaths can often cause problems)
Changed to now use yt-dlp instead of the seemingly abandoned youtube-dl which other than being supported gets starting youtube playback back down to a reasonable time after they began throttling connections (this is ironically re-doing a change done over a year ago where we briefly moved to using yt-dlc which is the basis for what has become yt-dlp)
Changed how the installer checks if there is meant to be an available internet connection to use as the prior way could fail (e.g. on Windows 10 for ARM when running on a Raspberry Pi 400) even if there was a valid connection (I can see the ethernet cable & a browser was able to access things without issue!)
Changed how the classic spectrum analyzer visualisation plug-in handles it's window updates to try to avoid what is the likely cause of it triggering a crash with some setups (mostly when using a modern skin)
Changed the handling of the playlist separators so if the default has been set to be a blank separator (e.g. using separator://! ) then when inserting singularly or as a batch action it won't use the inserted item's file path like is done with normal separators so that the blank ones will work correctly as expected
Changed how the installer is built to improve the automation used to better ensure that any updated supporting files will use the correct hashes for them to hopefully avoid any pebkac issues with updating
Changed the Milkdrop plug-in to reduce it's base memory usage by ~247KB by changing how some of the default parts for the pixel shaders are read & stored along with doing more to strip comments prior to compilation
Changed some of the file exists handling to reduce the chances of it causing the ui to lock-up when interacting with items that are on an offline mapped network drive share (this is never going to be a 100% fix & there's more that will need to be done but this is a start to at least alleviate loading & some of the more obvious playback related hangs)
Changed how visualisation plug-ins are handled if set to be loaded as WACUP is starting to prevent them blocking loading as much as they are doing at the expense of them appearing slower to load (this may also help with some quirks related to the modern skin engine & how it handles windows created on a different thread from the main ui thread as is the case with visualisation plug-ins)
Changed various aspects of the installer to allow the NSIS script to be used to make the existing version whilst being able to be used to make the 64-bit installer as well as removing the need for a plug-in
Changed the installer to simplify the post-setup updates that might be done so it's now all done in a single action instead of multiple spawned child processes which some of the A/V / test solutions didn't like
Changed the installer to rely less on some of the NSIS plug-ins that can sometimes be flagged as false-positives when used which is a hassle to deal with at times along with resolving some performance issues
Changed the project build settings for debug file generation which is meant to help improve my ability to debug things (the fun of default settings changing between compilers & me missing it until now)
Changed the gen_win10shell plug-in to now use a non-C# based solution which simplifies the WACUP loading process, halves the size of the plug-in & should make things a bit simpler for me with crash reports
Changed the XSPF & WPL playlist handling to no longer rely upon the libexpat based xml.w5s & instead it now uses the pugixml based handling which makes it simpler & helps to remove a need for xml.w5s in 64-bit builds
Changed how libcurl based connections are initialised to better handle the cacert.pem file being missing so it'll attempt to use an OS provided fallback to try & ensure HTTPS connections will still work
Changed how the active output plug-in is handled to better ensure that it's going to find a valid plug-in to use before it eventually reverts to the built-in null output plug-in (this change should also better handle the main settings file getting wiped vs what's actually been installed instead of assuming a default plug-in will be present because often users do things you don't expect!)
Changed how the Streaming Url (in_url.dll) plug-in handles getting yt-dlp if it's not already present so it goes back to only getting it if needed instead of getting it all of the time (this should help avoid some concurrency issues with the WACUP core & the plug-in both potentially trying to update / download this at the same time)
Changed the flac file handling to attempt to better ensure shared access to a file is possible (this may be the cause of a reported playback failure when waveform seeker is also enabled which might be conflicting with normal playback)
Changed the input plug-ins which don't have actual config dialogs to not report they do/redirect to the about dialog so it's clearer where there's configuration options available (this will not help with 3rd party plug-ins where the Winamp assumption is there is a config method provided no matter)
Changed the SID plug-in to use an embedded preference page (i.e. it appears as a child node under Plug-ins -> Input) & for it to only save out actually changed configuration values from their defaults
Changed the autoplay vs command-line /play handling so it shouldn't cause a double play event to be triggered
Changed how some of the plug-ins initialise their internal data structures to help reduce the time to initially load the dll along with only allocating / running some initialisation code when it's needed
Changed some of the overall loading process to attempt to minimise the potential of some slow / long running actions happening immediately on start-up which should make WACUP load faster (e.g. an older install with a larger database should be less likely to feel like it's lagging on loading compared to a clean install / small database setup)
Changed IPC_CB_MISC_AA_OPT_CHANGED to not be sent on initial loading of the metadata / albumart component which should prevent the plug-ins monitoring it from doing artwork refreshes unnecessarily on load
Changed the waveform seeker to use a cache to reduce some of the drawing overhead & adjusted the drawing refresh rate to minimise the impact of the plug-in on load time
Changed the lyrics & albumart windows to better ensure they're showing the missing artwork (subject to the configuration to show it or not) on initial loading to avoid the jarring pop-in that can occur (this makes loading a little bit slower but visually is a nicer experience)
Changed the WACUP provided media library plug-ins to use the newly added ML_MSG_TREE_ONDESTROYVIEW notification
Changed the ATF implementation to reduce the number of calls needed to get to it as well as making it better suited to being called from multiple threads at the same time (this set of changes should help resolve an odd crash that's been seen related to the background Discord now playing update thread)
Changed the in_mod plug-in to not sniff for Windows messages & instead handle seeking / detecting the need to stop playback in a non-Windows centric manner (this was based on it showing as a possible issue in a crash report)
Changed the WACUP provided input plug-ins to use a helper method to consolidate the end of file handling in playback threads
Changed some of the internal handling when needing to retrieve metadata from the currently playing item if it's not already in the local library database whilst an attempt is then made to add it or another file of the same type into the database which could potentially misbehave due to the multi-threaded nature of what's going on
Changed the CD audio metadata look-up to reduce how many calls are involved to internally get it by avoiding a loop through the shared metadata service which will just come straight back to the plug-in (this is related to a crash seen where it was attempting to process metadata in a manner that doesn't really make sense for how that plug-in works as its 'virtual' metadata as such)
Changed closing of the Milkdrop window to not force set the main window as this happens anyway & was the cause of a hang on closing
Changed Milkdrop to use an asynchronous message instead of one that can block the main UI thread when going into/out of fullscreen
Changed where the running time of the process is reported in the crash report to make it easier to diagnose long vs short run issues
Changed the open/explorer folder handling to try to just open the folder that the file(s) are within if the OS api to do the same but also select the items within the explorer view fails (e.g. when running WACUP under WINE due to SHOpenFolderAndSelectItems(..) not currently being implemented)
Changed the soundcloud stream handling to try to form an 'artist - title' title string from the information returned (why it's not pre-formatted like other services I don't know)
Changed the shared metadata handling to attempt to use taglib for SPC files incase they've been tagged with APEv2 tags before reverting back to the normal ID666 metadata tags (this allows for access to ReplayGain values as some other players are applying to these files)
Changed some of the string & filepath conversion methods to use a consolidated implementation where possible to reduce code re-use which makes some of the plug-in dlls smaller & removes some OS dependencies
Changed how the Streaming Url plug-in works so it minimises doing anything on initial playback & validation of the streams to be played to avoid it blocking the main UI thread which can trigger the crash reporter due to it seeming like things have hung when they've not (e.g. due to a slow internet connection &/or yt-dlp taking a long time to complete processing of the url it's been given to parse)
Changed the final stage of setup to attempt to clean-up the existing crash reports folder instead of potentially allowing it to grow out of control as has been the issue for some setups where stability has been an issue
Changed the format information for module files to make it more obvious what the subsong is instead of just reporting that there were subsongs present
Changed the volume changing status message in the classic skin songticker to now report the effective volume level when taking into account the process volume level as reported by the OS volume mixer
Changed the handling of non-unicode dialogs (as used by many old 3rd party plug-ins) to hopefully resolve the issue of some showing garbled characters instead of the expected titlebar text (this is a weird compatibility issue with WACUP being a native unicode program & other things going on that cause the older ANSI style methods to misbehave causing the titlebar issue)
Changed how the hooking of OS apis used by the plug-ins is done to reduce a large amount of the duplicate processing that goes on when trying to find & then hook the function exports (it also makes things a bit cleaner to follow in my code :) )
Changed a load of internal & inter-dll dependencies to consolidate some of the handling, etc (this is mostly to make things for me potentially easier to deal with going forward without some of the Windows centric aspects)
Changed how the Streaming Source plug-in handles title updates to try & better ensure its metadata retrieval won't block the main UI thread (i.e. causing WACUP to hang / crash) as well as insertion into the stream is better aligned to song changes
Changed how the playback history & local library playcount is managed to do it's best to avoid saving out the changes to the database file from the main ui thread or during the immediate playback event to avoid issues with it blocking the ui for longer than would be liked which can then trigger the OS unresponsive handling when it's not really crashed (aka making it more asynchronous in nature whilst hopefully not causing new issues)
Changed how the nde database files are handled when saving them to reduce the time taken to save them (e.g. going from 290ms to 180ms for a local library database with 100K items on my dev machine, YMMV) which with the changes to avoid issues with multi-threaded saves of these files should better minimise issues especially if it's triggered against the main UI thread (where long slow running actions is bad)
Changed the current shuffle table & position within it to be saved out if periodic configuration saving is enabled which should better help avoid unexpected reversions in playback if there's a crash / unexpected power failure & this hadn't been saved (it will still by default only save the shuffle table & it's position on normal closing but this may help e.g. for streaming / unstable machine setups)
Changed the safe mode handling (only for x86 builds) so it will force WACUP to run in non-legacy mode (i.e. not using the original Winamp core process to get WACUP loaded & also without the ability to use modern skins for now)
Changed the installer to clean-up the settings folder of incomplete database file updates (due to crashes) which for some setups may have grown to an excessive level & may be introducing other issues
Changed the main playlist handling so it will now save out an updated copy if a batch of title updates completes to avoid some issues seen if there's a crash before it's fully saved vs some library a loading related issues seen
Changed the handling of adding a playlist via internal methods to try & pick a random playlist item to start with if shuffle is enabled instead of defaulting to the first item (this is a safety behaviour that it will still fallback to so that it will be able to start playback as long as there's something in the playlist) which may better match with user expectations of playback behaviour if shuffle is enabled
Changed the soxr library to use a shared copy of pffft from the WACUP core just to make things easier to manage & reduce some otherwise unwanted code duplication with recent changes for the classic skin visualisation handling
Changed the Streaming Source DSP to try not to do anything intentionally against the main ui thread which should avoid it causing ui blocks on slow actions (e.g. some title updates)
Changed the handling of the IPC_GETRATING/IPC_SETRATING with the Win7Shell & global hotkey plug-ins to avoid them blocking the main ui which can be an issue if trying to set the rating on media that takes a relatively long time to complete (this is to help avoid it causing crashes)
Changed the end of file handling if there's a critical core handling issue to better try to avoid things getting stuck in an unresponsive state
Changed the OS timer handling to use the preferred disabled exception handling behaviour which is at odds with the default OS behaviour of trying to help out (go figure MSDN documentation & all of that)
Changed how the playlist / song change works so that if there's a selection in the playlist it will no longer force the new item to be played to be force scrolled back into view which was done to mimick Winamp's behaviour of forced scrolling into view but that can be really annoying having it do that
Changed the history plug-in to now use a background queue to avoid it's attempt to record the playback event (start or stopping) from blocking the main ui thread if the history db saving is in progress (this better matches the handling used with the replacement local library plug-in to help it avoid any slow / long running actions from getting in the way & blocking processing on the main ui thread)
Changed how colour theme changes from the modern skin are propogated by effectively blocking the notification it tries to send out & triggering the behaviour it does later on as part of trying to workaround stability / crashes seen with repeated colour theme changing (this is not ideal but it's the only obvious way I can try to minimise some of it's internal issues whilst avoiding WACUP crashing)
Changed how classic skin loading is done to now attempt to support older style skins created for the likes of XMMS where the Windows LoadImage(..) method doesn't like the extended bitmap format used (this is not a 100% solution as colour profiles & a few other things are not being handled but it should suffice based on what's been provided for testing so far)
Changed some of the NDE failure handling & command-line diagnostic reporting to hopefully prevent massively corrupted db files from looping on processing
Changed how the embedded windows are handled to better ensure the linked list is less likely to be something invalid being accessed based on some modern skin enginge related crashes seen
Changed how some of the internal metadata queries are handled to better avoid the input plug-ins being queried for values that are not going to be responded to as part of helping avoid dual file access for the currently playing item vs things that some of the modern skins might be trying to request which can in some causes cause a hang/crash
Changed the in_mp4 input plug-in to try & make better use of the information from the currently playing file if that's also being queried for metadata instead of trying to keep things separate (based on a recent crash report where the action of trying to re-open the currently file & it not going well)
Changed the handling of some of the older supporting dlls from the Winamp 5.666 installer that are still needed in an effort to work around some memory handling issues & also to lessen what is installed to only those absolutely needed against the plug-ins that have been installed
Changed the ML_MSG_PLAYING_FILE api so the param2 now provides a media library core managed copy of the currently playing filepath string so the media library plug-ins don't also have to make a duplicate copy (unless how they work means it makes more sense) for a small saving on memory usage & keeping the plug-ins somewhat cleaner in their implementation as well as it being sent before IPC_PLAYING_FILEW so the library plug-ins (mostly for the local library plug-in) can get a head start which is often useful for the other plug-ins when it comes to metadata related actions
Changed the Songticker Text ATF option to allow for the playback_time* ATF values to trigger timed updates so it's possible to have the current playing position as part of the string being shown (based on a request via Discord) though if this is active it can cause increased CPU & lag in the updating of modern style skins due to how the songticker update trigger has to be done (not a clean solution as I'd like) with the ATF string to achieve this is %playlist_position%. [%artist% - ]$if2(%title%,$filepart(%filename%)) '('$if2([%playback_time% / ]%length%,%length%)')'
Changed how the Streaming Url plug-in handles updating it's cache to delay it until a while after playback has started to help avoid too much contention & potentially causing a deadlock on song change / start
Changed some more of the NDE handling to better ensure that it's not going to fail when there's unrelated machine stability issues during it's multi-threaded saving of a database & it's index file to storage
Changed how the settings cache is implemented to split out the external file modification watching to now be done as a shared internal service instead of specific to just this (e.g. for ml_ll watch folders)
Changed the handling of the patched call that relates to the modern skin engine's getSongInfoText(..) script call so it'll offer up some of the information about what's playing instead of requiring everything to be present (e.g. for MOD files where the bitrate is not known) so the skins can at least still show the appropriate channel & sample rate values which was not happening previously
Changed the send-to menu handling with all of the native WACUP plug-ins so they no longer rely on the SendMessage(..) based api that Winamp required the plug-ins to use (that api still exists for compatibility purposes but this makes things cleaner in less duplicate code & also minimises hitting things on the main ui thread which can be slow for some actions & incorrectly trigger the crash reporter)
Changed the ReplayGain processing plug-in to now prompt if there are files being processed when WACUP is attempted to be closed so it doesn't immediately close & lose any processing results not yet saved
Changed the restart WACUP handling to no longer attempt to do it if the reason for it closing is due to an in-progress system shutdown
Changed how the closing for WACUP is handled to better consolidate everything into a common handler instead of having to do things to keep the Winamp core happy as the code had evolved to do which makes it simpler for me to maintain going forward & should resolve some inconsistencies seen between normal closing & a quick close as the OS shutting down triggers which wasn't always being handled correctly
Changed some of the WACUP library plug-in initialisation to remove some duplicate processing that technically reduces load times but is probably not going to be noticeable outside of the profiling support
Changed how the WACUP provided media library plug-ins handle LVN_GETDISPINFO messages from their virtual listviews to now try to avoid processing requests for column information that cannot be seen (this is something that Windows seems to do where all of the columns are queried even if they're not within the visible area which especially for the local library results if many columns are set to be shown can make the scrolling & some interactions with them slow which this change helps reduce at the expense of doing some more processing to figure things out)
Changed the settings cachce to avoid milkdrop presets being loaded into it which could cause problems with long running instances & a never ending set of presets being added into the cache along with some loading & closing related issues due to lock contention
Changed the loading & closing profiling handling to reduce it's impact when enabled & to output some additional information for closing as well as trying to align the information so it's easier to read
Changed the vgmstream input plug-in to avoid doing additional processing in it's isourfile(..) method unless the plug-in configuration requires it (i.e. for the non-standard / additional file extensions)
Changed a bunch of the input plug-ins to drop their isourfile(..) when it's just a return 0 anyway which makes things a bit simpler so only those needing it (or are older 3rd party plug-ins) provide it
Changed the WACUP native w5s to use a modified implementation which better aligns with the x64 implementation whilst not breaking backwards compatibility with any 5.x compatible component files still used (this is a small optimisation for the loading & closing of them & makes the code more consistent between the different build types)
Changed the SNESamp wrapper handling of the SNESamp plug-in so it'll now be a bit quicker during process closing by avoiding the need for the snesapu.dll from being unloaded (it'll happen anyway once the process fully terminates so it can be safely leaked without the explicit handling to do it)
Changed the waveform wrapper handling of the old wave plug-in so it'll now be a bit quicker during process closing by avoiding the need for the read_file.dll from being unloaded (it'll happen anyway once the process fully terminates so it can be safely leaked without the explicit handling to do it)
Changed how the notification area icon is removed to lessen the delay doing it causes to the overall closing of the WACUP process (aka more threads)
Changed the ordering of the initial files needed from within the installer to help reduce the time to get it to initially run however this doesn't really help if any A/V solutions are doing live scanning which is what led me to look into why I was seeing a long delay the first time the installer was run after being built but was ok on repeated runs with the same installer file (I know it's needed but A/V just causes too many issues at times)
Changed how the Streaming Source plug-in responds to being unloaded to make it much quicker instead of waiting for a fixed time before being able to react
Changed the playlist core to now be built into the WACUP core dll instead of being done as a w5s component which is a legacy from how WACUP was started & having this part of the core just makes things simpler to manage & ensure it's going to be there plus there's an ~59KB saving from merging things (the standalone dll size was 91KB so that's the fun that monolithic can sometimes bring!)
Changed the podcast downloads cache loading to minimise the impact of trying to obtain the length for downloads that were incompletely stored in the cache file
Changed how the core determines if there are video capable input plug-ins being used to reduce the impact on loading by having to query them via the metadata api with it now using either a reported flag for WACUP specific plug-ins or by looking for known input plug-ins with the older behaviour used where needed
Changed the DS Sound Format (in_2sf.dll) & Game Boy Advance Sound Format (in_gsf.dll) input plug-ins to minimise their initial loading impact which between them were approaching trying to allocate around 100MB of statically initialised buffers causing much longer dll loading times than was expected (this reduces the overall time for my dev install to load all of the input plug-ins by ~20% before the change)
Changed the Alt+3 File Info dialog handling to better reflect when it's viewing an item that does not have known write support & those changes either cannot be made at all (effectively treating it as read-only) or will only go to the local library database assuming it's even a valid file to start with) as it was otherwise less obvious for some formats where it's expected there is metadata write support but due to the file / format / supporting library it doesn't yet exist
Changed the first load handling of the podcast view to better ensure the help message appears (the web control sometimes wouldn't or would incorrectly get cleared out) along with how the add / delete handling works to make it more reliable in ensuring the podcast view will update in an expected manner
Changed the styling of the podcast information pane area links so they better match with the current skin colours instead of using the often jarring default OS colours
Changed around some of the NDE file handling on saving to better prevent against the idx & dat files getting mis-matched when an asynchronous save is being processed
Changed the autoplay preferences page to just be a single one instead of a dual tab page (will likely move some options of it later on as it's not the best of layouts)
Changed how file extensions are matched for initial playback to better deal with some of the weirder formats that can exist where pseudo metadata is part of the path
Changed the installer handling to simplify getting the files needed from the 5.666 installer vs other things done previously related to the local cache used to reduce the need to redownload, etc on updates
Changed when the DSP plug-ins are unloaded on closing to avoid some compatibility issues with some plug-ins that can cause a hang on closing due to still processing things from prior playback calls to them
Changed how metadata for files not known by the local media library (or if it's not been installed &/or enabled) is queried to reduce some duplicate processing going on which could cause ui hangs for some
Changed the audio cd handling to minimise the time spent on checking for disc information on device arrival messages to avoid some instances appearing to hang & trigger the OS hung instance handling
Changed how the Not So Direct plug-in works if configured to keep playing on closing to try to avoid some of the odd hangs on closing that have been cropping up within the recent crash reports seen
Changed how the Win7Shell plug-in deals with WACUP being minimised & set to show the skinned window to better ensure the OS will not ignore showing the taskbar controls as well as rendering the process icon instead of blank / old state (when minimised the main window irrespective of skin being used will not be internally rendered to reduce what's being used which isn't helpful for taskar previews so this is something)
Changed the Format Converter plug-in to not register itself as a fake library plug-in to get the send-to related messages
Changed the ReplayGain Analyser plug-in to be a general purpose plug-in instead of a Library plug-in so it can now be used irrespective of the media library core being enabled or not
Changed the library history plug-in to respond to metadata requests for item lengths if the call to the local library plug-in cannot find it within its database as a way to avoid accessing the file directly (for some situations this can help to avoid a long blocking action that the OS may interpret as a hang & trigger the crash handling)
Changed how invalid / corrupted MP3 files are handled to massively minimise their impact & causing in some cases during my testing up to a minute of the process hanging (could be worse for others but more often it'd just trigger the OS unresponsive crash handler)
Changed the modern skin getExtensionFamily(..) script method via a live patch so for now it'll return a null / empty string instead of what appears to incorrectly be the plug-in description associated with the passed in extension (isn't entirely clear what this is meant to return, just that in 2008 plague noted that it was returning an invalid string so for now this will just make it safer for those curious)
Changed the patching of the AVS plug-ins so their calls to get the current WACUP process text are done directly to avoid some instances where it can end up causing a potential process lock-up
Changed the wording of the refresh options on the library playlist root menus to better reflect they only update the cached information about the playlist & are not for refreshing the playlist titles within (maybe an equivalent refresh all titles option needs to be added)
Changed the library plug-ins that prompt if its ok for WACUP to close due to them doing something that needs confirmation to cancel it (e.g. replaygain processing) to set the default button to be 'No' just to avoid accidentally triggering the action
Changed the local library plug-in to prompt if an import is currently happening when attempting to close WACUP so it can either be left to continue or for it to be aborted instead of causing a closing crash
Changed some of the common library view handling to reduce some code duplication & better ensure there's a consistency in the sorted column & selection preservation related handling
Changed some more the initialisation & multi-threaded handling of the in_mp4 input plug-in to make it better behaved when playing youtube videos especially if there's not been any other video file played
Changed some more of the no metadata found handling when trying to generate internal titles to show which should resolve some of the remaining reports of seeing the raw filepath instead of the expected filename for such scenarios (assuming the default ATF formatting)
Changed the library playlist views so they can show a simplified form of the blank separator as it's expected instead of showing the raw playlist entry along with reducing repeated calls to get metadata for these playlist items when it's never going to return anything
Changed some of the file info / alt+3 dialog handling to reduce the time it takes to load the information due to some of the metadata being requested causing a number of complete re-reads of the file
Changed how metadata requests (e.g. for ATF title generation) deals with the file being known to the local library database whilst not having that value stored so it will now use it even if it's empty & avoid doing a fallback check that then attempts to re-read that empty metadata value from the file itself which should also help to reduce some of the hang crashes seen (mostly due to gen_ff script calls)
Changed some of the handling when it comes to reading replaygain values from files to minimise multiple reads being attempted which in some extreme situations could trigger a slow response & a hung crash
Changed how the library playlist import handling is done to reduce lots of messageboxes being spawned (mostly due to laziness & forgetfulness on my part by re-using something aimed at single file import for the batch import handling) when a playlist is already being managed with the library playlists (this should make it a lot cleaner especially if trying to import more than a few playlists at a time)
Changed the look-up handling for artwork so it now should directly load any supported image files passed to it before following the artwork loading preferences which avoids folder.* matches on passed jpeg, etc (this could explain a few odd reports of some actions showing the wrong artwork though most of those have stemmed from bad / incorrect metadata when doing the appropriate fallback searches for artwork)
Changed how the selection handling of the library playlist root view is done so it should finally work as intended to minimise duplicate selection changes whilst also improving the initial & multi-selection behaviour of the view
Changed the waveform seeker plug-in to try an alternate mode to get the length of the item trying to be rendered if the usual metadata request fails (e.g. due to file access locking) so that the calculation can still be attempted (this will likely have been seen as some incomplete / file refuses to be processed on first go situations that some have noted as being an occassional issue)
Changed the wording on the HTTP POST preference tab so it's more obvious where the url along with the parameters for it need to be entered
Changed the handling of some metadata attempting to be read from some module files where subsongs exist so their titles (if possible) are now used instead of the generic module title
Changed how the ingress threads used for different import / update / long running actions across the plug-ins work to better ensure that they'll be destroyed on closing to avoid some hangs seen as well as preventing them sitting around for a long time basically doing nothing & wasting resources (not a lot but there's no point in wasting them if they're not being used for anything at that time)
Changed how the WACUP plug-ins register their global hotkeys to avoid a conflict with how string duplication is handled which could cause a crash in some rare situations
Changed some of the internal updates related to the currently playing item to attempt to avoid it ending up using the loader exe as the file path & allowing some actions to be incorrectly triggered due to it
Changed the podcast plug-in to notify the local library plug-in when it's finished downloading so it can start saving out the changes made to the database with the additions
Changed the Streaming Url handling so it's no longer going to have to wait for it complete it's processing if stop is triggered to help avoid some issues with slow connections & not having the immediate reaction to stop being triggered (aka eris breaking things in weird ways yet again)
Changed the waveform seeker plug-in to ensure it'll skip processing some more formats that are known to be not currently supported as well as image files that can be present in the main playlist editor
Changed the album art plug-in to skip the metadata related checks if the playlist item being shown is an image file to reduce processing that is attempted
Changed a lot of the internal core handling related to trying to access the local library for metadata so that database loading failures will now be much better handled (a scenario that shouldn't occur but this change can massively reduce the lag that is experienced when trying to run WACUP in such a state due to every metadata request causing the database to attempt to be opened - this now massively reduces the number of opens attempted)
Changed how the Bento / Big Bento skins are dealt with during installation to make the process consistent with the other modern skins
Changed the Yule Log plug-in to ensure it's been configured correctly before responding to any actions (this should resolve an issue with some actions like sending tweets happening when it's been turned off due to the default value being used as the configuration values hadn't yet been loaded at the time of a play event)
Changed the handling of comments being saved into Vorbis Comment tags so that "DESCRIPTION" will be used over "COMMENT" to match the spec (reading from "COMMENT" will still occur if "DESCRIPTION" isn't found)
Changed how some of the re-used plug-ins are patched to minimise any related dependencies & to make non-legacy mode to use fewer resources
Changed the handling of batch play/enqueue/enqueue all from numerous aspects of the player to minimise the amount of processing done to lessen the chance of really big additions causing ui hangs / potential crashes (e.g. enqueue all of the local library into the main playlist editor going from 5 seconds to around 2 seconds for approx. 120K of library items) which should make things nicer with larger libraries / playlists
Changed some of the plug-in & related dll handling to make things more consistent with how loading is handled whilst using a bit less code to do it
Changed how the multiple instance handling is done to avoid the settings folder copy if chosen to be done happening on the main ui thread of the running instance which could easily trigger an unresponsive process crash along with a number of other small related changes to ensure things are much better behaved within the spawned process (not that running multiple WACUP instances is necessarily a good idea!)
Changed the handling of the timer service that the modern skin engine uses so it's now defaulting to use an ~60fps target (the 5.666 default was ~30fps) along with removing the preference option to "optimize" the timer resolution as it's not needed with this hard-coded default
Changed the handling of the main right-click menu when using a modern skin so it's handled in a more direct manner (effectively halving the call stack) which may help resolve an issue seen in the crash reports with the action blocking the main ui
Changed the installer to better ensure dependent dlls will be installed for any included plug-ins needing them or that they'll be removed if there's nothing left to use them
Changed how delay loaded dlls are handled to try to improve load success for some edge cases
Changed libflac.dll to now delay load libvorbis.dll since it mostly isn't needed to minimise FLAC playback failures in specific configurations (though the installer changes mostly negate the need for this)
Changed some aspects of how NotSoWavey works to hopefully reduce the chance of it causing a deadlock for some as well as some improvements to the digital audio handling to reduce it's processing overhead
Changed the wording used to indicate there are no lyrics found in the lyrics plug-in window
Changed how the dll delay loading search order is performed to prefer the root of the WACUP program folder instead of going for the plugins folder first to minimise the impact of multiple dlls with the same name which can cause some unexpected issues from the wrong one trying to be used (e.g. due to lacking the required dll exports needed by WACUP / the plug-in that's trying to load the supporting dll needed)
Changed how updating the taskbar text is set to minimise updating it if it's not changed from the prior update which minimises the number of WM_SETTEXT messages seen within the main window (small CPU saving)
Changed how some aspects of video playback are handled to be able to drop the re-use of a supporting file from 5.666 (saving around 358KB from the installed size)
Changed the handling of some of the classic skin / built-in windows so that attempts to force them to be visible when not done via the expected api / user interactions won't cause incomplete to appear (e.g. the equaliser window could still react to input causing the sliders & buttons to appear when really no drawing should have been possible though it doesn't explain why the window was forced to have been shown)
Changed the crash reporter to be able to better identify delay loading related crashes
Changed how autoplay / restoring of the playing position on loading is handled to reduce the impact of the local library database (if that plug-in is enabled) has on loading which could noticeably affect the time to get a file playing &/or causing ui hangs especially if a large database is trying to be loaded (tested against an ~250K entry database)
Changed how the history plug-in responds to closing if it's reacting to a stopping playback event it'll now trigger the save immediately to minimise it's overall impact as well as triggering a save if not playing & there are changes still waiting to be saved out
Changed how the main playlist handles background reads of titles to now try doing them on a background thread to reduce the instances of some crashes seen due to the metadata updates taking too long
Changed a few things with the main playlist loading to save a small amount of time when working with very large playlists
Changed how the legacy xml service component is handled so it will now be lazy loaded which is better for classic skin users (i.e. one less thing being loaded that's not going to be used) though it can be used by some of the other legacy plug-ins allowing it to be accessed when needed
Changed how the EOF (end of file) / playback starting failure handling to use a different way which shouldn't break anything & instead resolves the main ui becoming unresponsive whilst it's spinning through the next item(s) to be played (this is more of an issue when dealing with the main playlist set to repeat & none of the items present being valid e.g. offline storage or no longer valid stream urls)
Changed how playing a file type where multiple plug-ins claim to handle it (e.g. DSF or mis-labelled Opus files with the generic OGG extension) so that the core will now if the first attempt to play fails search for any other input plug-ins to increase the likelihood of the attempt to play working (though really you should just ensure that files are correctly named including what their file extension is)
Changed how WACUP's vgmstream build is done to have it link to zlib.dll instead of using the miniz implementation for an ~8KB file reduction (we ship with a zlib.dll so can rely on it being there)
Changed more of the remaining plug-ins using subclassing of the main window to no longer do it with the internal targetted callback system being used instead (aka less overhead & simplifies debugging)
Changed some of the settings cache internals to reduce the duplicate processing done with string checks
Changed the handling of M3U8/M3U/PLS playlist entries with file:// prefixes to avoid them being incorrectly treated as urls on initial load
Changed how the library plug-ins interacting with their db files work to avoid a possible deadlock due to a small window between lock calls
Changed the podcasts root node to give a clearer indication of how many feed(s) are remaining to check when a refresh all action is running
Changed the handling of the double-/triple-size menu options from the main right-click -> options submenu so they're no longer present when using a modern skin since even if they were disabled it was reported as being confusing that they weren't also updated to match the modern skin scaling settings (not something I've worked out how to query from the modern skin engine yet so it's easier to remove them)
Changed the handling of the direct hooking of IPC_GET_IVIDEOOUTPUT calls (e.g for in_dshow) to better deal with quirks seen between main ui vs off thread creation of the video renderer
Changed the handling of the the midi plug-in sysex editor dialog to resolve an issue with the plug-in showing gibberish for the dialog title
Changed how the library plug-ins work to get & interact with the library window button menu so it's simpler & automatically does some of the handling that is otherwise required to make the insertion work
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 the preference on the core implementation to be used so non-legacy (aka not needing the Winamp core even though most of the running core code isn't from it which is an option with this build) is now preferred with handling in place to prompt to switch to legacy mode if needing the equaliser &/or modern skins (the setup process will adjust this as needed based on the current skin & configuration options if applicable for new & existing installs)
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 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 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 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 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 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 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)
Changed the send-to menu handling to reduce the time needed to generate the items to be sent from the main playlist editor as well as reducing some of the plug-in actions (e.g. almost a second saved from an ~12k entry playlist if sent to be a new library playlist)
Changed how the autoplay handling works when trying to restore the playback position to reduce the processing overhead needed to do this
Changed how some of the C runtime overrides are done to attempt to resolve an issue seen with some setups when using modern style skins which could end up with a crash
Changed the crash reporter to attempt to give an indication if it was from an issue during process closing
Changed the video renderer initialisation to reduce the chance of a deadlock when doing quick play / stop / play / stop actions (not a full fix)
Changed the handling of the Info Tool & Backup Tool to use the new site urls for getting the tools (this means all prior builds won't get them)
Changed the HTTP POST buffer sizes in the Yule Log plug-in to better accomodate sending long strings due to large metadata values (e.g. comments)
Changed the MP4 file loading to better deal with files that do not correctly follow the specification but are with some more processing able to be handled (not the best of options as these files should never exist but such is how it goes)
Changed some of the metadata reading overrides when it comes to MP3 files so it's less likely to report no metadata if it happens to be a misnamed file (e.g. an MP4 based file)
Changed the classic skin seekbar handling to allow for finer seeking when using the double-/triple-size scaling modes (more pixels to map to smaller time slices in the file being played)
Changed a mass of aspects of the audio cd plug-in works to resolve as many of the random lock-ups & failures that were reported & found during additional testing (this plug-in has ended up being far more sensitive to other changes with how WACUP & it's replacement media library core work which introduced a number of issues that almost 4 days worth of changes & testing should finally get to the bottom of)
Changed how the audio cd plug-in is triggered on loading to register itself with the media library core to reduce the guessing done & better ensure that if one of it's views was last selected on closing then the media library core will be able to restore that view on loading
Changed the loading of the lyrics information on the Alt+3 / File Info dialog tab to now be done in a way that should be less likely to cause the UI to become unresponsive when loading very large lyrics which also reduces the overall loading time of the dialog even if there's no lyrics present :)
Changed the xml parser to reduce some of it's overhead which gives a small reduction in modern skin load times
Changed how the output plug-ins & the handling of xfade requests from the modern skin engine plug-in are handled to reduce the impact during initial process loading
Changed how monitor resolution / dpi related changes are handled when using a classic skin to better ensure that the windows will be kept docked &/or in their expected position (subject to how much the screen resolution has changed) though there's a load of dpi related changes that still need to be worked on with later builds (e.g. to better ensure the menus & native dialogs will be matched to the monitor)
Changed in_mp4 to use the OS H.264/AVC decoder which improves playback support (the re-used component from Winamp didn't support a lot of newer format features nor could it decode 1080P/4K content fast enough)
Changed the default position of the classic skin albumart, lyrics & waveform seeker windows when the media library core is not enabled to avoid oddly spaced out windows on first install
Changed the multiple visualisation support to now correctly remember the chosen visualisation plug-ins between running instances (this is going to require some reconfiguring for those using this feature as the prior implementation would run visualisation plug-in that was able to be used)
Changed the waveform seeker plug-in to reduce it's impact on CPU load when WACUP is not playing & if the plug-in is not processing any file(s)
Changed the error message Milkdrop shows if using the multiple visualisation mode & anything else that's running in fullscreen using DirectDraw happens to run before it (e.g. Geiss)
Changed how the podcast related xml files are parsed to save a bit of time with much larger files by changing how the xml parser is used to allow for some aspects to be better primed prior to population
Changed a few of the plug-ins to reduce their memory usage (e.g. undo now only allocates what's needed instead of what might be needed to store the backup file paths) as well as reducing some memory handling (e.g. shaves a bit more time off a full local library database load)
Changed some more of the internal NDE handling to reduce the peak memory overhead of the loaded database records with upto 55MB saved for a 300K entry database used during testing (savings will be less with smaller databases)
Changed how the local library calls to get an ATF title for a file are handled to massively reduce the time it takes (e.g. 4500 podcast downloads when dragged onto the main window could take around 6 minutes to be processed with it now down to a few seconds if set to read all of the titles when added into the main playlist) whilst also reducing the cpu load to process things (double win on this!)
Changed the main playlist metadata reading options to remove the non-background reading version of the default option as both options had ended up doing the same thing with other changes to the core over recent months & had been a bit confusing to some (tl;dr this won't make a difference to most when it comes to metadata reading)
Changed the checks made for lyrics information within file metadata to improve it returning lyrics when it's known it's in file
Changed how the internet radio cache database is generated to better ensure duplicate listings will not be added whilst reducing the overall size of the archive by ~3MB & improving load times for all builds by making the database files smaller (with it being faster still with the nde changes in this build)
Changed some of the handling of the artwork cache priming to further reduce it's impact on loading
Changed some of the SMTC handling to try to avoid a full process crash if winrt unexpectedly fails
Changed some of the internal window message handling to better avoid doing some aspects which are only needed when a modern style skin is used
Changed how the podcast downloads are handled to use less memory whilst initially parsing the downloads file (saves ~3MB with a file of ~4.5K downloaded podcasts)
Changed some of the supporting code used when the main playlist is being loaded which reduces the overall time to parse it (bigger time savings the larger it gets)
Changed a number of the plug-ins to better ensure they're only creating internal aspects when needed which reduces the idle memory & can slightly reduce load times
Changed how the artwork in the lyrics & albumart windows are drawn to reduce the time required to initially display the image & reduce the cpu load when resizing the windows
Changed the Win7Shell plug-in to do it's jumplist setup not on the main ui thread to avoid it blocking during loading
Changed some of the plug-in loading checks to better avoid doing any loading of unwanted / disabled plug-ins & reduce the need to double-check it's a valid file for slightly faster per-dll load times
Changed how the AppUserModelID is generated during loading (needed for some aspects of taskbar pinning) to take less time if WACUP is installed in it's default location in non-portable mode
Changed how the native dialogs are handled when moving between monitors with different DPI / OS text scaling so they should now be sized as expected (subject to appropriate OS support & whether the OS is correctly doing things e.g. some messageboxes can act oddly)
Changed the installer to now be able to continue if the user selects to do so if there's no internet connection &/or it's not possible to get the 5.666 redux installer though depending on the installation options chosen this may or may not end up with a WACUP install not working as expected (e.g. no MP3 playback & modern skin support for now)
Changed the audio cd playback handling to double-check the type of the first track when trying to play it & skipping playback if it's not reported back as being an audio track (this is to contend with mix-mode cds (e.g. PC games) where in some instances it may incorrectly be attempted to be played & in some instances even seeming to play (more of an issue with some solutions mounting images of cd's)
Changed the taskbar preview rate current item popup dialog to now indicate the current rating value instead of just showing a 0-5 set of buttons
Changed how the output plug-ins are handled if out_sqr is trying to be used so the dynamic load / unload handling if playback hasn't been started will not be used which resolves some stability issues with that plug-in
Changed how self restarts are handled to hopefully resolve the reported issues of it sometimes not seemingly starting a new WACUP instance (it did but the timings of things meant it could then still see the current instance & abort loading so this now changes things to avoid the failure in the scenarios I was able to use to replicate this issue)
Changed some more of the compiler & dependency handling to reduce the size of some of the plug-in dlls whilst also reducing the time to load them
Changed things to reduce the amount of WINE specific checking is needed since WINE 7.x & newer requires fewer things to be worked around compared to WINE 6.x (not that anyone should be running that now)
Changed some of the installer clean-up handling when it's needed to re-copy / update the modern skins to reduce the time it takes for completing the clean-up of some temporary files used with skin updates
Changed how build expiry is reported & handled to better deal with longer development intervals & build issues where updating may not happen at the expected time (using your beta download code will give you a better experience when a build reaches expiration)
Changed the installer & uninstaller to do a better job removing files from older/unknown installs
Changed the installer to do some additional checks to try to minimise the chance of removing the typical settings folder if also being used by the opposite bit-type of a non-portable install
Changed the add/open folder handling to try to avoid some crashes seen when trying to trigger playback &/or setting the first item in the playlist where there seems to be contention on accessing metadata
Changed the artwork cache handling to reduce it's initial memory usage & impact on load & closing
Changed (again) how the crash reporter is attempted to be triggered which depending on the nature of the crash may now be more likely to generate at least the summary information about the crash though it's still likely if it's related to memory / heap corruption that the WACUP process will just close without seemingly collecting anything (unless running a child process all of the time which is not acceptable then this is expected for memory failures as the OS api calls needing to be made rely on being able to allocate memory using the mode that's ironically failed)
Changed slightly how the CD plug-in sets the initial title so it should now avoid staying indicating "checking drive..." for some setups when it had completed
Changed how the streaming url plug-in handles metadata in an attempt to minimise using the underlying input plug-in used for playback vs offering the cached metadata for the youtube & other url(s) played (this should help reduce some of the conflicts / silent crashes that can occur especially when using the in_dshow input plug-in)
Changed some of the painting of the waveform seeker plug-in to reduce the overhead of playing vs not playing as well as using less GDI objects to achieve the same visual result
Changed the initial setup of aspects of the Milkdrop visualisation plug-in to roughly halve the basic amount of memory the plug-in is attempting to allocate
Changed the big clock plug-in when set to show whole seconds in time remaining mode to try to lessen some of the mismatch in the value shown vs expectations
Changed the crash reporter dialog to give a better indication of whether its just going to close or if configured that it's then going to attempt to automatically restart WACUP
Changed the default view mode of the root local library view to be the album cover view (can be easily changed via the edit view mode using F2, navigation right-click or the in-view settings menu button)
Changed the local library plug-in to no longer store artist in the albumartist field if no albumartist value is read on import / metadata refresh so it's easier to indentify items without a specified albumartist field (this will require a refresh of the items already in the local library database to reflect this change) & makes the replacement local libary plug-in slightly differ in behaviour vs ml_local
Changed how the vis_classic plug-in works to reduce it's overhead when rendering the base aspects of the window which should make it smoother when being moved around especially if docked to other windows
Changed how the MP3 file override handling to always use the built-in mpg123 based handling (to avoid in_mp3 related issues) is determined for the transcoding api to try to resolve a WINE on macOS failure
Changed how the post setup handling to clean-up the crash reports folder is done so it'll now better avoid anything recent which may not yet have been submitted (e.g. crashes before the installer runs) along with better ensuring that any OS generated dmp files are removed to avoid the folder filling up for some setups
Changed the handling of some of the WACUP output plug-ins to better avoid attempting playback for samplerates known not to be supported along with trying to indicate the failure for classic skins in the songticker text instead of moving on / restarting the current playlist item without any context for what may be going wrong
Changed the edit bookmark dialogs to now remember their last opened position along with making the layout more consistent with the edit playlist dialog
Changed how the zero padding of playlist numbers can be done so it's now also possible to set it (via preferences -> playlist) to pad them even if there's less than 10 items (the normal padding behaviour will only start padding the playlist numbers if there are 10 or more items present in the playlist)
Changed the installer to no longer do a pre-check for there being an active internet connection & instead just rely on the results when it needs to acquire files from online as applicable
Changed how a number of the core dlls are created so they should now no longer cause issues during installation related to how they are able to access their associated runtime files which should resolve most issues reported when installing on a pre-Windows 10 system
Changed the main playlist scrollbar under older modern skins (i.e. those not reporting as wasabi skin version 1.3 or newer with the needed image elements) to now use the scrollbar elements like is use by the library window to offer a more consistent visual look including up/down buttons instead of using the classic 2.x style slider only element that was being used (this change also makes the scrollbar much easier to see & use especially on higer resolution displays)
Changed the WACUP lyrics plug-in to be automatically disabled if the 3rd party lyricsplugin is being used to avoid some issues with duplicate menu items & the modern skin engine mis-handling the windows
Changed out some of the early image resizing code WACUP had been using to now make use of a better optimised implementation (this helps reduce some of the impact of the albumart view mode support in ml_ll) along with reducing some of the reprocessing done to generate the wanted scaled images
Changed the splash screen if enabled to not be shown when running WACUP after a crash (especially if that's somehow caused the crash)
Changed some of the beta token handling to avoid some beta aspects incorrectly being disabled if configuration files have been altered beyond expectations though sometimes re-running the installer is needed
Changed the albumart writing options to also consider front.* as a potential for the file naming depending on what other options are currently enabled
Changed some of the update dialog handling along with a few other aspects that could cause it to show the wrong message
Changed importing or refreshing metadata in the local library so it'll look at the genre returned being "podcast" along with some additional in-tag metadata fields to mark them as ispodcast=1 (this is a mostly virtual metadata value for files in the local library db when added by the podcast plug-in but there's cases where prior files not handled by it need to be checked & flagged in an appropriate manner & should give a more consistent behaviour for such files compared to how the now replaced ml_local plug-in would do things)
Changed the query used for the default Local Library/Audio sub-view on new installs to not include items flagged as a podcast so the dedicated podcast sub-view can instead be used to see those files (the view query can always be changed to select the 'audio' preset to get the older query back via the settings button or right-clicking the view in the navigation tree or by pressing F2 if already within it & this will not alter existing configurations)
Changed how the skinned dividers within the library window or anything else using the common skinning are drawn to try to show a different colour on the center band subject to the colours available from the skin being used as a means of making it a bit more obvious that it's an interactable element when the mouse is moved over them
Changed the exporter plug-in to now run most of it's actions on a background thread to avoid it triggering the unresponsive handling (with it showing something is happening on the library window button)
Changed some more of the setting saving to avoid default values being saved out (is more cases of this to resolve but this helps in addition to prior work done)
Changed the output plug-in fallback handling to migrate any pre-existing install configurations over to the preferred settings value if the handling is triggered
Changed how plug-ins unable to be loaded (either intentionally disabled or not) are shown to try to extract a description from their version resources (if present) so it's hopefully a bit easier to determine what it might relate to vs just looking at a short form filename
Changed how the core reports failures to load some of the required components as well as adjusting the crash reporter to better differentiate these enforced on load failures
Changed the albumart conversion api to be more forgiving of the input parameters given to it so it should work more reliably now without having to remember too many specifics
Changed how the taskbar preview is handled so the peek handling should work far more reliably instead of it looking like WACUP has crashed (due to the OS showing a spinning progress indicator instead of the expected main window) though there might be some visual quirks if using a skin with faux transparency due to the OS api being provided with a bitmap of the main window not supporting alpha within bitmaps
Changed how some of the ok to load a plug-in checks are done to improve the handling when dealing with plug-ins with non-english characters as part of their filename (not common but there's some which could prevent the disable plug-in mode on the preference pages from not working as expected)
Changed how the "album" metadata is obtained if it's checked for by the albumart service to try to use the metadata if present in the local library database instead of only going directly to the file (this can help reduce some of the delay to find the albumart especially for files on slower storage which has been seen to cause a hang crash in some instances)
Changed the installer to better reflect if a portable install is being updated vs the generic messaging that was previously being used along with removing the superfluous portable install mode during updates
Changed the installer to no longer try to internally update the install location being used when an update is being attempted which might help to resolve the reports of beta installs incorrectly updating preview installs
Changed the podcast view handling to try to a better job in populating the duration &/or file size columns if the feed doesn't provide that information (as some don't) by double-checking if it can be obtained from the existing library contents or downloads (this may cause some lag in initial view loading for some until it's been able to be cached) along with trying to update any local library results where it's not already flagged as being a downloaded podcast
Changed how the core during loading handles trying to get the string to show for the taskbar text so it's less likely to block process loading if the item doesn't have an already cached main playlist title string & for where the file or the local library database are slow to respond to getting the metadata needed to generate the title (this should avoid some initial on loading hang crashes seen)
Changed some of the actions used to reset preference options back to their default values to have prompts to confirm if the action should be done or not
Changed the installer messaging if the supporting installer verification stage fails due to an unexpected error instead of showing the somewhat confusion no internet connection message (not that either messages should ever need to appear)
Changed the installer to use the helper dll throughout the whole setup process instead of trying to switch to the newly installed WACUP core dll as there's some setups where this doesn't work causing an incomplete install to be made (might only affect some older Win7 setups but as this change appears to work ok for all Windows installs it'll be used going forward)
Changed imported playlists from the main playlist editor to now have a timestamp included as part of the name instead of just creating more 'imported playlist' entries
Changed how things are done to try to better ensure that the input plug-in associated with the file the user is trying to remove will release any locks it might have on the file which can prevent deletion
Changed how the command-line & playlist handling works which should now allow for native paths to be accepted when running WACUP via WINE & trying to pass files via the command-line instead of it closing immediately due to treating them as unhandled command-line actions
Changed to use some of the more secure path related methods where there is support by the OS
Fixed a long standing issue of HTTPS streams (mostly those handled via in_mp3) not always working especially if trying to get the HTTP version & an enforced HTTPS redirect comes back (aka not-fun things with openssl)
Fixed importing some files into the replacement local library database causing a crash due to an issue with processing some of the associated artwork information for the file
Fixed the probable cause of the Waveform Wrapper plug-in sometimes causing a crash when attempting to process the redirected 'isourfile' check by in_mp3
Fixed the probable cause of the WINE detection check in the crash reporter causing the crash reporter to crash (this change based on a recent crash report seen showing this weirdness)
Fixed the GetLanguageIdentifier(..) localisation stub to return a hard-coded 'en-US' response to resolve a modern skin compatibility issue
Fixed some font handling related issues with the Big Clock plug-in such as when it's already in double-size mode or if the font selection dialog is cancelled which would reset the font back to generic one until restarting WACUP
Fixed a random issue that could affect some setups causing them to hard-crash early on during loading
Fixed the main notification area icon tooltip text not updating as expected if it's been set to show the currently playing position
Fixed the main context menu on the classic skin video window frame not being correctly initialised (e.g. skins sub-menus not being populated)
Fixed a GDI object leak when triggering a classic skin refresh
Fixed some crashes related to loading of the Alt+3 File Info dialog & the mis-handling of the raw metadata dumping tab (e.g. doing so when a background ml_local library scan is active or if no information can be provided which could cause a cyclic querying & eventual crash)
Fixed the classic skin main window song ticker jumping oddly / showing a blank space at times (this was something I'd patched out but had managed to mess up some of the calculations due to using the wrong font which skewed things - was worse the longer the song title to be shown got)
Fixed the main window playback position not showing for the first second or so when playback is started under a classic skin (this was an issue caused by some of the live patching I'd been doing previously)
Fixed some of the Winamp core configuration options not being correctly read in & applied from a WACUP handling (e.g. the option to disable window snapping)
Fixed video playback output 'stopping' (it still happens but can't be seen) when moving the video window from the initial monitor that playback was started on to another one (was due to mis-understanding of an api parameter whilst trying to resolve a different issue)
Fixed (completely I hope) a flickering that can be seen when resizing the classic skin video window whilst a video is playing (was an odd directx vs normal window weirdness)
Fixed Not So Yasapi not allowing in_mp3 (Winamp's main stream handling plug-in) to play most streams given to it with it showing an error about not being able to save streams
Fixed the saving of M3U8 / M3U / PLS playlists to correctly handle titles with line breaks in to not break the subsequent reading of the playlist (this was found from an internet radio station which had line breaks as part of it's station name)
Fixed the equaliser window tooltip appearing being behind the equaliser window at times
Fixed the equaliser auto loading mode not working for some time due to the Winamp core method not being called (no longer an issue as it's all done natively by WACUP now)
Fixed the IPC_REGISTER_LOWORD_COMMAND handling so it will return the pre-incremented number which helps fix a conflict found with the batch allocation (e.g. toggle an option & something else also reacts)
Fixed the podcast downloads window sometimes not updating the status of the currently downloading items due to a timing issue with the view initialisation
Fixed the handling of some of the core windows when using a classic skin not being saved / restored in an expected manner when the monitor those windows were on are deemed to be to the left of the main monitor position (aka not handling negative window positions correctly)
Fixed the scrollbar handling when using the replacement media library core not reacting correctly if the window showing the scrollbar was to the left of the main monitor position (see above)
Fixed the library history plug-in not always updating the playback state if the option to wait is unchecked or the internal timer manages to fire before the reported playback position is valid
Fixed the current playback time position in the classic skin playlist editor window (bottom right) not using the xx:xx style of time formatting when not using the skinned font for improved consistency
Fixed clicking the current playback time position in the classic skin playlist editor window (bottom right) not toggling the time elapsed / remaining mode as Winamp does
Fixed the classic skin window docking not working correctly when video support is disabled (either by de-selecting video support during installation or by later disabling the appropriate input plug-ins)
Fixed the video menu items incorrectly showing in the main right-click & modern skin windows menu when there's no applicable video support enabled in the current WACUP instance
Fixed the classic skin main window songticker & all other parts of the playlist editor window to use the appropriate defined font from the skin or via the the custom font selection on the Playlist preferences page (this may not be ideal for some of the fonts that can be specified vs the available area to be drawn into but it should make things a bit more consistent with the look of the classic skin where it's used - this also marks a deviation away from Winamp which only used Arial for the selection / playback state in the bottom right-corner of the playlist editor window)
Fixed the vertical divider on the library playlists root view not always being positioned correctly on the first loading of the view
Fixed selecting no playlist in the library playlists root view not being remembered the next time the library playlists view is loaded
Fixed changing the long time formatting option on the General preferences page not live updating the classic skin playlist editor window selection area immediately to match
Fixed a memory leak in the settings cache related to the reading of already cached strings (oops)
Fixed a crash seen with some visualisation plug-ins when trying to access it's config when the plug-in is already running
Fixed the playlist manager service not always loading the existing playlists prior to attempting to add a new playlist to it (found during the command-line handling changes)
Fixed removing a library playlist tiggering the library to switch to the current root library view instead of just updating the library playlists list
Fixed some inconsistencies with the installer & how it is setting the version in some of the files along with the build year (there were some 2020 references still which shouldn't happen now its auto-filling at the time of building)
Fixed the video handling not supporting updating the 'VID_Info' text feed element when using modern skins (this was 'broken' as I didn't have a way until now to be able to provide the information in a manner that the modern skin required)
Fixed trying to inspect added playlist urls with /;listen.pls on them as a playlist which would cause WACUP to download the stream (not sure why these sorts of urls are being provided to some as they should be either /listen.pls or /; but that's the mess of internet streaming at times!)
Fixed the plug-in description for the dsp_compwide plug-in to suggest using the newer dsp_1by1enh plug-in which works better compared to the older one (it might be a different filename but it's the continuation of the older plug-in)
Fixed the library playlist view not showing the stars on the rating submenu with the nice unicode stars
Fixed the playlists submenu on the modern skin playlist editor file menu not working as expected (this was also causing some issues with the new skinned menu handling)
Fixed the double-size & manual playlist advance options in the main right-click menu not being checked on the menu if enabled but the setting hasn't been changed during that instance
Fixed vgmstream based playback not updating the visualisations as expected due to too many samples being provided by the plug-in to the core (not helped that the decode thread code wasn't sync'd correctly with the upstream repository)
Fixed an issue with the skin preview in the setup skin selection dialog where it could cause the skin previews to fail to load despite the files it's trying to show being there
Fixed the jump forward / back by 10 items not scrolling the new current playlist item into view as expected for those actions
Fixed drag + dropping items into the main playlist either on or before the current playlist item incorrectly updating the new position of the current item
Fixed trying to convert OGG files via the format converter often reporting not being able to find an encoder or producing an empty / no audio file due to a decoder initialisation issue (a pebkac moment)
Fixed the Ctrl+Alt+End global hotkey (or any global hotkey which specified the Alt key for the stop action) to no longer incorrectly toggle the next on stop action
Fixed issues with multi-queued files in the main playlist editor showing the final position of the queued item instead of the first queued item (this brings things into line with the JTF dialog & was due to some of the integration changes which meant it kept iterating over the queued items instead of just reporting the first occurance within the queue)
Fixed another Win7shell related crash (this is a side effect from changing it to do it's processing off thread to resolve other issues seen e.g. triggering the OS timeout when gdiplus is enumerating a lot of fonts)
Fixed the updater incorrectly being shown if a new beta build is available but it's not marked as ready to be auto-downloaded (this means build 8100 is going to have the same problem)
Fixed the api for getting the current list of supported file extensions not always generating a valid response which would then cause things like local library importing or folder drag & drop to miss files
Fixed a crash due to a runtime method throwing an error when reading in some of the configuration settings & the string attempting to be read in from the configuration file is too large for the output buffer
Fixed the add / open url dialog not dealing with invalid data on the stored history which could eventually cause the issue above or due to a weirdness with the Windows ini writing methods not clearing it out
Fixed left or right clicking on the classic skin playlist editor buttons & then clicking on any window other than the playlist editor to cancel the menu shown triggering the associated double-click action for the button
Fixed the probable cause of some crashes seen with the bundled in_xsf based plug-ins due to not checking some of the state values
Fixed the cause of some crashes seen with the bundled in_xsf based plug-ins when trying to set empty metadata values
Fixed the Winamp Modern skin always being the first modern skin menu item despite the settings on the skin manager settings preference page (this also ensures the Winamp Classic Modern skins is an option)
Fixed a crash with the MP4 processing not handling an unexpected change of state
Fixed clicking on the dead area of the playlist not notifying the change to the respective plug-ins monitoring the IPC_PLITEM_SELECTED_CHANGED notification message (this now allows plug-ins to swap back to showing information for the currently playing item instead of staying on the last selected item despite there now no longer being a selected item)
Fixed loading some modern skins incorrectly reporting a lack of modern skin support due to them having everything within a sub-folder within the skin archive (WACUP is able to load such skins by making things happier for the Modern skin engine but this check hadn't been updated from earlier skin handling tests to support this behaviour)
Fixed un-checking the surround option on the Playback preferences page not being saved due to an internal logic issue when trying to avoid saving the default value into the main configuration file
Fixed the tooltip for the classic skin main & equaliser windows not showing on initally loading if nothing has been done to trigger a related window position change
Fixed the modern skin song ticker text showing the Winamp compatible version string instead of the current WACUP version string (as classic skins show) when there's no playlist item / unable to generate a song ticker title string
Fixed the ATF preview on the 'Titles | ATF' preferences page not updating when reset back to the default ATF string
Fixed the last character of the lyrics data not always being shown when looking in the WACUP provided lyrics window
Fixed the video window contents not drawing correctly or showing as a white block if video playback is paused followed by minimising & then restoring WACUP into view
Fixed some configuration settings being re-saved on loading or on closing when there's not been a tangible change to them (e.g. just starting & closing a WACUP instance)
Fixed a CPU spike seen when clicking & holding the mouse down on the classic skin main window without moving the window
Fixed the classic skin equaliser or playlist editor windows not snapping into place as expected when trying to place them in-between the main window & a generic skinned window with the left window edges aligned (hopefully this hasn't broken anything else with the window snapping)
Fixed the generic skinned window handling under a classic skin not always applying minimum dimensions on window creation if loading in scaled modes
Fixed the big clock windows context menu handling to not appear outside of the window if using the context menu button
Fixed the dividers in the replacement local library plug-in views not always being set as visible (this would prevent being able to change the size of the areas within the view)
Fixed the update dialog showing after a crash when there's an internal versioning mis-match going on (this should resolve the last of the issues of the update dialog showing when there's nothing to get)
Fixed some of the extended ATF values not being resolved consistently due to variations in per vs shared ATF related calls (e.g. %playlist_position% on the Taskbar Text preferences tab)
Fixed some opus files not loading despite being valid due to an undesirable utf-16 -> utf-8 -> utf-16 conversion going on within the plug-in for filepaths which would then error on the file conversion stage
Fixed a possible cause of a crash when the undo plug-in is purging old backups
Fixed ml_ll sometimes running a double query of the local library database on loading which could affect loading times
Fixed ml_ll not always tracking the complete time taken for multi-part queries to run (especially if restoring the view selection)
Fixed a regression preventing the WACUP agent mode from being closed when doing an update which would then block it & require user intervention
Fixed some additional processing overhead with some of the drag + drop handling actions due to not caching the currently supported extension list
Fixed the probable cause of some of the random crashes experienced with ml_ll after making changes to the database whilst a view is currently active
Fixed double-clicking in an empty playlist where the first playlist item would be incorrectly triggering the add file dialog
Fixed big clock not always triggering the time of display / .beat time to update if selected via the window / config menu
Fixed ml_ll sometimes not re-mapping the configured view columns relative to their position to their internal values causing some to be drawn empty or with the incorrect value (e.g. date added could be empty or show the podcast published date)
Fixed the history plug-in not correctly purging incomplete entries from the 'hidden' entries present due to older issues with the plug-in (this is subject to the option to remove items after a time being enabled)
Fixed the exporter plug-in sometimes generating just a .csv file when selecting the 'all smart views' option
Fixed ml_ll reporting the grouped results in the first filter as one less than what is actually shown (had missed removing a workaround for a different issue which has long since been resolved)
Fixed the handling of line breaks in long strings (e.g. comment fields) being escaped for CSV file output not always being correct & causing incorrect line wrapping in the viewed CSV file or it reporting not enough lines
Fixed the history plug-in not dealing with some scenarios nicely which could prevent it from showing all of the valid entries or could cause it to end up in a loop which then locks up the player
Fixed the ml_ll lower pane not always getting the expected results based on the upper pane selection when the option to ignore the 'the' is enabled due to the internal query not checking for the non 'the' version of the string that's being looked for (either from via an upper pane selection or from a custom search e.g. The #1's & #1's with the option enabled should group together & show any item matches)
Fixed the default position of the classic skin artwork & lyrics windows being a few pixels over to the left which prevented them from being seen as docked & thus not moving when the main window is moved
Fixed the installer check for the existing WACUP instances running not always filtering out instances not related to the install location trying to be used (most will never experience this with a single install)
Fixed an extra separator appearing on the no-item playlist editor right-click menu
Fixed the undo actions submenu (if enabled) on the main right-click menu being duplicated when viewing the menu multiple times (this didn't occur on all of the windows which is why I'd missed it previously)
Fixed the 'local library' export sub-menu item (& some of the others) being shown when the plug-in / feature is not currently enabled
Fixed the probable cause of history plug-in not updating incomplete records due to issues with earlier builds / db failures (would appear as the history just not recognising the currently playling item)
Fixed the probable cause the library history view sometimes crashing when the list is being updated just after a search / view refresh has happened
Fixed the library history view not always reporting the correct total number of plays in the status message (this was affected by where the currently playing item was vs the sorting of the history results)
Fixed clipping of the text on the edit playcount dialog from the library history view
Fixed xspf playlist entries (e.g. from VLC playlists) not being correctly converted into the unencoded non-file:/// form for their actual on-disk path (issue found from a complaint about WACUP on twitter)
Fixed a default eq presets file (winamp.q1) not being present on new installs
Fixed the probable cause of a deadlock occasionally being seen with the Not So Direct output plug-in (hopefully this doesn't break things)
Fixed the probable cause of a crash within the main window vis handling due to not correctly bounds checking the visualisation data being provided by the input plug-ins
Fixed a slowness with the painting of the classic skin main window when going between normal & windowshaded modes & vice versa (its still not 100% but you really need to look for it now compared to before)
Fixed a regression that was sometimes causing the internal shuffle table to not be correctly re-initialsed nor for it to be cleared as expected due to some internal calls sending the wrong flag value
Fixed the installer not always creating the settings folder at the appropriate time which could cause some aspects of installation to fail / not complete as expected
Fixed a crash related to how the mimetype information for artwork is generated from the file metadata
Fixed the main window visualisation & related plug-in interactions with it not working when the playback buffers were set higher than an internal limit put in place a few years back in relation to a crash issue
Fixed the podcast downloads view not always ensuring when changing the column sorting that the new order of the sorted items would been seen
Fixed the podcast downloads view not remembering the sorting correctly as well as it double-sorting the items on initial loading of the view
Fixed a lyrics metadata parsing issue that could if there were double-brackets within the tect cause an infinite loop to be triggered (oops)
Fixed the WASAPI output plug-in crashing when accessing it's preferences page if there's no active devices reported (e.g. doing things whilst updating audio drivers)
Fixed the autoplay on start-up action causing a volume changed message to appear (depending on the skin being used this could be more annoying than with other skins)
Fixed the 'open playlist from library' submenu on the main playlist editor's manage playlist button (what a mouthful) getting duplicated on repeat use of the menu
Fixed the probable cause of some of the reported issues with the history playcount being doubled (this seems to have been mostly related to the playback offset handling)
Fixed the DSP & visualisation plug-in preference pages not always reporting plug-ins that are present but could not be loaded due to a dll loading error within the lists
Fixed a compatibility issue related to libflac.dll & the old edcast (dsp_edcast.dll) plug-in for streaming where it needed more features than my libflac compile offered
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 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 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 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 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 main right-click menu not showing when right-clicking on the generic skinned window frames for windows not running on the main UI thread (e.g. Milkdrop)
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 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 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
Fixed the probable cause of a memory handling weirdness when trying to resize an existing memory buffer related to an internal look-up cache within the replacement local media library plug-in but could also happen with other requests via the memory manager service
Fixed a crash due to invalid parameter validation on some of the playlist related apis which could trigger a crash on loading for some setups
Fixed the playing / selection status area at the bottom of the classic skin playlist editor being incorrectly clipped to 60px scaled instead of 90px scaled
Fixed a number of visual issues related to the handling of the tabbed preferences from them not repainting correctly on switching within the same preference page to a large white flash seen when skinned (there might still be some little oddities on the timing of the painting of things but it should be much better compared to how it's been at various times across various builds)
Fixed the cause of a deadlock that could occur in some cases when a playlist backup was being made with the undo plug-in
Fixed the probable cause of drag+drop onto the main playlist editor sometimes inserting the item(s) at the wrong position due to a mis-calculation on the drop position whilst not accounting for font size
Fixed the big clock window not updating at the correct speed if using the time of day/.beat time & having paused & then resumed the playback (it would often drop down to a 1 second update interval which wasn't intended if the in-window visualisation mode was enabled)
Fixed an occassional crash experienced when accessing the main right-click menu & a large number of bookmarks need to be processed
Fixed issues with the docking of the skinned windows to either the current edges of the screen the window is on or to other skinned windows when there is no equaliser &/or video windows (e.g. moving the main window would not move the 'docked' playlist editor window with it as is expected unless the shift key is being held down at the time)
Fixed the FLAC & Ogg Vorbis input plug-ins not correctly reporting that it's handling ReplayGain which depending on what was found within the file & the related configuration options could cause it to not apply the correct gain level
Fixed the wavpack input plug-in (in_wv.dll) not saving multiple metadata edits at the same time due to a caching related issue
Fixed the probable cause of the SID player (in_sidious.dll) causing a crash on loading when trying to restore playback & the length information cannot be found for the file within the SID song length database
Fixed the probable cause of some issues when seeking within MP4 files & it being able to crash in some less common scenarios
Fixed releasing of strings from the database engine not ensuring the memory is deinitialised as it could in some scenarios trigger a crash
Fixed some modern skin engine related failures by using a different way to patch some of the runtime methods that have appeared in crash reports to hopefully make modern skins a bit more stable overall
Fixed the probable cause of an access issue when attempting to find an item in an NDE database in a resource constrained instance
Fixed a timing issue with the initialisation of the Playlist Separator plug-in which could cause WACUP to crashing during loading
Fixed an issue with the resizing of some of the portable preference pages
Fixed the possible cause of some crashing when using the old 'Text Speech Winamp' plug-in (in_txt.dll) though this plug-in is not the most stable even under a plain Winamp install but some will try it
Fixed the use custom songticker atf option not always being saved as enabled due to a compiler related weirdness
Fixed the classic skin main window songticker not showing the playlist position (if configured to be shown) when playing anything without a length (e.g. internet radio streams)
Fixed the waveform seeker plug-in being able to keep trying to decode some file types when the decoder is not reporting completion at the appropriate time (e.g. mod & vgm files that might be looping) which for some file formats & machines could if too many of the processing threads are triggered cause the machine to become unresponsive which wouldn't go away until the WACUP process was closed
Fixed the classic skin main window songticker not updating correctly on loading or on changing the current playlist item when auto-scrolling of the songticker has been disabled (not the default behaviour)
Fixed some of the settings on the classic skin visualisation options not being saved / read in correctly (I tye gud)
Fixed a massive performance issues with the True Audio (TTA) input plug-in where it's spamming changes to the decoded output when there hasn't been any which would in-turn force the playback core to update the ui when it wasn't needed
Fixed a crash when trying to uninstall one of the newer style WACUP plug-ins due to incorrectly handling the internal message pump not recognising the plug-in was no longer present
Fixed some ui weirdness when playing some video files which if the video window was also open (as would be expected) it could cause aspects of the ui to stop responding & potentially make WACUP crash unless the window was closed along with the inner part of the window sometimes not being drawn in an expected manner on resizing if there were no video frames yet provided to be drawn
Fixed the Nullsoft input plug-ins not showing an icon on their about dialogs irrespective of the mode WACUP is running in due to the core not having the same icon resource (a simple enough re-mapping to keep things happy)
Fixed the sorting of the output plug-in preferences list sometimes not keeping the null output at the top of the list (it's a special case & so needs to be at the top of the list)
Fixed a number of issues with the rating menus either not showing an appropriate value (mostly from not re-mapping some values into the 0-5 range or not reverting to the actual file if it's not in the local media library) as well as a number of performance related issues with how determining the value to show vs the number of selected items (still some more to do with this in other areas but its a start)
Fixed the probable cause of some random crashes seen when accessing some MP4 based files
Fixed the probable cause of some crashes related to the WASAPI output plug-in
Fixed the probable cause of some crashes seen that seem to be related to the modern skin engine blocking the ui whilst waiting for the current item's artwork to be retrieved (this isn't the best of fixes as there's things that the modern skin engine is doing that will cause such issues but not allowing it to sit & wait indefinitely is not a good idea)
Fixed some issues with the history playback tracking when the playback offset handling is enabled which could in some scenarios cause the history to be incorrectly increased when moving to another playlist item along with it not always clearing the playback offset that's stored if the playlist item had been deemed to have fully played
Fixed the skinned listview dead area not painting correctly when running under WINE
Fixed columns in some of the library views (e.g. local library & history) showing the value of the prior column if there was nothing set when running on WINE
Fixed the listview headers of the multi-pane local library views not being skinned as expected when running on WINE (is a weird one in that the header child wasn't reported as being created yet vs it being fine for ever other instance of a listview with a header aka WINE can be odd at times)
Fixed the skinned treeview (mostly for the internet radio view for now) not updating it's background correctly especially when expanding child nodes when running under WINE
Fixed some of the skinned scrollbars (typically the horizontal ones) turning back to their native form when moving the mouse over them when running under WINE
Fixed the genre treeview in the internet radio view causing the view to become unresponsive due to entering a painting refresh loop when running under WINE (Windows doesn't do this in response to the updating of the skinned scrollbars but WINE does though it doesn't need the updating that is needed when working under Windows so this adjusts as needed without breaking either situation hopefully)
Fixed selecting a genre in the internet radio view not reacting as expected when running under WINE (case of using a notification that Windows sends but WINE doesn't though there's a notification that is received by both scenarios which this is now using)
Fixed a few typos in some of the preferences
Fixed double-clicking on the bottom item if it's a partially seen item of the main playlist editor not starting playback on that item but instead the one below it along with it causing a full scrolling into view of the playlist contents
Fixed the IPC_PE_GETIDXFROMPOINT handling not working correctly when using a classic skin in double/triple-size mode
Fixed toggling the classic skin main window visualisation sometimes not rendering in an expected manner when playback is also paused
Fixed a titlebar alignment issue & the placement of the blinking lights on the Winamp Modern Holiday skin when the menu is set to be disabled (thank you to Eris Lund (0x5066) for this)
Fixed Audio CD playback not always starting at the expected start of a track due to a mis-calculation in the track offset which wasn't accouting for the expected lead-in of 2 seconds (reported by k6stor)
Fixed the Audio CD plug-in sometimes triggering a full update of the main playlist editor's titles when it's only meant to be triggering an update of any existing cda:// based entries (whoops)
Fixed a number of visual issues with the plug-in lists from the selection not going to the edge of the listview when there's no scrollbar needed to it just looking a complete mess when running under WINE
Fixed a timing conflict between the installer triggering a supporting tools update check & the initial setup mode being run which could explain some of the weird crashes on loading after installation & yt-dl corruption issues
Fixed new items being incorrectly added into the history view if a custom search has been applied & what's being played shouldn't appear within those search results
Fixed the handling of streams with the history so it now shouldn't incorrectly update the last title for the stream to be the title of the new item about to be played
Fixed some FLAC files appearing to play but nothing can be heard due to the ReplayGain / scaling factor being incorrectly determined under resource heavy scenarios or if the output buffer is set too low
Fixed a hnadling issue with the saving of the Not So Direct output plug-in configuration with the buffer sizes as well as better ensuring only actual changes are saved into the main configuration file
Fixed a number of issues with the main playlist editor scrollbar handling when using a modern skin or when using double/triple-size mode where it wouldn't allow the bottom part of the playlist to be clicked into view when clicking on the scrollbar (more still needs to be done on the scrollbar handling in general to try to make it act more like a native OS scrollbar in behaviour but this is an initial change)
Fixed a conflict between the FLAC input plug-in, Not So YASAPI output plug-in & trying to restore playback on loading due to the pause/seek/unpause stage being done before the FLAC has completed loading (this may also resolve some other minor quirks with the seek handling of FLAC files)
Fixed a number of crashes with the Not So YASAPI output plug-in due to how it was passing internal variables around & other issues seen which have been annoying me about the plug-in despite my dislike of it
Fixed moving a playlist item to the top of the main playlist editor when using a modern skin never see it get to the first position & instead see it start to move back down the playlist (the pain of trying to have things auto scroll depending on the direction to be more like native OS listview controls)
Fixed the inner fill for the video & generic windows on the classic skin preview showing the wrong colour vs what WACUP uses (there have been some changes vs the code which was built around Winamp's behaviour) as well as the logo in the video window showing an incorrect image (WACUP doesn't bother with that image file)
Fixed the classic skin preview not being scaled to match the preferences sizing which is dependent upon the OS dpi settings (this is not great but it'll suffice for the basic needs of a basic preview)
Fixed the option to auto-hide the classic skin albumart window under a modern skin not being correctly saved though this fix does require the option to be toggled to off if that's what is required to get it to be re-applied correctly
Fixed using the 'select all' keyboard shortcut not working as expected in the local library, internet radio & history views where it wasn't being applied to the search field & was incorrectly applied to the list
Fixed the Settings & Plugins sub-folders for the configured WACUP settings folder not being ensured it exists on loading (this makes WACUP cope a bit better with a user / external tool nuking the settings folder or part of the settings folder without having to re-run the installer)
Fixed a number of build & initial run issues when compiling the WACUP code for 64-bit builds along with other changes to make it easier (when it happens) to provide a native Windows 64-bit build of WACUP
Fixed Milkdrop's desktop mode not working due to the things it needs not being created as expected when the high contrast theme is being used
Fixed a crash related to cleaning up after video playback on closing
Fixed the move actions in the JTFE window sometimes getting stuck in a loop
Fixed the installer incorrectly creating it's self backup in the WACUP settings folder if the install is cancelled before it's been completed
Fixed the duration from XSPF playlist not being used on loading these playlists if it's available
Fixed an intermittent issue that would cause playback of some Ogg Vorbis based HTTP streams to either fail (partial or immediate stop of playback) or for it to cause a crash
Fixed some of the playback logging actions not outputting linebreaks (e.g. when using the $crlf() atf method) as well as not being used in some of the preference page previews
Fixed some mod files not playing due to incorrectly handling the response of a check for warnings from the file (e.g. when there's missing external sample files which can still have the file play in a basic mode)
Fixed the sorting of the plug-ins not always placing the currently enabled ones at the top of the list due to a string casing related issue with some of the plug-in names
Fixed the probable cause of the WACUP loader process staying around &/or running at 100% of a cpu core due to a problem with the clean-up of the legacy mode command-line (this seems to have been mostly affecting Windows 7 based installs but could be manifesting on any valid OS install because of variations in C runtime & platform memory handling)
Fixed clicking in the plug-in preference page listviews incorrectly reporting the state of a plug-in has been changed when closing the preferences / change to another preference page when running under WINE
Fixed the compact time mode formatter not showing the expected time if there are no hours but the time is more then a day as it'd ignore the number of days
Fixed a crash with the CD playback plug-in due to incorrectly trying to handle a device changed status message before the plug-in is completely initialised
Fixed skinned edit controls not being correctly updated when another control is being interacted with (e.g. moving the volume slider on the VGM preferences page when skinned preferences is enabled)
Fixed disabled static controls not drawing the control text in the expected manner
Fixed a compatibility issues when handling library plug-ins of different version specifications which could cause a crash on load
Fixed files extracted from lzma based archives not having their attributes & modified dates correctly re-applied during extraction
Fixed the SPC/ID666 metadata reading issue that's been mostly affecting extended ID666 metadata
Fixed the classic spectrum analyzer visualisation window jumping back to the primary monitor if it was set to be run on a different monitor (aka just remove code to fix things)
Fixed the probable cause of the WASAPI output plug-in crashing if the playback device it was trying to use suddenly disappears whilst the plug-in is being used for playback
Fixed an excessive number of IPC_CB_MISC_TITLE notifications being sent especially when the activated state of WACUP is changing which reduces regenerating ATF titles & a few other things
Fixed the in_mod plug-in hanging on starting to play a file if the configured output plug-in fails to initialise
Fixed the probable cause of the WASAPI output plug-in skipping over files due to incorrectly destroying some internal information about the playback device to be used when there's no reason to do that
Fixed the probable cause of the Win7Shell plug-in failing on some setups when it's trying to register it's jumplist to the OS
Fixed the rewind multimedia key not working as expected (e.g. when using a Corsair keyboard with the control knob that can be used to trigger fast-foward / rewind actions)
Fixed the simple artwork view mode in the classic album art window incorrectly blending the actual artwork slightly with the background when it's not meant to be blended
Fixed the lyrics & album art windows seeming to flicker or show the not found artwork before the expected artwork is loaded or only show the not found artwork even if there's known to be artwork to display
Fixed a visual issue with the plug-in item nearest to the item that was just removed when uninstalling a plug-in via the preferences due to an incorrect handling of the focused state vs the custom drawing
Fixed NSF/NSFE playlist entries that relate to sub-songs not being correctly reported as valid items (e.g. via the missing files features in the main playlist) due to not correctly detecting the file extension
Fixed the podcast view showing the wrong colour on initial loading for where the information area is going to go before the browser control has been loaded
Fixed a handling issue that could cause an attempt to incorrectly access an input plug-in if the check to find a valid input plug-in for playback / metadata look-up fail in weird ways or use the wrong one
Fixed the probable cause for the WACUP installation folder being opened instead of the WACUP instance being run after installation due to an odd timing quirk related to the de-evelation handling being used
Fixed some crash issues due to invalid string values (from other issues that have since been resolved) causing a crash to be triggered
Fixed the streaming source plug-in not using an appropriate internal buffer size vs the output plug-in & it's configured buffering which could cause audio loss in the stream due to it discarding what has been passed to it before it's been able to encode it (e.g. this was most noticeable with NotSoDirect & short files where the audio starts immediately & around half a second of audio wouldn't be heard)
Fixed the line for the WACUP site on the about dialog page not being sized correctly when running under WINE due to an incorrect call of LM_GETIDEALSIZE
Fixed the about splash panel not working for all WINE setups due to weirdness with the handling of dpi settings with it
Fixed an approx. 6 year old bug from my initial work to make a WACUP build of the nde database implementation which didn't work well with multi-threaded database saves that could cause WACUP to either lock-up on saving or potentially corrupt the database being saved out (this was found when trying to determine the cause of saving history & local library playback updates to both of the database files around the same time)
Fixed the backup of the nde database files after a successful save has occurred not being correctly handled
Fixed the history playback position not always being stored if WACUP is playing when it's closed due to a number of factors screwing around with the timing & handling of the history db updates (async is hard!)
Fixed the TTA encoder selection not always being maintained & appearing to select the wrong encoder when performing the conversion because the desired encoder isn't what was saved to be used
Fixed the file conversion process not correctly copying the metadata over to the new file due to a logic issue as well as expanding how much of the metadata is attempted to be copied by this
Fixed some issues with the about window which could cause it to crash in some instances
Fixed a temp file related to internal bitmap resource extraction not always being removed if there was an issue with the extraction process
Fixed the missing album information vs overall album total in the local media library album filter not being correct (this should hopefully resolve this on/off issue with this replacement plug-in)
Fixed some quirks with the safe mode where some of the native WACUP plug-ins were not being correctly enabled as I'd not migrated everything over to the newer style of handling I'm now using for it
Fixed the intro play fade timeout preferences option not being correctly restored between state changes
Fixed some handling issues with the IPC_UPDATEDIALOGBOXPARENT & IPC_SETDIALOGBOXPARENT api calls related to gen_ff (modern skin engine) & how the WACUP core attempts to isolate it from doing things on the main ui thread to try & avoid unresponsive hangs that can lead to crashes
Fixed the lines oscilloscope option not being correctly restored when re-opening the preferences page
Fixed the sorting of the items in the current podcast feed going awry when a channel refresh is in progress
Fixed in_mod not send audio to the active DSP if it's enabled (seems I inadvertently disabled this whilst debugging an issue & only recently noticed it, oops!)
Fixed the main playlist editor scrollbar area handling when using some modern skins not reacting as expected due to the reported information for the image elements not matching to what is used for the drawing handling (e.g. it'd only react to clicking on roughly the right side of things instead of the whole area which works when using the thumb dimensions that all modern style skins should be providing)
Fixed the handling of a number of plug-in configuration menus when the skinned preferences option is enabled which was causing them to be incorrectly drawn due to mis-handling negative/very large menu ids
Fixed loading an url/file via the autoplay plug-in not working as due to a fat fingered typo it was overwriting the value on loading when it was meant to have been reading it
Fixed a regression preventing the currently selected preference tree item being in view when the preferences window is first opened
Fixed some quirks with the configuration of the listview header sorting due to a parameter mis-match in an api call (oops) & some states not being correctly setup
Fixed the probable cause for some setups (first reported on WINE but also seen on Windows 7) to either crash or not complete the creation of the selected media library view when changing it due to an issue with the clean-up of the accelerators (i.e. keyboard shortcuts) related to the preview local library view
Fixed the probable cause of the random failures seen when trying to switch quickly between media library views when the internet radio view has also been accessed which due to the large size of it's view cache was sometimes trying to do too much at the same time & causing itself to hang &/or crash
Fixed a regression with the podcast download view handling when loading the list of downloads & trying to fill in the length information if not already stored causing the duration column to not appear to be sorted correctly (this was due to the information not being correctly updated so that the sorting action was treating the files correctly as having no size despite the visual inconsistency observed)
Fixed the Alt+3 dialog sometimes making a double request for metadata from the input plug-in(s) when it should only be doing it the once
Fixed an issue when using WINE & the classic skin playlist editor window would not be redrawn as expected when resizing it (fixed by setting a flag on the OS method used to not have it reuse the prior OS cached image of the window's contents)
Fixed the ml_pmp plug-in title string on the media library plug-ins list wrapping onto the second line of the plug-in description
Fixed a number of on closing related crashes & also an up to 1 second delay to complete closing down found during splitting out the external file modification watching from the settings cache implementation (this might explain some of the long running reports of WACUP not correctly closing along with some of the weirder crashes seen during closing)
Fixed a performance issue with inverting the current selection within a library playlist view so it should now be much quicker with much larger playlists
Fixed the embedded browser (if enabled) on the podcasts view not being destroyed in all instances which could keep it using resources beyond it's wanted use
Fixed the current main playlist item not having the songticker text for it updated if a metadata change happens (this would update on changing the playback state but not for all possible ways of change)
Fixed the playback &/or reading of metadata from SPC based files not always working if other actions were also trying to access those files which could cause a file sharing violation that the SNESamp plug-in doesn't handle nicely (either playing but there's no audio or just aborting playback without any indication of the issue)
Fixed the colour theme editor component allowing the user to enter characters that it doesn't then correctly escape them when it's saving out the colour theme edits via it's custom xml writer (this might be something for that component which has always been the case & could be a Winamp3 era related bug & is something that WACUP is luckily able to live patch to correct what is trying to saved out otherwise loading WACUP with the saved file will either crash or throw an error on loading from the modern skin engine)
Fixed some issues seen with the live loading of disabled plug-ins that are part of the known install which could either trigger a crash or prevent some of the functionality working until WACUP was restarted
Fixed an issue seen when modern skin support is enabled & for whatever reason a skin.xml has been placed in the root of the WACUP program folder with the base classic skin set as the current skin to be used which would incorrectly cause it to attempt to load the massively incomplete modern skin (this is a modern skin engine handling bug which should have been checked against but at least it's able to be worked around with WACUP)
Fixed the positioning of the send-to menu in the playlists root view, child playlist views & local library views so it doesn't overlap the button & instead is aligned to the top of the button (this is an annoying issue with skinned menus vs how things correct to dynamically inserted menu items when set to have the menu bottom be aligned to the top of the associated window element)
Fixed the version in the loader manifest not always being correct (have now changed to a fully automated solution so I don't need to remember to update files)
Fixed a slew of crashing & multi-threading related issues with the ReplayGain processing plug-in which should make this a lot more reliable to work with
Fixed a number of issues related to the closing handling especially when WACUP is running & the OS is trying to shutdown which could cause settings / playback states to not be correctly saved
Fixed the bigclock plug-in crashing if the spectrum visualisation mode is enabled & the core is not able to provide any data for it to process (e.g. when waiting for a youtube video to be prepared to play)
Fixed a small memory leak when attempting to play urls via the MP4 input plug-in (this is what led to finding the above crash)
Fixed some handling inconsistencies which could make closing take than it should to process through the quit(..) plug-in calls
Fixed the probable cause of the podcast plug-in causing a hang on loading for some setups due to the OS api used for getting some of the default folder locations just not returning in a quick enough time
Fixed the probable cause of some of the self restarts (e.g. when toggling from legacy to non-legacy mode) not always working as due to the timings of things running it was possible for the new instance to still see the instance that spawned it & would then try to maintain the multi-instance limitations (if enabled) even though that instance is going away
Fixed some issues with the artwork cache handling that could either cause an item to be cached twice or for it to not correctly handle corrupted filepaths in the cache index file preventing new items to be added into the cache
Fixed the skinned button text flickering by moving away from using WADlg_handleDialogMsgs(..) as well as by double-buffering the button drawing (this still needs to be done for static controls but it's been far less obvious afaict)
Fixed a metadata handling quirk related to playlist separator entries that could cause a performance issue
Fixed some of the library view buttons not showing a pressed state if there's a menu open in relation to them
Fixed some performance issues with the handling of the skinned listview & treeview controls & drawing messages
Fixed the podcast downloads & library playlist views triggering more view paint updates on loading than needed
Fixed the web information area on the podcast view sometimes flashing as a white block when it's initially loading (aka having to hook things that shouldn't have to be hooked to get them to behave nicely)
Fixed some right-click / button menu items throughout various parts of the media library not being correctly disabled as expected
Fixed some buttons in the media library views not being hidden as expected despite being flagged to be hidden (e.g. on the library playlists root view & the 'save as' button depending on the vertical sizer position)
Fixed the skinned static text controls sometimes flickering on update &/or being resized by taking full control of the painting & using double-buffering
Fixed the podcast plug-in not always waiting for it's main background thread to close if it's running & WACUP is closing which could cause some hangs on closing
Fixed a playlist loading issue when there's incomplete / non-relative but looks like relative path items causing the path handling to fail but end up trying to enumerate all files on the drive (hopefully this won't break any of the existing wanted instances of relative path handling that some rely on)
Fixed some quirks with the podcast view handling on WINE where the episode list may not be sized correctly & images might be shown on the sub-items when its only intended on the main item
Fixed the playlist separator drawing popping in a while after WACUP has been loaded instead of it being styled as expected when the main playlist editor window appears during loading as well as reducing some of the forced window refreshes that could happen during loading
Fixed a large proportion of the flickering issues that exist when resizing the preferences window however this is not a 100% fix due to how some of the controls work (mainly static controls & group headers)
Fixed a handle leak related to the handling of the taskbar preview jump list which depending on how many items were played during a WACUP session may or may not become an issue
Fixed the tracking of small files (i.e. around 1 second or lower) with the history plug-in either not being tracked (subject to configuration) or would inconsistently be tracked
Fixed playback of long MP3s failing &/or aspects of the UI not working as expected due to Winamp's in_mp3 plug-in mis-reporting the track length so a different approach is now used that should be more reliable irrespective of the input plug-in being used & allows for in this case a 2 GiB MP3 to play correctly
Fixed an intermittent crash when trying to process the available file extensions which could manifest as an unexpected failure across multiple actions but was more likely to occur when a local library scan was triggered
Fixed the move after current action in the jump to file window not always working due to a lifetime issue with the playlist item filepath string it was trying to use not always being valid by the time the reinsert is attempted to be processed
Fixed an issue with the modern skin engine browser where it'll flash with a white background when it's loading by hooking some of the window creation handling to get it to paint the background with a more appropriate colour that matches with the skin being loaded (less jarring but not ideal but that's the 'fun' of skinning at times)
Fixed the installer not always replacing the files it should do for which if you've mis-matched WACUP & Winamp installs can cause the patching to fail &/or WACUP not be able to load correctly
Fixed an issue related to an optimisation with the loading of the output plug-ins to avoid them being left loaded if playback hasn't happened but the preferences window has been opened which in some scenarios could cause them to not be correctly loaded when they were later needed
Fixed the column sorting not being correctly restored in the internet radio view causing it to use the default sorting order
Fixed the in_mp4 plug-in not correctly handling "streamtype" metadata requests which could for some scenarios (mostly affecting modern skins) cause a long hang whilst it tried to parse the whole file for a metadata value that it couldn't really process
Fixed an unexpected crash in the ATF parser likely the result of other issues but caused an invalid parameter related crash which could have been safely handled (as this change introduces)
Fixed items added via the 'add folder' showing massively wrong durations if the "read metadata on file(s) are loaded into WACUP" option is enabled due to an incorrect api re-implementation
Fixed the handling of the bookmarks menu items in the main right-click & agent menus not always working correctly due to incorrectly handling the life-time of the internal objects being used (some of this goes back to around April 2021 but probably further back to the original plug-in that was used to help implement WACUP's bookmarks support)
Fixed the playlist time elapsed / remaining mode in the Big Clock plug-in window not working correctly due to an issue in the plug-in as well as the API it was trying to access for the playlist information
Fixed some other inconsistencies with the handling of going backwards in a playlist especially when invalid / virtual items were within that part of the playlist
Fixed a corrupted gen.bmp for classic skins causing an infinite loop which will then cause the WACUP process to go unresponsive & eventually trigger a crash
Fixed the 'on end of queue' menu in the JTF window not always being added correctly (still not sure because it's using the same as the rest of the dynamically built menu so have instead delayed when it's added which does what's needed so there should be no more incomplete sub-menu / just a bunch of separators showing for it depending on the skinned menu setting)
Fixed a potential issue with the installer if it's not able to retrieve the current installs configuration details so it now does some additional checks to better ensure a valid path is attempted to be used
Fixed the playlist handling to read all of the titles immediately when an item is being added to avoid it either not updating things despite being read or being applied on the wrong item or not being reset if there's no metadata actually read (e.g. for streams / remote server hosted files for the moment - an area that needs to be improved)
Fixed a crash on loading when certain anti-cheat solutions are enabled (still not sure what they're doing but this improves the resiliance to OS apis not responding in a previously expected manner when working on some bitmap files)
Fixed an issue that could cause the artwork to not be displayed on the background of the taskbar preview (if configured to be shown) for some setups
Fixed a crash when trying to change the font used for the taskbar preview
Fixed opening directly to the ReplayGain preferences page not being remembered correctly if not changing the selected tab & then going back to the Playback preferences page later
Fixed some of the Win7Shell thumbnail options not live updating as expected when changed making it harder to know if the configuration changes are being correctly applied or not
Fixed the length of newly added items into the main playlist not being used even if read if the read titles on loading option is enabled (might help with some network stuff too)
Fixed an internal api implementation issue that could prevent the clearing of metadata values (e.g. the comment field) not always working especially if done via a batch edit via the local library views
Fixed the probable cause of some youtube playback issues causing a long hang when trying to stop / advance to the next track which could then cause the player to hang & crash
Fixed the use system keep-alive playback preference option not being correctly saved if the setting is set to off
Fixed the spacebar handling in the main window to better ensure it'll only do the main action as long as it's the only key held down whilst ensuring shift+spacebar if the main window is focused will trigger the currently playing item into view (if not already) in the main playlist editor (to complement the specific handling the playlist editor window gained)
Fixed the current playlist iten not always being correctly scrolled into view on playback changes as expected depending on the playlist spacebar preference & how it was interacting with things (thanks Samey)
Fixed the double-click action on the classic skin playlist editor buttons being incorrectly run if the menu is cancelled when using the escape key
Fixed some inconsistencies with the handling of removing the currently playing item across a number of the plug-ins so a better attempt at releasing any file locks should occur as well as the song-ticker & the current playlist item being correctly updated to reflect the changes (more often it wouldn't update as expected if not already playing)
Fixed some compatibility issues with older versions of the pacemaker dsp plug-in which could cause the occassionly lock-up or window titlebars to be messed up (the fun of a unicode program vs an old ansi plug-in)
Fixed the song-ticker not showing the expected ATF based string (if configured that way) when drag + dropping file(s) onto the classic skin main window due to the string not being triggered to be re-built
Fixed a handling issue with in_mp3 if it's set as the default / fallback input plug-in & a file without an extension is passed to it which depending on its contents could cause a crash to occur (e.g. extensionless mp4)
Fixed a number of issues experienced with getting metadata if the local library is not loaded & only querying the file directly for metadata is being used including slower than expected responses to get a batch of metadata from the file due to it incorrectly re-reading the file for every metadata request attempted
Fixed a number of ui deadlocks that could occur if there was a critical failure whilst attempting to read metadata & a catch all error handler was triggered preventing an internal lock being from freed
Fixed a number of inconsistencies with the handling of title refreshing with the library playlist views mostly due to an optimisation incorrectly using the main playlist information even if that was stale
Fixed waveform seeker rendering issues with module files if the force mono playback setting has been enabled
Fixed slow / incomplete refreshing of the classic skin playlist editor playing status area when changing the options related to the font that'll be used so the change should now be reflected immediately instead of waiting for the next timer update as well as avoiding the background not being reset as needed when switching to show the skinned font mode
Fixed an occassional crash on closing when using a modern skin with the artwork &/or lyrics plugin windows open
Fixed a load time conflict between the library bookmarks & playlist plug-ins due to how some internal strings were being loaded
Fixed an issue if trying to send a zip:// style entry from the bookmarks view to elsewhere due to it being incorrectly treated as an url instead of as a playlist for some code paths
Fixed a multi-threaded access issue with flac files which could cause a crash or unexpected information returned for the file
Fixed a border on the skinned JTF window not being drawn with the expected style
Fixed switching to the manage mode in the JTF window not always causing the manage list to show as there due to a painting overlap issue
Fixed the actual video window used for rendering to sometimes being incorrectly reshown if video playback has stopped
Fixed seeking forward via the keyboard shortcuts when playing youtube urls via in_mp4 not seeking as expected (it's still not great but it shouldn't now stick to somewhere just before the seek was attempted)
Fixed the classic skin video window sometimes being seen or there being a lot of flickering in non-WACUP windows during closing when using a modern style skin with video support enabled
Fixed the podcast download view causing an indefinite hang if opened & then trying to switch away from it / closing WACUP when opening the local library database isn't responding correctly
Fixed some custom metadata values being incorrectly sent via the local library metadata handling when generating ATF based titles
Fixed a drawing issue with the dividers for some of the views if the navigation tree is set to be on the right of the current view
Fixed song titles with ampersand in them not being correctly shown in the notification area (despite doing the processing, the wrong text buffer was then being used so that work wasn't used, doh!)
Fixed OGG Vorbis streams failing to connect &/or stay connected including some issues with HTTPS urls along with some other related issues
Fixed Opus files using the OGG file extension not having their metadata read as expected (e.g. when viewing the Alt+3 / File Info dialog)
Fixed an incorrect handling of the DirectSound device id becoming invalid & not correctly triggering the fallback code to use the default
Fixed a regression (beta build specific) along with some inconsistencies in the escaping of some of the ATF metadata when doing HTTP POST
Fixed the probable cause of an occassional crash seen when closing the format converter window
Fixed a number of issues with the installer related to the use of the WACUP core that could cause unexpected failures on actions that should be working
Fixed the classic skin video window close button not showing a pressed state as expected if using the option to have it use the generic embedded window
Fixed an inconsistency with the handling of bitrate being reported during Ogg Vorbis playback which made it look like the bitrate had suddenly dropped
Fixed all streams via the streaming source plug-in going disconnected incorrectly being treated as though a process close / dsp unloading is happening (this likely explains some of the weird failures that have been reported in trying to either get a stream to connect or it just randomly stopping completely at times)
Fixed some instances of the history & local library plug-ins incorrectly reporting an nde loading failure even if the nde dll has been correctly loaded
Fixed the actual cause of the classic skin main window sometimes showing the text font image as part of the background (mostly related to the song ticker handling & incorrectly re-using an internal HDC)
Fixed the preference option to download the AVS plug-ins to do a better set of checks to deal with blocked / invalid download of the plug-in package
Fixed a display issue with lyrics where intentional empty lines set via a specific timestamp were not being maintained
Fixed the lyrics window not resetting the view position back to the top of the window when what's shown needs to change
Fixed a playback stopping issue with the in_mp4 input plug-in when running under WINE (super weird bug not seen on Windows but the ordering of some clean-up during stopping was the trigger for this)
Fixed the cause of a crash seen when in_mp3 is trying to open an mp2 file to get metadata from it but not correctly validating a parameter to a runtime call (aka hooking the runtime to fix missing checks)
Fixed the audio cd library view not always loading it's contents if there is already an audio cd present in the drive for the selected drive view due to a weird timing quirk with loading vs querying the drive
Fixed the installer sometimes not re-creating the folders it needs which can then cause installation failures
Fixed a number of crashes experienced when trying to play an incomplete MP4 file (more of an issue due to there being video data within the file)
Fixed a number of inconsistencies with the painting of the video window either after minimising when using a modern skin or if using the generic window frame under a classic skin which could prevent the correct inner window colour being used or nothing being painted at all
Fixed the Yule Log plug-in processing thread sometimes being created when there's no need for it compared to how the plug-in has currently been configured
Fixed the podcast downloads view not showing the column sorting direction immediately on loading as expected
Fixed the archive support plug-in (in_zip) not using the thread safe api to get the supported extension list
Fixed the paramater validation of some of the local library apis so they'll now better avoid triggering the database to be loaded when it's not needed against the incomplete / invalid request
Fixed disabling the classic skin main visualisation mode incorrectly not reporting the intended main visualisation mode to the input plug-ins that are checking for it when using a modern skin (years old bug)
Fixed a deadlock that could occur with the Not So Wavey output plug-in during some of the playback trigger events
Fixed an issue with MP4 playback where starting it & trying to seek immmediately to a specific position may not then begin playback as expected (more of an issue if doing playback resume on loading)
Fixed a number of concurrency issues when metadata for the main playlist items are being refreshed to avoid most instances of the title reverting to the filepath or a basic "artist - title" string instead of the expected ATF result
Fixed some problems with the delayed loading of multiple services from the component (w5s) plug-ins which have had a wbm created for them
Fixed a crash on closing if playback is set to repeat the current playlist & none of the items are valid with the album art &/or lyrics windows enabled due to an issue with asynchronous artwork handling
Fixed the installer not correctly setting the folder attribute needed for the customised folder icon to be shown as expected
Fixed a crash on closing if the replaygain processing window is still open
Fixed the resource dlls having gained some unwanted padding over time so they've now been re-saved to get them to the expected size (nothing bad, just how some resource editors work)
Fixed the internet radio view search field on skin change not updating as expected
Fixed some inconsistency with the handling of %length% & %length_seconds% when ATF based titles for items are transfered from the local library into the other areas of the player (e.g. main playlist editor)
Fixed a number of flickering / drawing related issues with the JTF window mostly related to the mess that was skinning of the header groupbox (the item list may still flicker at times which still needs to be fully resolved)
Fixed the classic skin song ticker (& probably more) not reverting to the default string if the main playlist has been cleared whilst playback is active & then playback is stopped (this would otherwise leave what was playing as the current title which seems odd when you look at it vs a now empty playlist)
Fixed the classic skin currently playing timer not working correctly if something is playing & the main playlist has been cleared (often showing as 0:00 instead of the expected playing / remaining time)
Fixed the classic skin song ticker not always being drawn immediately or at all at times (if the autoscroll option was turned off) which was most noticeable when going from a modern skin to a classic skin
Fixed a drawing issue with the skinned tabcontrol after it's been loaded & then changing the selection due to an alignment / overlap issue
Fixed a crash on closing if the edit playcount dialog from the history view was left open
Fixed the open folder option on the edit playlist entry dialog within library playlist views not working as expected
Fixed the flickering of some preference page elements when resizing the preferences window (most obvious on the modern skin preference tabs)
Fixed the end of the help message on the Taskbar -> Thumbnail preference tab being clipped / showing garbage due to a missing null character
Fixed the help message on the Archives preference page not showing as expected as well as not being clipped / showing garbage due to a missing null character when that was initially resolved
Fixed the vis_classic configuration dialogs not using the expected font for the OS to draw causing a pixelated font to incorrectly be used
Fixed the uninstaller incorrectly reporting that there's a folder to look into when it's been completely removed
Fixed the handling of the classic skin spectrum analyser so it should now be able to show the upper thick band for media that contains data in the upper 18kHz+ range (most doesn't)
Fixed the config handling of the repeater plug-in to avoid an issue with the custom rewind / fast forward seek times being incorrectly set to zero along with only saving out non-default values
Fixed a resource leak when saving the history & local library databases which over time could cause crashes, failed database saves & other issues due to resource exhaustion on the system if left running for days (assuming it got that far) which was more pronounced when running on a machine with many cores (more cores, more leaking)
Fixed an instance where multiple attempts to update the main playlist could cause the internal list to end up being corrupted
Fixed an m3u8/m3u playlist loading error that could cause a recursive loop if the file isn't what it's actually been named (e.g. an mp3 with the m3u file extension)
Fixed a handling issue with the database handling that in some instances due to bad input data for a record could trigger a crash (a lot of other things have to have gone wrong for this to actually occur)
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 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 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 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 a number of compatibility issues with the interaction between the media library window & the modern skin engine (e.g. the close button on the window not updating other parts of the ui when using the SimpleX skin or the media library window not being shown if changing from a classic skin to Winamp Modern, closing WACUP & then starting WACUP)
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 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 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 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 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 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 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 artwork plug-in when in details mode trying to draw items that will not be seen
Fixed the probable cause of a crash seen with some potentially corrupted MP4 audio files
Fixed a concurrency issue with the load of artwork in the albumart & lyrics windows
Fixed an issue with the classic skin main window painting under limited OS memory / resources
Fixed the artwork handling to ensure any asynchronous calls will have their provided callback called in an asynchronous manner instead of doing it immediately which could cause issues if done on the main ui thread
Fixed deadlocks experienced with the artwork & a lesser extent the lyrics windows (related to the above changelog line though was able to happen for non-cached artwork when the call was already asynchronous)
Fixed the probable cause of a lock-up that can occur when updating the podcast feeds where it could stop part way through the feeds & not be able to continue processing the remaining feeds without restarting
Fixed an issue with resolving shortcuts when processing folders not always working as expected due to a multi-threaded initialisation not being correctly applied
Fixed a number of issues including it crashing with the handling of shortcuts to another folder when scanning folders especially when there's the potential for a looping back to the folder(s) already checked
Fixed the update dialog not always being shown when running in legacy mode due to the loader process not staying running for long enough once the child process has been spawned (not an issue for non-legacy)
Fixed aborting closing incorrectly causing the main vis & related aspects pulling from that data not running due to the worker thread responsible for processing having incorrectly been destroyed
Fixed keyboard shortcuts either not working or if not correctly handled triggering the OS generic MessageBeep(..) (likely an accessibility thing to indicate invalid / unhandled input) due to how some of the child windows were attempting to pass those actions onto the main window so they act more like process wide actions (e.g. R to toggle repeat or Alt+3 to view the current file information)
Fixed a building regression with libsndfile which could prevent files played that have non-integer samples outside of the -1/1 range not being correctly handled causing clicks & pops (this will bring back a slower loading of some wav files)
Fixed some of the addition tool update checks (e.g. IT / BT) to better deal with the response from the site not being as expected
Fixed the probable cause of a crash seen by some installs due to a buffer used by the equaliser not being initialised as expected during playback (possibly cross-fading related)
Fixed a hang on closing that could occur if the CD plug-in was enabled & the close action occurred whilst a device poll was in progress to figure out if a CD was present or when getting the title information
Fixed a number of handling issues with the processing of data from the input plug-ins for the visualisation plug-ins that could cause some of them to not behave as expected (e.g. AVS superscope)
Fixed the probable cause of a crash seen during loading related to an issue in the settings cache handling when dealing with the reading of a struct style of ini entry
Fixed an issue for some of the old 3rd party plug-ins where trying to override the settings file(s) used could trigger a crash on loading
Fixed a compatibility issue preventing the gen_cover.dll plug-in from finding the video window when despite it being there for it to find
Fixed a performance issue related to the exporter plug-in during process closing
Fixed a crash when accessing the Not So Wavey config page due to an api call not being correctly initialised
Fixed in_zip crashing when trying to process some xSF based formats
Fixed in_zip not correctly extracting all xsflib files for playback
Fixed in_url not correctly initialising COM in it's playback thread which could prevent in_dshow from initialising correctly causing it to crash
Fixed a painting issue on the channel list with the podcast view during view loading
Fixed a corrupted file extension string from the in_dshow plug-in causing any file with an extension beginning with M being handled by it (e.g. this could break miniXsf handling)
Fixed some odd crashes if starting & closing the WACUP process really quickly (not normal behaviour to be doing but something caught during recent stress testing)
Fixed a timing issue which could prevent podcast related downloads (e.g. feed updates) from being seen due to the download thread missing they'd been added & instead it exiting too early (would appear as the podcast navigation node just spinning & no further attempts to add anything else succeeding)
Fixed some of the checks that some of modern skins are using to determine if running under WACUP to not rely on physical files existing which in some instances broke features depending on the install setup
Fixed the Big Clock plug-in not rendering its visualisations if starting WACUP with autoplay on start-up enabled when trying to restore playback on an audio cd (due to it taking too long to report it's playing & isn't temporarily paused)
Fixed audio cd playback not always working as expected with autoplay on start-up enabled
Fixed issues with audio cd metadata look-up not working consistently if running without the media library core enabled
Fixed a fundamental implementation issue with the audio cd metadata cache database which was causing a number of issues including crashes (this will however involve a complete reset of the database as there's no viable way to recover any of the custom metadata &/or previously obtained Musicbrainz responses which hopefully won't be too much of an issue for those that rely on this functionality - some pain now to resolve issues going ahead)
Fixed a dead-lock when there's a failure to add a podcast download to the background processing
Fixed an issue where the colouriser api wasn't correctly keeping all instances added to it causing some to then not be called as expected (e.g. missing files or the show playlist flash)
Fixed the milkdrop plug-in being too slow to close if it's still processing the preset list when WACUP is trying to close
Fixed turning off the missing files highlighting in the main playlist editor not working until restarting WACUP
Fixed video only MP4 files not playing more than a second or so of the file as well as not reporting a length
Fixed the probable cause of audio going really slow when playing some MP4 files with a video part due to the prior video decoder not being able to keep up which then broke the audio synchronisation handling
Fixed a crash on closing if the podcast downloads view is set to be automatically removed when there's no downloads remaining to be shown in it
Fixed a number of issues with the service manager in relation to repeat calls to register callbacks that have already been added which was the likely cause of some of the modern skin failures (this allows un-doing a prior change that intentionally broke some aspects of live colour theme changing where it'd cause a crash after a few changes)
Fixed a number of memory leaks with the podcast handling (something that's sadly been on-going for far too long) which should improve the experience for long running instances so they don't run out of memory
Fixed a database handling issue which prevented the purging of old internet radio streams during the generation of the database file
Fixed some of the flickering that might appear on the classic skin preview in the preferences but it's still going to occur for now
Fixed more instances of dialog titlebars appearing to show gibberish but was due to incorrectly mapping ansi dialog calls to unicode as well visualisation plug-ins not being hooked as expected at times
Fixed an issue sometimes preventing the currently selected skin from being remembered between instances
Fixed the podcast plug-in doing more file existance checks than it really needs to be doing to lessen the impact on slower drives & reduce some of the overhead in processing the feeds on update
Fixed a number of performance related issues with the tataki replacement (is more to be done on this later) & a specific fix for the BBM based skins which gets most of the modern skins tested down to 'very low' with the odd 'low' power usage value from the OS task manager when WACUP is left in an idle state (i.e. not playing anything) when some modern style skins were easily sitting in the 'moderate' to 'high' power usage states!
Fixed clearing the main playlist not always having the expected song ticker string appear when using a modern style skin once the title is updated on end of file
Fixed an issue with the artwork image cache which could prevent it from always returning the highest quality image & cause some ui aspects to then work with lower quality already re-sized images (e.g. mis-reporting the size of the artwork on the file info / alt+3 dialog)
Fixed a crash on the skin management preference page
Fixed a crash due to an incorrect validation on EOF
Fixed a number of small memory leaks which depending on the action & changing active focus of WACUP could cause problems over long running instances
Fixed incomplete update attempts of the internet radio database (e.g. due to a crash) to now re-trigger the download to avoid later update failures
Fixed the waveform seeker plug-in trying to create new processing threads when WACUP is attempting to close which could in some cases cause a crash during closing
Fixed a resource leak when in_mod is requested to process a file which is not something it is able to handle due to file extension re-use of unrelated files
Fixed a resource leak when using the Alt+3 / File Info dialog due to the lyrics tab not correctly cleaning up it's background thread whether lyrics exist or not
Fixed a painting issue of the classic skin playlist scrollbar when in double-size mode not updating the full scrollbar area when more playlists items area added causing the scrollbar position to change
Fixed a timing issue that could cause the podcast view to incorrectly indicate there were no feeds (hiding buttons & showing a related status message) when there were known feeds loaded
Fixed a display issue on the lyrics tab of the alt+3/file info dialog where it was not always correcting the linebreaks to ensure they appear correctly within the edit box
Fixed the priming of the artwork cache not correctly handling things causing the memory needed to maintain copies of the artwork to be doubled & not released until the process completes (e.g. 8MB of cached artwork would leave 8MB of data allocated when it'll never be used nor released when the cache updates during the running instance)
Fixed the main window visualisation not entering the expected stopped playback state when a SID file ends & no other file is attempting to be played afterwards (manually stopping did not show this issue)
Fixed an issue with priming the artwork cache where it could incorrectly ignore what was known to the cache just after it's been primed if the request for artwork will always be a smaller resolution image than the request being made (e.g. asking for a 600x600 image when the source is always going to be 574x574)
Fixed a crash when using the format converter whilst having the preference page for the plug-in still open
Fixed a slew of performance issues related to the bookmark handling especially during initial loading if it's a selected library view with a large bookmarks file (e.g. 7.5K of entries which goes from approx. 6 seconds down to a fraction of a second on my dev machine)
Fixed the Win7Shell plug-in always reading the bookmarks file on loading even if set to not show them in the jumplist
Fixed the tooltips on the embedded classic skin windows not always having their positions updated when the window size has changed
Fixed the installer not always ensuring that the local VS2019 runtime folder is installed if some of the runtime files are missing
Fixed a message handling issue which could cause changing the modern skin colour theme via the menu actions to be double processed
Fixed an issue with the colour theme handling of the skinned scrollbars ending up as black if a number of theme changes are applied (possible by
Fixed an OS call made by the Win7shell plug-in incorrectly being hooked by the WACUP core which was causing higher cpu load than intended with the checks the plug-in is doing related to the taskbar preview
Fixed loading of the bookmark menus especially the agent menu or if the settings cache was disabled being really slow when having a reasonably large bookmark & related category files to process
Fixed the Discord & last.fm related preference pages having a tab on them when there's no need to be like this (lazyness on my part when creating the preference pages for them ages back)
Fixed a number of ui hangs when first opening any of the preference pages related to the Yule Log plug-in due to possible slowness in the loading of the local library database whilst making the previews
Fixed the FLAC encoder not correctly handling 24-bit audio data causing invalid files to be generated
Fixed a slew of AAC decoding related issues & inconsistencies compared to the re-used aacdec.w5s from 5.666 as part of it's replacement (e.g. missing mono output, incomplete waveform seeker rendering)
Fixed the classic skin windowshaded mode scrolling by 2 lines instead of the expected 1 line due to the mouse scrolling option being incorrectly applied to that mode
Fixed MP4 files incorrectly playing despite aspects of the UI indicating that the player is meant to be paused when WACUP is set to use the paused on load autoplay option
Fixed setting a rating outside of the local library views not working as expected as well as rating changes not being correctly reflected in the right-click menus in the playlist & main window menus
Fixed the classic skin song ticker not showing as expected when switching from a modern skin if autoscrolling is disabled
Fixed a performance issue with initial loading of the classic skin songticker right-click menu due to the rating sub-menu
Fixed duplication of the out_sqr preference page when opening the preferences & the dynamic loading is being used due to no playback having yet happened (the first one would show an unable to load message)
Fixed some regression issues with non-unicode output plug-ins being shown on the output plug-in preferences page
Fixed some inconsistencies with the shift+space to force the current main playlist item into view if done via the classic skin equaliser window as well as the action not flashing (if configured to do so)
Fixed a sorting issue on the output plug-in prefs page when dealing with non-unicode output plug-ins
Fixed Ctrl+Shift+4 (sort the current playlist by duration) not working in the main playlist editor window
Fixed an NDE handling issue which could cause a crash during closing with some of the maintenance tasks
Fixed a drawing & handling issue related to the rating element of the gen_classicart window
Fixed a handling issue when multiple input plug-ins are trying to handle the same extension & it was possible to keep retrying the already attempted input plug-in
Fixed a number of memory leaks related to poor handling of some broken files preventing the intended clean-up not always being run
Fixed a crash that could occur in the Not So Yasapi playback device setup handling
Fixed pressing F5 when the media library navigation tree is focused not triggering a skin refresh
Fixed some quirks with the win7shell plug-in & how it tracks the need to provide active previews under Alt+Tab & Win+Tab along with minimising polling checks
Fixed a crash which could occur after the skin selection setup dialog is shown & WACUP is then allowed to continue to be loaded post-setup (not sure how this wasn't causing a failure for all setups)
Fixed a random crash at the end of the main installer process which could prevent some of the setup clean-up being correctly done
Fixed a main playlist updating issue if using advance on next & a playback stop event then happens causing the wrong playlist item to update
Fixed a conflict on loading with MP4 based files when trying to autoplay & the library history plug-in is also trying to restore the last playback position which could cause the current playback position to jump to the start of the track although playback was working from the expected position (this now has the autoplay action take precedence & can also avoid the history database being loaded too soon to help reduce loading times)
Fixed some of the plug-ins incorrectly triggering a load of the local library database when not expected which could depending on the size of the database cause a noticeable ui related lag (still can occur but it's less likely)
Fixed the modern skin playlist window file menu getting corrupted due to an issue with the live editing of the library view results which are added to the menu
Fixed the probable cause of a conflict on closing which could cause a hang / crash between the Win7shell & Win10shell plug-ins
Fixed the probable cause when playing MP4 based files & fast switching what's playing to another MP4 based file crashing for some (still not 100% certain of this being resolved but it's better now than before)
Fixed the probable cause of a failure in the notsoyasapi ring buffer when getting called in an unexpected manner
Fixed a deadlock in notsowavey related to starting to open playback when an existing playback attempt had occurred
Fixed the link on the error reporting preferences page not opening the crash reports folder if it's found that the folder is not empty but no valid crash report files were found within it to avoid confusion
Fixed a timing quirk with the priming of the artwork cache on loading (more so an issue under a debugger) which could cause the cache to not be correctly initialised with the known image data
Fixed the waveform seeker plug-in incorrectly trying to refresh it's window on loading when it's not yet been created (this showed up recently due to other improvements reducing the delay for things to happen which ironically was then causing WACUP to be much slower to load)
Fixed the waveform seeker plug-in trying to draw empty lines & a few other things that caused it to be painting more than needed
Fixed processing of MP4 based files via the file conversion apis (e.g. for waveform seeker previews) being slow (still not great but it shaves at least a few seconds from longer files being processed)
Fixed a number of crash types not always being detected by the crash handling (e.g. heap corruption) so it's possible the builds might throw more errors due to this (a good thing but bad as more needs fixing)
Fixed a crash with in_mp4 on attempts to restart a file very quickly (caught by the crash reporter changes above)
Fixed the internet radio plug-in sometimes causing a crash whilst it's doing clean-up of the view results (was more obvious under Windows 7 but could occur on other OS)
Fixed failures to start a stream with the streaming url plug-in causing it to remain in a sort of playing but it's not playing state (now it correctly reports an EOF event which should also better ensure the failure message for the playlist item will be shown)
Fixed some updater related issues due to not correctly handling COM setup & due to issues with some recent interim builds
Fixed a number of issues with the handling of artwork being changed which could prevent it being seen as changed in the local library along with not updating in other windows
Fixed updating artwork not generating a valid image file if the source & destination format were the same (per the artwork writing preferences) which could cause other failures
Fixed the artwork cache not correctly removing all images related to a file when it's artwork has been changed which could cause inconsistent behaviour for the other plug-ins
Fixed editing the metadata of some MP4 based files causing them to become corrupted
Fixed the probable cause of a hang / crash when trying to access an invalid MP4 based file due to shared file access not being correctly applied across all internal read calls
Fixed a crash in the streaming source plug-in when stopping the streaming server & there was an active output stream
Fixed a hang on closing if the internet radio plug-in is unable to complete downloading it's updates in time when signalled to abort as part of process closing
Fixed the key name being clipped on the FLAC metadata tag viewer on the alt+3/file info dialog
Fixed a hang crash when trying to parse an invalid lrc (lyrics) file due to a missing closing bracket along with not displaying multi-bracketed lines correctly
Fixed some issues with the undo playlist plug-in if the machine being used is suffering from low memory availabilty
Fixed some error handling related issues with the NotSoDirect output plug-in to better deal with device failure / unexpected changes
Fixed some quirks with the the internal look-up of the supported file extensions on file / folder processing
Fixed a deadlock that could occur in the Not So Direct output plug-in on device failure as well as improving the overall handling related to failures to avoid us crashing
Fixed the crash reporter incorrectly starting another instance if the auto-restart handling is enabled but due to memory related issues the new instance couldn't be run which then triggers the crash reporter to do a silent handling on initial loading but that would incorrectly then follow the auto-restart option when it's not needed
Fixed the possible cause of a few on closing related crash issues seen from the crash reports due to code being run when it's no longer appropriate
Fixed a crash when trying to play corrupted FLAC files due to incorrectly validating some of the reported information when attempting file playback
Fixed the notfound image handling not correctly looking within the root of the settings folder after it's first checked the current skin folder
Fixed the possible cause of an issue seen with the podcast plug-in due to some non thread-safe string conversions being used which may have corrupted the process stack &/or other in-process memory blocks
Fixed a hang on closing if the history plug-in has gotten into an invalid state in not being able to process the pending updates which would cause it to get stuck in a loop & not be able to complete close
Fixed an issue with FLAC playback causing pops for some files if replaygain was enabled but no information was found for the file when using 24-bit output mode & a positive replaygain preamp value was set
Fixed an issue due to mismatched COM initialise & destruction calls which could in some instances cause a crash to occur (more likely during quick start & close of WACUP)
Fixed the main window visualisation going into a bouncing mode if the buffer & fading configuration with Not So Direct were out of sync with each other (e.g. fading larger than the playback buffer size)
Fixed the visualisation preference page to better handle double-clicking on the start/stop/configure buttons to better handle some of the visualisation plug-ins that don't behave well with quick load/unload
Fixed a hang on closing if the prompt about replaygain processing isn't seen or responded to in a timely manner
Fixed the waveform seeker not always rendering the current file on loading when embedded in the Big Bento Modern skins (timing quirk between loading & window creation could prevent it from working always)
Fixed a number of issues related to trying to play high samplerate files (e.g. main window vis not working as expected)
Fixed resuming playback on WAV based files not working as expected especially if pausing is involved during that action
Fixed a conflict related to different implementations handling Winsock which could then cause connections to fail (e.g. going from playing a YouTube video, then playing an MP3 stream & then trying to play another YouTube video)
Fixed seeking in MP4 files with video tracks being slow when the overall video support in WACUP has been intentionally disabled
Fixed the installer not always restoring the prior running agent mode instance especially if the option to run WACUP after install is unchecked
Fixed the check format option with the Not So Yasapi plug-in incorrectly preventing playback due to incorrectly handling the WASAPI api response
Fixed a number of issues related to 24-bit FLAC playback via in_flac & in_wave (now used as a fallback if in_flac isn't present / enabled) & other issues depending on the master playback mode setting
Fixed a number of files being left around if making a WACUP install is aborted before it has fully been attempted (it is possible that some files due to how things currently work in the installer will require a restart of the system for them to be automatically removed though the installer will prompt if any can be manually removed earlier)
Fixed the uninstaller not always removing the entry from the add/remove/uninstall programs list
Fixed the main playlist scrollbar not always being refreshed correctly when changes occur (e.g. deleting the last playlist item that requires the scrollbar to be shown)
Fixed the main playlist scrollbar being incorrectly drawn too short when using a modern skin & if previously under a classic skin that had been configured to use double or triple scaling prior to using the modern skin
Fixed a possible crash if switching between modern & classic skins related to mishandling the internal drawing state of scrollbars
Fixed the credits dialog not showing any text if the OS doesn't report any fonts that GDI+ can use or it showing incorrectly formatted text (mostly an issue under WINE)
Fixed inconsistent handling of the play/enqueue/enqueue & play/double-click/drag & drop from the podcast view so those actions should now always generate the results from oldest to newest which seems to make more sense when it comes to consuming podcasts compared to all other library views
Fixed the F8 action to enter a path in milkdrop to change the active preset directory not working & reporting all input as "invalid path"
Fixed in_cdda not always aborting as soon as it should during closing which could cause a crash
Fixed some of the modern skins not showing what's playing from some streams as expected when in_mp3 is being used due to it not stripping linebreaks
Fixed seeking in MP4 based files being slow & sometimes causing the main ui to hang whilst seeking
Fixed going to the portables preference page & then to the agent tab on the notifcation area preference page incorrectly showing that WACUP is running in portable mode
Fixed the classic skin main visualisation in vu meter mode getting stuck on what was last shown if changing to a video only file
Fixed the playback control notifcation area icons not being removed if the main notification area icon isn't enabled
Fixed jumping to another track then expected when double-clicking in the main playlist if the advance to next on stop option was enabled & playback was currently paused
Fixed the skip update messagebox on the update dialog not being correctly parented causing it to appear behind the dialog & allowing multiple messageboxes to be created
Fixed the updater not getting the correct version to compare which could cause mis-reporting of there being or not being an update depending on how the mismatch happens
Fixed the installer not giving the expected visual indication of what's going on during installation after updating to the recent NSIS 3.09
Fixed the podcast add / edit dialog not remembering it's last position when moved
Fixed a crash when exporting some of the database files to csv if there was an issue in the conversion process (e.g. due to prior corrupted data within the db files)
Fixed some of the open / save filename dialog filter strings not being correctly double null terminated which could cause random junk or the filter to not work right
Fixed some invalid podcast feeds not being correctly reported & the podcast view not always live updating as expected for such issues
Fixed a number of object lifetime related issues which could cause some issues mostly during loading & closing (aka odd crashes & possible preference corruption)
Fixed the installer incorrectly trying to run some clean-up actions on closing if it's been cancelled before setup has run through normally
Fixed the settings cache incorrectly handling ini keys with trailing whitespace characters which could cause some plug-in configuration changes to not be read &/or saved as expected (seen with NotSoFatSo)
Fixed the tooltip.maki causing some modern skins to trigger a guru meditation error when a tooltip needs to be shown due to incorrectly checking for the layout to use
Fixed the probable cause of a crash during loading when the splash screen was enabled (this was more likely to occur if classic skins hadn't been set to be scaled)
Fixed the wrong skin being selected via the skins sub-menus if the menu has already been viewed & the contents of the skins folder is modified
Fixed a visualisation plug-in handling issue which could cause a process hang / crash if the plug-in was taking too long to respond whilst playback is happening & calls are made to give it format details
Fixed some metadata field mappings not matching to expectations seen in the preview build or when using other input plug-ins (a local library rescan will be required to get these changes to appear)
Fixed the root bookmarks node in the library not correctly reacting to attempts to drag & drop it onto the main playlist / other library nodes
Fixed some further inconsistencies with the handling of vorbis comment tags across the different input plug-ins which currently handle them
Fixed a slowness in trying to obtain metadata from APE files which aren't valid media files & are the AVS helper dlls having been or attempting to be added into the local library database (aka too many things re-using file extensions)
Fixed some quirks with the processing of embedded artwork mimetypes for some files where it's filled with junk data
Fixed a notsoyasapi crash on WINE if there's no enumerable output devices which might also apply to some Windows installs too
Fixed a number of issues with restoring the last selected child playlist node (when enabled) if the names of the playlists contained duplicates
Fixed a number of issues with trying to set the icon for the running process in the taskar especially if it's set to group them without text labels (this may still not work as the OS requires an appropriate shortcut e.g. in the start menu for the OS shell to store / read the appropriate icon from)
Fixed some issues mostly with the main visualisation with lower samplerate playback when using the notsodirect output (still not 100% ideal but it now shouldn't be causing a lot of ui related lag)
Fixed the reproducible memory & handle leaks in the notsodirect & notsoyasapi output plug-ins which depending on how many items are played could become an issue causing WACUP to crash / act weird
Fixed triggering a main playlist undo event causing many playlist modified notifications when only one is needed which for larger playlists should make doing an undo be much quicker to complete
Fixed some inconsistencies with the not found image handling with the bundled skins (is still not ideal but it's the best to do for now)
Fixed the local library & few other aspects not seeing some of the playable formats if there's not a directly reported input plug-in but it is possible to indirectly handle the format with other plug-ins present in the install
Fixed the probable cause of some issues for those using the SHOUTcast DSP plug-in v2.3.5
Fixed a memory leak if the SHOUTcast DSP plug-in v2.3.5 is trying to display an artwork preview via it's configuration dialog (that was a tricky one to patch around within the WACUP core)
Fixed some inconsistencies with how in_url & in_mp4 respond to %type% & %streamtype% ATF values so it should now be correct including if the in_mp4 preference option to only play audio is enabled
Fixed an odd crash in the bookmarks plug-in due to a memory allocation failure
Fixed the classic skin song ticker & taskbar text depending on how they've been configured not reverting to the current WACUP build string when the main playlist has been cleared along with some quirks with them also not updating when doing a playlist undo action to restore things back to the pre-modified playlist (this is a partial regression & covers some cases that hadn't been coded for previously)
Fixed the portables library navigation node just showing 'P' when it's trying to indicate things are happening (needed to hex edit the dll to use the correct buffer size)
Fixed the waveform seeker plug-in not correctly handling files played from archives causing it to reprocess those files & generate numerous cache files that are not used again
Fixed resizing the right-hand attached generic skinned window not snapping as expected to the bottom edge of the left-hand window if the top edge of both windows were already aligned (classic skin issue)
Fixed the playlist loaders treating native paths under WINE incorrectly causing them to have the fake Windows path prepended to them causing them to not play when loaded on the next instance
Fixed some other actions not working as expected when native paths under WINE are involved (e.g. the waveform seeker plug-in wasn't able to process files)
Other misc small changes as part of trying to resolve some of the likely skinned scrollbar related crashes that have been experienced (it's better than it was but there's still a possible crash that'll occur)
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 the use of the Winamp 5.666 media library core plug-in (gen_ml.dll) to now be an all WACUP provided implementation as part of the WACUP core (there's an easy option on the Media Library preferences page to enable or disable the whole media library feature) though there will be some issues / missing features with this for the interim (mostly due to a lack of skinned menus) but now is the time to use it :)
Removed the tweeting support from the Yule Log plug-in (almost halves the file size of the plug-in)
Removed the 'auto-hide' option from the album art plug-in since it hasn't worked for a while & enabling it causes other issues (a lazy 'fix' but sometimes less is more)
Removed the use of the Winamp 5.666 local library plug-in (ml_local.dll) by WACUP even if there's still some comparative features missing with the ml_ll.dll replacement
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
Removed installing the libexpat based xml.w5s with the 64-bit installs as there's nothing that uses it (it's still needed with the 32-bit version as the likes of gen_ff, in_mp3 & portables support need it)
Removed installation of the demo.mp3 when making a new WACUP install in light of recent events with Winamp that no longer make it feel appropriate to install it (this would have happened anyway once WACUP is completely free of using the Winamp core as is already the case with the x64 test builds)
Removed sending the IPC_PLAYING_FILE notification if running under safe mode as only IPC_PLAYING_FILEW is needed in that situation by the plug-ins able to run (this relates to disabling it completely with the x64 build where the unicode version is all that is used)
Removed the option from the album art plug-in to auto-hide itself if a modern skin is being used as this is no longer required (if the plug-in is not liked & the modern skin engine's basic album art window is preferred (for those skins offering a dedicated album art window of their own) then the plug-in can be easily disabled via the General Purpose plug-in preferences)
Removed h264.w5s as its no longer being actively used & some more of the w5s that were being installed which on further investigation never get used &/or the plug-ins they related to aren't used with WACUP
Updated the Bento / Big Bento skins to v1.2.5 (9 Sep 2023) to improve the handling of information shown in the main player area (e.g. current bitrate) along with missing characters for the playlist editor information area where the current playlist length / selection size is shown, removing the show artist / info buttons & fixing an issue when toggling windowshaded mode if the browser is not set to be used
Updated the Big Bento Modern skins to v1.2.2 (9 Sep 2023) - remember to say thank you to victhor for this as it's been a long time coming & is worth it
Updated the Winamp Modern & Winamp Modern Holiday skins to v1.4.2 (6 May 2023) - remember to say thank you to Eris Lund (0x5066) for this quality of life update for this skin
Updated ASAP (in_later.dll) to 6.0.0 (21 Sep 2023)
Updated brotli (libcurl.dll) to 1.1.0 (31 Aug 2023)
Updated cacert.pem to latest (22 Aug 2023)
Updated libcurl (libcurl.dll) to 8.3.0 (13 Sep 2023)
Updated libdiscid (discid.dll) to 0.6.4 (2 Mar 2023)
Updated libexpat (xml.w5s) to 2.5.0 (25 Oct 2022)
Updated libflac to 1.4.3 (23 Jun 2023)
Updated libjpeg-turbo (image.w5s) to 3.0.0 (3 Jul 2023) which adds a range of changes including lossless support with a much larger dll
Updated installer to be built with NSIS 3.08 (25 Sep 2021) which marks passing over 21 years of NSIS!
Updated in_xsf to the latest Git commit from 21 Mar 2021
Updated libnghttp2 (libcurl.dll) to 1.56.0 (4 Sep 2023)
Updated libogg (libvorbis.dll) to 1.3.5 (3 Jun 2021)
Updated libopenmpt (in_mod.dll) to 0.7.3.19618 (9 Sep 2023)
Updated libopus (libopus.dll) to 1.4.0 (20 Apr 2023)
Updated libpng (image.w5s) to 1.6.40 (21 Jun 2023)
Updated libsidplayfp (in_sidious.dll) to 2.5.0 (2 Jun 2023)
Updated libsndfile (libsndfile.dll) to 1.2.2 (13 Aug 2023)
Updated lzma (lzma.dll) to 23.01 (20 Jun 2023)
Updated minizip-ng (zlib.dll) to 4.0.1 (4 Aug 2023)
Updated mpg123 (mpg123.dll) to 1.31.3 (19 Mar 2023)
Updated Monkey's Audio (in_ape.dll) to 10.22 (14 Sep 2023)
Updated OpenSSL (libcurl.dll) to 3.1.3 (20 Sep 2023) which bumps up the dll size more than a bit
Updated Patreon list (10 July 2022)
Updated pugixml to 1.13 (2 Nov 2022)
Updated rapidjson to the current github commit (25 Mar 2021)
Updated Spout2 (vis_milk2) to 2.007.012 (29 Aug 2023)
Updated taglib (tag.dll) to 1.13.1 (1 Jul 2023)
Updated the copyrights to 2022
Updated universal runtime files (Microsoft.VC140.CRT folder) (newer is 350KB smaller)
Updated unrar (unrar.dll) to 6.2.11 (17 Sep 2023)
Updated vorbis-tools (in_vorbis.dll) to 1.4.7 (21 Jan 2021)
Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 16 Sep 2023 as well as updating to use the more recent ffmpeg files
Updated WavPack (in_wv.dll) to 5.6.4 (19 May 2023)