History 6
Version 1.0d43: Not Released Yet
- fixed a bug relating to playlists not loading, causing the launch to fail
- I had inadvertently linked against some 10.4 only routines, causing problems for folks still on 10.3, this is fixed, you should be fine using 10.3, for now
- r2 March 28
- fixed a bug or two relating to songs not stopping when they should, and crashing when switching
- added mutex to some message reporting code, was causing crashes
- intel mac version (xcode) is now compiling and running
- tweaked the error reporting code WRT to mutex (the juju stuff) to see if i can isolate why it's crashing
- did some extreme debugging and got to isolate the area where the crashing occurs, i can now reproduce the bug simply by playing, then quickly pressing next and then previous
- investigated more bug reports of songs "just disappearing", this is good news, having more perspective on the problem means it's closer to being solved
- r3 April 21
- I will be unavailable for 1 month starting now. If you're just utterly frustrated with the number of bugs, simply write to me and i'll give you your money back
- tweaked a teeny bit the place where we set the name of a playlist when you mount a CD
- if you stop a song before it reaches 60%, it is not counted as having been played
- plugged a memory leak when renaming sources
- attempting to pull a NULL song out of a selection will no longer crash, but it will assert
- r4 May 1
- no longer cause the entire database to need saving when you play a song
- if you skip forward a few songs or more really quickly (say with the right arrow key), we no longer leak a spooler for each skipped song
- found a potential culprit for random crashes: using QuickTime to open MP3 files on a pre-emptive thread is not allowed!! WHAT?? I was doing that all the time! Uh-oh! Okay so now i open it on the main thread and xfer it to the background thread! We're now compliant!! Good for us!
- r5 May 3
- When playing a file that is NOT zipped, we no longer clobber the file path of the graphics (CDG) file. This *may* help newly ripped songs NOT disappear after you play them. Also getting playlist size, trash originals, *some* (not all yet) meta info setting, these will no longer have problems
- crasher where a message was sent from a background thread to the main thread, still containing a reference to the background thread, but by the time the main thread got a hold of the message, the background thread had already died, fixed so now the (main thread) message no longer relies on the background thread existing
- assert crasher where it could just fail when switching songs (yeesh!). you can readily see this bug when the cache is set very low, eg: 2. This is not technically solved, but I can now sidestep the crash at least, so it's not YOUR problem
- working on "keep library organized" feature: when you set meta info on a song, it will attempt to rename the files / folders on disk as well, and/or move them (if you change the album / artist eg). This will also prevent the cache from getting out of sync, so you don't end up with missing and / or orphaned files. Not done yet but THIS is the fix that will prevent songs from going missing if you change meta info after you rip
- as part of the above, finally updated the CSong object to use unicode-savvy strings everywhere. bit by bit it's coming together for the international-crowd! Can you get siked for karaoke in Japanese? (currently, kJams will clobber japanese characters (or any unicode, really) if you try to name a song with them) (this is yet another manifestaion of the classic-by-now symptom: "why is that song missing?! it played before!?")
- as part of the above, all the meta-info changing code has finally been completely factored into one place. this means everything is in place to actually set ID3 tags when you change meta info. (currently, ID3 tags are ONLY set when ripping / encoding, hence my formerly requiring all meta info to be entered before ripping. since that pissed folks off, i got rid of the requirement, but hopefully soon it won't be such a big deal cuz you *will* be able to set ID3 tags on your MP3's)
- if you still have music in iTunes, then when you play it, it used to attempt to update the screen from a background thread (eg: to update the song name or album), this is a no-no, and would cause a crash. I now forward it to run on the main thread.
- fixed a crasher when the audio file could not be found. Still a mystery at this point why so many folks loose their songs, this is my next task now that the crasher is out of the way!
- r6 May 10
- attempted a patch to another crasher, so now the song just won't play, rather than crashing. Maybe it'll even work.
- fixed another crasher that was totally stupid on my part, basically "if we're not the main thread, then crash". durrrrrrrrrrr.
- r7 May 10
- context menu!! HAH!! Finally... What should I put in it?
- fixed debug version so that it can play naked CDG files without a corresponding audio file (actually it plays silence). This has, quite fortunately, uncovered more than THREE bugs!! 1) a crasher when you play, 2) a "song gone missing" after it works the first few times WOHOO!
- more fixes to the cache manager, so things are less likely to go missing
- Stopping a song will no longer potentially get strange, found and fixed a recursion situation
- context menu "reveal in finder" now tries to repair things it finds wrong
- Messages that appear in the video window are a bit better behaved
- if you get an error while ripping, you now get an error message
- r8 May 21
- did a buncha work updating the Burning plugin, getting closer! There will be a new release tomorrow.
- found out why songs disappear at least in one case: Your QuickTime is old! Upgrade!!
- We now won't run if you don't have QuickTime 7.1
- correctly setting file paths when you rip, for even more preemptive strike against songs going missing
- when you rip, it again puts the song into an existing playlist of the same name as the disc, instead of creating a new one (assuming you have that pref turned on)
- wow, no longer get NO windows the very first time you run. how come nobody reports things like this???
- fixed the hang on quit after rip problem. plus much code cleanup wrt releasing spoolers when we're done with them.
- no longer get the "rip done" sound at the start of the rip. This could happen if you played the song on the CD, then stopped it, then tried to rip it.
Pokers in the fire
- bugs: this is my top priority. it's crashing way to mucking fuch.
- Universal Binary / XCode: I've been using CodeWarrior since day 1, must convert to XCode, no mean feat.Update: it's running now, so now i just have to debug the byte swapping problems
- auto update the Map whenever someone makes a purchase (parse purchase info, geocode for lat/lon, add to address book, update map data, upload map data). Update: I have written a nice applescript that can parse my email and extract a new address book entry, including geocoded lat/lon info. Neat!
- auto-publish when I build a new version and invoke a script (export new vers.html file, zip lite and pro, upload lite and pro, upload vers file). Update: I now have all the parts I need for the workflow, just have to sew it all together now
- Burning: It's all done and working, but now i have to make it so you can buy, register, and license it, basically integrate eSellerate into it.
Bugs I'm aware of that will be fixed
- hang on quit
- leaking on quit (see the log for list of leaks)
- crashes having to do with Spooler / Mutex / printf. Update: Code re-factored, may be fixed or at least easier to track
sometimes when you stop a song, it doesn't stop. the next song plays, but the previous one also plays, you can't stop it without quittingI think i got that one, but there's still cleanup to do- can't enter unicode in meta info
- the album popup may crash under certain situations
To Do
- Problem: NOT dealing with UTF-8 very well. Must replace all std::str with ustring
- Set ID3 tags
write Zip function so after you rip MP3+G they'll get zipped up together, with a canonical name, enable Zip after rip in the prefs pane- When editing meta info on Zipped files: unzip files, set ID3 tags, then zip them up again, but leave a copy unzipped so you can get them easily again.
- During import of pre-existing MP3's, scan ID3 tags. Also, write a one-shot utility to both scan for bad zips and also read ID3's from valid zips, and re-canonicalize the names. Move bad zips to a new folder.
- finish CDPedia support
- 40% done: ability to cue a song to the first non-silent sample, so un-pausing means instant-on
- 20% done: ability to cue two songs for cross fade (same as: ability to export QuickTime (or iPod) at the same time as playing some other song)
- Allow a 'placeholder' track to be input into a singer's "Tonight" list, that includes the disc name and track number, and when it comes up, the dialog comes up, says "stick in the disc", to let it play direct from disc, automatically picking the right track. Alternately, allow KJ to drag a track from a CD into a playlist. then, eject disc. when that song is coming up next, put up a dialog that says "please stick that disc back in" and it'll go play it from disc, Alternately, rip the song when it gets drug from the CD into the singer's "Tonight"