* 9. Changelog: ~~~~~~~~~~~~~~~ * 9.1 v2.00 (30.10.2005): This is a complete rewrite, so the detailed change history from versions prior to 2.00 isn't particularly relevant. ________________________________________________________________________ * 9.2 v2.00a (31.10.2005): - Sort would crash if asked to sort a database of only 1 track. (It now displays a message in the main window to the effect that it cannot sort a single track.) - Double-clicking MP3 files did not add them to the database. - After adding the first track to the database, clicking Play did not start that track playing (but clicking next did). - The !Run file of AMPlay and the accompanying apps and utilities gave an error if ABCLib or (in some cases) CallASWI was not already loaded. - If the database had only one track in it, when that one track was selected in the database editor, the move up and move down buttons were not greyed out as they should be (although they do nothing when clicked). - Removal of items from the database could create some oddities in the history. Specifically, some tracks would be (correctly) present in the history, but the flags on those tracks would not have the 'in history' bit set. This would lead to them possibly being picked even if played recently, but would have no serious effects. - When the entire database is selected in the database editor, it correctly greyed out the Play button, but not Queue. - Several apps had blank lines at the end of !Run which meant they kept a file lock on !Run while they were running (Doesn't cause any particular problem, but wasteful of file handles). - AMPlayCfg generated an error if run without AMPlay having been seen by the filer. This was because AMPlay contains the default skin directory, which AMPlayCfg needs to iterate to build the menu of available skins. It now greys out the whole skins section if is undefined, or points to a 1.X version of AMPlay. - AMPlayCfg was appending a couple of extra lines to the options file each time the options were saved. It also now does not allow the same parameter to occur more than once in the file. - AMPlayCmd hung if you use -expand or -raw parameters other than in a taskwindow (e.g. from an obey file or after pressing F12). This was because it was waiting for a reply, but not returning control to the Wimp to allow AMPlay to be able to reply. AMPlayCmd now returns an error if these parameters are used outside a taskwindow. (Making them work correctly outside a taskwindow may be addressed in a later version.) ________________________________________________________________________ * 9.3 v2.02 (15.05.2008): - Various internal consistency problems fixed in the database. Specifically; - Internal constants for the offsets at which particular information could be found were inconsistent, in that the offsets for the linear and random filters were one way around for tracks, but the other way around for albums and artists. This meant that propogation of filter settings from tracks up to albums and artists gave incorrect results in the cases where album/artist contained only tracks set to linear-only, or only tracks set to random-only. (Any other track settings would come out to both or none at the album/artist level, which was unaffected by the problem.) This lead to things appearing in the post-filtered lists when in fact they did not pass the filter. In turn this could lead to AMPlay just stopping dead when picking the next album/artist, because it was possible for it to pick an album/artist where no tracks passed the filter. - Modifying an inactive filter did not correctly mark the tracks database as changed, and therefore did not resave it when saving the state. This could result in the album and artist states being saved, while the track state was not, leading to inconsistencies on next use. - Swapping one track with another, where one track passed the filter and the other did not, could leave the post-filtered list corrupt. It tried to update the post-filtered list to take account of the change, but in fact modified the first item in the list, rather than the correct one. - Filtered duration of albums and artists was wrong following a sort (one that made actual changes to the order). This was due to the duration being recalculated too early in the post-sort tidyup, before the filter settings had been rebuilt. Durations were being calculated based on filter settings that had pertained prior to the sort. - As a result of the above, repeatedly adding tracks and sorting the database lead to instability and various crashes. - Tracks have an attribute, stored at offset o_tinlist%, which gives their position in the post-filtered track list. For tracks which do not pass the filter, this should be zero. However, it was possible for tracks to end up with a non-zero value even if they didn't pass the filter. This is now fixed, and fixes various "picked something when it should not have been picked" problems. In cases where tracks had been removed or filter settings changed, it was possible for an old o_tinlist% value to refer to an item beyond the end of the tracklist. - Extra sanity-checking on startup, especially if AMPlay detects that the database was saved by a different version of AMPlay than is now loading it. This resolves any remaining inconsistencies that the above problems might have left behind. i.e. The above problems no longer occur, and steps are taken to repair any damage. - AMPlay no longer crashes when launched via an adjust-click. (I've no idea how I managed to use AMPlay myself for so long without noticing this.) - Fast forward and Rewind now work as documented. Previously, adjust- clicks were being treated the same as select clicks. - AMPlayer error messages no longer repeat when the track changes. - If changing the names of the filters, the filter names on the editor window are now updated on the fly. Previously, the editor window displayed the filter names as they were when that window was opened. - The Goto menus had various problems, especially if the "Filtered items are greyed" option was turned off (i.e. filtered items are omitted entirely). This turned out to be a problem in the design, and lead to a complete rewrite of how AMPlay generates menus on the fly. Almost all users of the dynamic menu system now call a single generic function to generate their menu, whereas previously they each had their own implementation of it. This is one reason why 2.02 is a bit smaller than 2.00a, and in code terms is the main area of work between 2.00a and 2.02. The rewrite was mostly about ending up with something that worked as already documented, so there are few visible differences other than the removal of the bugs. There are two visible differences; - The db editor menus and the history menus are now consistent in that their 'special' items (Clear history, All artists, etc) now appear above the link to the previous block, if any. - Menu blocks are now slightly more flexible, and if there is only 1 item before or after the menu, rather than display a "Next 1 item" entry (which takes up as much space as it would have done to include the entry) it now makes the menu block longer to accommodate that extra item. This applies at both ends of the block, so a menu that needed to display items 2-31 of items 1-32 (assuming a block size of 30) will now display all 32 items, with no previous/next links. - In the case where; - a goto menu is to be displayed - the current track/album/artist does not pass the filter - the option to grey filtered items is off (i.e. such items are to be omitted entirely) the menu will nonetheless open with the block chosen to be centred on the nearest item that DOES pass the filter. e.g. Suppose you ask for the all tracks menu, and there are 1,000 tracks, and the currently playing track is track 500. Track 500 does not pass the filter, and nor do 451-499 but track 450 does. The menu that is opened will have the displayed range of tracks centred on 450. Without this behaviour, the menu would open at track 1, even though there is currently playing information and even though track 1 is nowhere near what is currently playing. - The default settings for the X modifier are changed to reflect the fact that the X modifier is applied before any of the text conversion options. - There are now options on the main menu for setting the playback order for tracks, albums and artists, for setting the auto next options, and for setting the repeat options. - The main window buttons for playback order, autonext and repeat now use pop-up menus rather than cycling through their options. - Main window buttons that generate a menu on select click now generate that menu when menu is clicked, rather than the main menu. - Where appropriate, if a control is greyed out, any text labels associated with it are also greyed out. This is somewhat more style- guide compliant, and affects the export and search windows, as well as most panes in the database editor. - A number of minor discrepancies between the documentation and the actual behaviour are resolved (generally by making the documentation match reality). Specifically; - The previous/next buttons are now documented as they behave. - The X modifier documentation is now much closer to how it actually behaves. - Hourglass behaviour when opening the DB statistics window is now more sensible. - Tidied up a couple of places where AMPlay had its own functions that duplicated DrWimp. (These dated from before AMPlay was definitely going to use DrWimp.) - Tidied up a couple of unused icons from the skin, and added a 'noaction' spite which is used for custom buttons with no action configured. (Without this, they disappear completely.) - State save now always saves those state files which are likely to be small, and only bothers with only-save-if-changed checks for those files which are potentially large (namely; pathdb, trackdb, namedb). This is because of the risk of bugs arising from failure of the check and saving some but not all of the files, and because in some cases actions that take place on startup result in their being marked as changed anyway. - When viewing selected item information, with an album as the selected item, the artist number was incorrect (the album number was displayed instead). - Opening the database editor from the menu, without having opened it via some other route first, left some placeholder text from the template visible. There are also some minor changes in AMPlayCfg: - The X modifier characters option now allows more characters to be entered. - Awareness of AMPlay 2.02 skins. ________________________________________________________________________ * 9.4 v2.03 (30.05.2008): - Various fixes/improvements to skin handling; - Calculation of when to scroll text in the track, album or artist fields is now done correctly. Previously it was roughly right by accident for the default skin, but noticeably wrong for others. - Clicking on the progress bar to set the position within the track now works properly in all cases, rather than only when the window is against the left edge of the screen. (Another "How have I managed to miss that?" bug) - Custom buttons of type 'Other Application' now display the right icon. - Previously, when saving options that included changed skin settings, AMPlay would start using the progress bar details of the new skin straight away, even though it wouldn't start using the new sprites and templates until it was restarted. This could cause the progress bar marker to disappear, or appear in the wrong place. - New custom button type of "Remote Control". - The "Locating..." message is now "Locating (to x:xx of y:yy)", where x:xx is the target time, and y:yy is the total duration of the track. - Skins can now specify which field should be used for displaying AMPlay messages. - Redesigned main window and sprite set, to provide larger icons, and reduced risk of mis-clicking etc. This redesigned skin is now the default - the previous skin is still supplied with AMPlay as 'Small Blue'. - Fixed bug with the goto menu for albums by the current artist. In some cases, only the first album was being displayed. - Very large total durations are now displayed correctly on the database statistics window. The limit is now 2^31 seconds (roughly 68 years), rather than 2^31 centiseconds (roughly 250 days). This only applies to the total durations - if you manage to get an artist, album or track (!) to have a duration of over 2^31 centiseconds, that will still be displayed as negative. - AMPlayCmd now includes generic 'previous' and 'next' commands, as well as track, album and artist specific variants, and forcenext. - API extended - there is now a request that will return the highest and lowest skin versions supported. (Nothing makes use of this as yet, but the intention is for AMPlayCfg to use this, rather than having its own settings for what versions skins need to have.) - References and menu entries for HTML help removed. - Opening the documentation from the main menu now opens the documentation directory as well as opening the intro document. (i.e. it now works as invoking help from the filer always has.) - Minor tweak to the hourglass handling around the history menus. This should avoid the situation with very large databases where there could be a lengthy delay with no hourglass. There are also changes to AMPlayCfg; - Skin settings now have a pane in the options all to themselves. - Skin previews and descriptions are now available (the skin has to provide these) - When run manually, or from AMPlay, AMPlayCfg now remembers its window position, and which pane was selected. - When run from Configure, AMPlayCfg opens under the mouse pointer, (as recommended by the Style Guide). ________________________________________________________________________ Copyright © 2008 Mike Sandells, mike@mikejs.com Last Modified: 30.05.2008