Added an experimental /noui command-line mode which tries to have WACUP run without any of the main ui elements which might be useful for those using it in scenarios where the ui really isn't needed
Added an export playlists feature which will copy all of the known library playlists into a user specified folder whether they're WACUP managed or not (this will not copy the files the playlist reference)
Added an export sub-menu to the root library playlists view right-click menu which hopefully will make it more obvious there is an export action (previously named 'save as') available if the view size prevents the button from being seen
Added a /RESETMODERNSKINPOS command-line option which for now will just remove the studio.xnf to help get things back to loading when there's an issue with the modern skin engine plug-in loading the file
Added an additional start menu shortcut to make it easier to run WACUP via its procdump based crash collector for those having issues with it crashing on loading & aren't comfortable using the command-line
Added a WACUPified version of the HivelyTracker input plug-in which is now based on v1.9 of the library allowing WACUP to support AHX (Abyss Highest eXperience) & HVL (Hively) tracker formats (this removes the need to try to use the older & buggier in_ahx plug-in which led to look into getting this added)
Changed the crash reporter handling to try to be a bit more permissive for some of the exceptions being thrown which has been causing a crash to occur when it's not actually a crash & would've been handled normally (e.g. hopefully the open / add file / folder dialogs when dealing with offline network shares)
Changed the playback of archives to now do it within a worker thread (much like is done with the in_url plug-in) instead of having it wait in the play() method (I should've done this 20 years ago when the plug-in was first created) to avoid it blocking the main ui & triggering a hang crash for some (e.g. due to a lot of files & a high compresssion level which can just be slow to process to the needed part of the archive to extract out what's then needed)
Changed the handling around loading an h264 decoder to try to avoid a full process failure as seen from a crash report along with it trying to use the openh264 implementation as a fallback if the default Media Foundation handling fails
Changed the installer & core interaction so they can now better determine if the close triggered is due to an update attempt which will silence some of the on closing prompts to make it less of a click-a-thon when the user has already signalled that they want to have things close though this won't be seen until after this build has been installed (some actions such as in-progress podcast downloads will still cause a user required interaction to be interacted with)
Changed the Yar-matey! Playlist Copier (gen_yar) plug-in to now prevent WACUP from closing if files are being copied since it requires user interaction to cancel the OS file copy action that's being used to avoid it potentially hang on closing due to a long running copy still being in progress
Changed some of the playback core handling in relation to legacy input plug-ins in an attempt to resolve some of the weird crashes seen especially when the equaliser is enabled along with crossfading output
Changed some of the dialogs to better indicate the WACUP build type being used (i.e. x86 vs x64) to make it easier to figure things out from a support stance
Changed how the current main playlist item title & taskbar text is updated during initial loading especially if the playlist contents are changing to help avoid an often noticeable delay (1-2 seconds)
Changed the local library handling around metadata edits to avoid auto adding unknown items into it if the auto add on playback is disabled based on feedback
Changed the calculated width of the skinned buttons to minimise the padding used around them as well as resolving the centering of the text in the dropdown buttons being off for some fonts so more of the buttons can be seen without having to lower the font used &/or resizing the window
Changed how the local library view updating is triggered such as from playback changes since the playcount needs to be updated so it should now resolve most of the complaints of it compared to what ml_local wasn't doing (different plug-ins behave differently however much you inform some users) so it'll avoid most of the unnecessary updates that were happening unless the file should now appear in the results
Changed the locking done in some of the output plug-ins to try to resolve the odd deadlocks that keep happening
Changed the nde db loader to better handle some of the loading failures due to them being older corrupted copies in an attempt to avoid a full process crash & instead try to leverage any backups available
Changed the SMTC handling so it will now provide more metadata (e.g. genre) & playback information (e.g. playback position) which should improve integration with other tools that can query the SMTC information
Changed the Big Clock playback status checks to no longer see if a CD item is playing as that could in some instance cause a main ui thread deadlock to occur when the need for that check is no longer required from other work done a while back
Changed the sc68 input plug-in to do more as a native unicode plug-in (related to some of the handling changes needed for the x64 build which also apply to the x86 build of the plug-in)
Changed the 'save as' button in the library playlists root view to now be an 'export' button which shows options to export all or only the selected playlists via a pop-up menu instead of only working on the selected playlist(s)
Changed the metadata handling for bitrate & samplerate to avoid querying some of the input plug-ins (especially in_dshow with the x86 build) to avoid a crash that's been by some during local library import / metadata refreshes (this makes more use of mediafoundation which was already in place from a few builds back to handle getting the length without having to go to those troublesome input plug-ins)
Changed the installer message shown to indicate the current WINE version is not supported to include that version to aid in debugging
Changed the yt-dlp handling so Windows 7 users will obtain a compatible forked version since the main repository no longer provides an OS compatible version
Changed the history playback trigger handling to now be done off-thread which should avoid a possible ui deadlock that could occur from the crash reports when needing to make some of the metadata look-ups
Changed the milkdrop framerate options to now allow for up to 240fps to be configured from the prior 144fps limit (no idea how well this'll work as my setup refuses to go over 60fps)
Changed the big clock & waveform seeker plug-ins to reduce their effect on cpu load especially when playback is happening by better ensuring caching of their window content is done (more so for big clock) & removing some of the heavier actions being repeated when not needed (more so for waveform seeker in changing how the preview is drawn before its then stored as part of the cached window data)
Changed in_zip to now use the core handling to find the appropriate input plug-in to handle the extracted file which improves playback compatibility so everything is handled in the same manner
Changed how closing the WACUP process is handled to hopefully avoid some of the hung processes that can occur from plug-in / externally loaded dlls messing with things so it doesn't remaining running in an incomplete crashed state which cannot be dealt with (based on issues seen with the Morphyre visualisation plug-in)
Changed the Yule Log discord artwork handling so it will now re-upload the image on the first attempt in the given WACUP instance so if the site cache has been cleared it will appear (this will then keep doing the existing checks to avoid re-uploading the image during the same instance if its not been deemed to have changed e.g. when playing files on repeat)
Changed how the Yule Log discord artwork is sent to the WACUP site server to try to resolve the small number of reports of it failing (is still unclear as to where the issue is happening & might be out of my control with the client to site server connection being blocked by ISPs as seems to have been the case for at least one of the reported failures)
Changed the main playlist double-click handling to use a more direct call instead of a delayed timer based solution which might help with some reports of things misbehaving on double-click &/or being slow to react (it is still possible if the input plug-in / other aspects are happening but this somewhat avoids the main ui thread processing being involved which could cause the timer event ending up delayed)
Changed the isourfile handling with the x64 build to reduce the processing overhead & tweaked the x86 build handling to avoid doing some of legacy plug-in handling until there's an actual need to do it (these changes make determining the input plug-in to be used a bit quicker)
Changed the in_zip handling to avoid doing some aspects that aren't needed with the x64 build of the plug-in to reduce its initial processing overhead
Fixed popping in some NCSF sets (ty again AmiSapphire)
Fixed a crash when trying to process some MP3 files with the fallback handling when trying to determine the current bitrate of the playing item
Fixed the probable cause of a crash with the linein / audio capture mode when using the old Win3.x era mode on quick playback restart which seems likely to be concurrency issue that's been present for years
Fixed a crash when triggering some of the actions from the internet radio view & it happens to still be running them when the view closing clean-up is then triggered (e.g. enqueuing a lot of streams at once)
Fixed the crash reporter when configured & able to send an email to help get extra context about the crash that's happening to better indicate if it's from an x86 or an x64 build
Fixed a number of concurrency related issues with the archive extraction which likely was the reason for some of the odd reports of things not wanting to play as the prior calls would incorrectly remove the extracted file whilst other actions were still pending so this'll now be a bit lazier in removing the extracted files (like the recent in_url cache handling changes) which should resolve such failures, etc
Fixed the crash reporter when configured & able to send an email to help get extra context about the crash that's happening to better indicate if it's from an x86 or an x64 build
Fixed a crash when trying to view the file information through the adplug based input plug-in (in_addanotherplug) which mostly appeared under the x64 builds but should be possible under the x86 build as well (found whilst checking out a crash report from a midi file being checked out under the x64 build)
Fixed MP3 not being shown as a supported file type in the Add / Open file dialogs when the fallback (or native x64) handling is being used along with trying to better handle the many extensions supported
Fixed the probable cause of a crash seen when trying to live update some of the local library view cache after using the in-view file info dialog
Fixed the probable cause of a hang crash seen when trying to calculate replaygain on some MP4 based files due to the decoder not releasing nicely
Fixed the cause of some crashes seen with the newly implemented stream playback mode with in_url due to some core vs playback concurrency problems
Fixed some more quirks with the way streaming MP4 playback is handled to avoid some actions causing the main ui thread to deadlock & cause a crash
Fixed the probable cause of a hang crash seen when trying to sort the library playlists
Fixed a rare crash seen when closing the Not So Yasapi (WASAPI) config preference page
Fixed some issues with the config option used to change the main window drag & drop behaviour along with trying to drag items from the media library not following the setting correctly for enqueue & play
Fixed a small performance issue with the main playlist drawing to save having to re-query the current font information all of the time which makes fast scrolling to be a bit smoother
Fixed a command-line handling quirk where a trailing double-quote could incorrectly remain on folder paths which could then prevent the passed in folder being enumerated as expected
Fixed a crash when cleaning up things after having attempted to import an iTunes playlists xml file
Fixed a crash when trying to play some vgm file formats
Fixed the waveform seeker cue sheet tooltip handling not displaying utf-8 encoded files correctly
Fixed the discord currently playing progressbar (when playing something with a known length) to now correctly handle playback not starting at the beginning which could cause it to show a reduced duration
Fixed a potential memory leak when saving playlists along with reducing short lived memory allocations to save a bit of time (more useful when doing a full export of all library playlists)
Fixed the probable cause of a ui related deadlock when loading the podcasts view seen in a recent crash report which also makes the view loading be a bit quicker
Fixed some plug-in dlls not being correctly reported as being the wrong bitness (e.g. 32-bit plug-ins put in a 64-bit install) due to how the filename was checked
Fixed an unresponsive hang crash happening when podcasts are already being downloaded & the trigger happens to update all of the podcasts which could cause a main ui thread deadlock (still might be more issues especially when queued up to downloading 100s of podcasts but this should avoid the obvious crash which could occur)
Fixed some issues with the format converter & the handling of mime type for some of the formats which could incorrectly be set causing a crash or a failed conversion
Fixed a crash with the DSD input plug-in due to a missing validation check when trying to open files for their information
Fixed a metadata issue for EGG files when trying to parse an invalid associated file with them from within python installs
Fixed a deadlock that could occur with some of the local library view updating when trying to obtain the final view results
Fixed some inconsistency with the mapping of file rating metadata into the 0 - 5 star range especially for files not stored in the local library db which could cause an excessive number of stars to show
Fixed the wav encoder messing up the header information of the wav files created if the input source has a samplerate with a value that is larger than a 16-bit value because I mis-read the wav header spec
Fixed a problem for some of the file types not being able to report their samplerate during ATF / metadata querying calls due to the common handling not correctly reverting to the specific input plug-ins
Fixed the local library not trying to get the bitrate & samplerate for items whose length are under 1 second
Fixed the local library view filters & nde queries incorrectly handling some combinations of english & non-english metadata as the same value causing the results especially on filter selection to not be as expected
Fixed the probable cause of the installer which seemed to affect the x64 build the most spinning at a high cpu load for many minutes before incorrectly showing a WINE version error message despite running under Windows
Fixed the horizontal scrollbar for the podcast view episode list being missing
Fixed a performance issue affecting the majority of the media library listviews due to more being done to determine which columns need to have their content displayed (to avoid those not visible still being fully processed as the OS likes to do) when it could be cached
Fixed the possible cause of the milkdrop framerate limiter acting oddly if there's a configuration issue which could cause it to enter the unlimited framerate mode (though this might still not be right if things are causing the internal timer resolutions to be modified unexpectedly or something is causing the vsync to be mis-reported)
Fixed waveform seeker getting stuck on trying to redraw unprocessable archive items due to an issue with how in_zip processed some of the paths provided to it as part of the file conversion api handling
Fixed a performance issue with some of the local library metadata calls from the other plug-ins with the internal handling of the ingress thread vs the timers used to manage some aspects of it (this is was more of an issue with lots of repeated calls in quick succession such as the podcast downloads view loading when its trying to query the last played time incase that's been updated since the last load)
Fixed a small performance issue when the playback excluder window is loading causing it to refresh its window elements as though a skin change had happened when there was no need to be doing that
Fixed the probable cause of a crash when the OS notification toasts are enabled due to a concurrency issue
Fixed a compilation issue which caused duplication of the pugixml code in the core & some of the plug-ins along with some other data duplication issues found
Fixed the ATF $char() method not correctly handling values relating to unicode characters so it should now accept them instead of outputting gibberish text along with fixing a small performance issue
Fixed a performance issue with the classic skin main window visualisation data processing by tweaking some of it to better leverage SSE2 based optimisations
Fixed the big clock & waveform seeker windows not updating their contents as expected when their window is being moved which was more obvious when docked & moved in connection to the main window
Fixed the probable cause of playing files via in_wave (affecting the x64 builds more due to that currently being used for MP3 playback) where the information provided to the playback thread could be wrong
Fixed an inconsistent crash when triggering the 'save as' option on the file info / alt+3 dialog artwork tab
Fixed a white flash seen when loading some of the native preference pages when the OS dark mode is enabled
Fixed an inconsistency with the way in_zip handles some of the other input plug-ins which could cause it to not report that seeking in the playing files was supported by the input plug-in used for playback
Fixed the font of some of the elements in the playback excluder window getting messing up when moving onto another monitor with a different dpi setting to the one it was started on (forgot to apply this when other parts like the media library window had already gotten it a few years back)
Fixed a small performance issue with the classic skin main window visualisation handling where it was double-processing getting the new visualisation data on to the main window which is now avoided & reduces the GDI object count by one due to no longer requiring an intermediate step
Fixed a bad performance issue with milkdrop causing it to use an excessive amount of cpu time whilst preparing the frame to render (this now allows my 1050ti to run presets at 4k 60fps with minimal cpu load vs this one line change which had caused it to peak at around 40fps whilst using a full cpu core)
Fixed a compilation issue with milkdrop causing the dll to be larger than needed from linking in un-used code
Fixed a crash seen by some setups when the mediafoundation dlls are not present which incorrectly caused the dll delay loading to trigger the crash reporter since the wanted dll couldn't be found
Fixed some project & code compilation settings so things now build ok with the C++20 target (even if not properly making use of those features) along with de-duplicating some of the code being inlined when it wasn't required (i.e. not offering a performance improvement) which shaved ~14KB from the core dll size
Fixed a crash when closing the Taskbar -> Thumbnail preference page after de-selecting all of the thumbnail buttons
Fixed de-selecting all of the thumbnail buttons causing the default buttons to be used on the next restart instead of not showing them (though un-checking the option to consider adding buttons is preferred)
Fixed the probable cause of a crash seen by some setups when trying to play an invalid / empty playlist item where there's no extension able to be found when things were then passed onto a runtime call
Fixed the metadata calls to get replaygain information incorrectly being processed & passed onto the input plug-in actually handling playback when playing items via the Streaming Url plug-in (in_url) which in some instances was seen to cause a weird crash (most likely due to known issues with the re-used in_mp3 plug-in with respect to how it doesn't like handling multi-threaded metadata calls to it)
Fixed a small performance issue with how the core & its metadata handling was doing the reset action sent to the input plug-ins to get them to clear their local metadata caches of the last queried file to avoid up to 3 loops over all of the input plug-ins as could happen in some instances
Fixed an on closing issue when ASAN (AddressSanitizer) is used on the build due to a timing issue with some of the window clean up inconjunction with the OLE/COM related process clean-up (this might help resolve some of the odd on closing crashes that have been going on for some time but never tend to generate an appropriate crash report to be able to help resolve it)
Fixed the installer reporting an access issue if the x86 & then x64 or vice-versa were run too soon after each other when the initial instance was still cleaning up
Fixed in_wave not always handling its mpg123 related checks correctly which could cause playback / file processing to incorrectly fail despite the dll being loaded which would then appear as things being ok when trying to play the file again or another MP3 file (this affected the x64 build the most since it's the current way in which MP3 files are handled but could affect x86 when in_mp3 is not available)
Removed the need for cacert.pem as the libcurl + openssl handling now seems to be in a state that behaves well across the different Windows + WINE platforms that WACUP has support for
Other small changes based on things that may help with some of the inconclusive crash reports (e.g. not using gen_ff will obviously help in most instances & some weird on loading issues for the x64 build)
Updated c-ares (libcurl.dll) to 1.34.4 (14 Dec 2024)
Updated libcurl (libcurl.dll) to 8.11.1 (11 Dec 2024)
Updated libexpat (xml.w5s) to 2.6.4 (7 Nov 2024)
Updated libjpeg-turbo (image.w5s) to 3.1.0 (12 Dec 2024)
Updated libsidplayfp (in_sidious.dll) to 2.12.0 (1 Dec 2024)
Updated libnghttp2 (libcurl.dll) to 1.64.0 (21 Oct 2024)
Updated libopenmpt (in_mod.dll) to 0.7.12.22406 (26 Oct 2024)
Updated lzma (lzma.dll) to 24.09 (29 Nov 2024)
Updated Monkey's Audio (in_ape.dll) to 10.85 (10 Dec 2024)
Updated mpg123 (mpg123.dll) to 1.32.10 (14 Dec 2024)
Updated MSXplug (in_msx.dll) to the the current sub-modules
Updated openh264 (in_mp4.dll) to 2.5.0 (8 Nov 2024)
Updated OpenSSL (libcurl.dll) to 3.4.0 (22 Oct 2024)