forked from len0rd/rockbox
First runtime database support, self repairing, only playcount works for now,
which is still rather crude; playcount gets increased even if the song started playback but was skipped... track rating should be trivial to add, autorating also works since its based on playcount. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6969 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
4ec80704d5
commit
c735ed7914
11 changed files with 242 additions and 45 deletions
|
@ -29,6 +29,7 @@
|
|||
#define FILEENTRY_SIZE (rb->tagdbheader->filelen+12)
|
||||
#define ALBUMENTRY_SIZE (rb->tagdbheader->albumlen+4+rb->tagdbheader->songarraylen*4)
|
||||
#define ARTISTENTRY_SIZE (rb->tagdbheader->artistlen+rb->tagdbheader->albumarraylen*4)
|
||||
#define RUNDBENTRY_SIZE 20
|
||||
|
||||
#define FILERECORD2OFFSET(_x_) (rb->tagdbheader->filestart + _x_ * FILEENTRY_SIZE)
|
||||
|
||||
|
@ -45,7 +46,7 @@ int database_init() {
|
|||
// zero all entries.
|
||||
for(i=0;i<sizeof(struct entry)*rb->tagdbheader->filecount;i++)
|
||||
*(p++)=0;
|
||||
if(*rb->tagdb_initialized!=1) {
|
||||
if(!*rb->tagdb_initialized) {
|
||||
if(!rb->tagdb_init()) {
|
||||
// failed loading db
|
||||
return -1;
|
||||
|
@ -110,8 +111,18 @@ void loadsongdata() {
|
|||
}
|
||||
|
||||
void loadrundbdata() {
|
||||
// we don't do this yet.
|
||||
currententry->loadedrundbdata=1;
|
||||
if(!*rb->rundb_initialized)
|
||||
return;
|
||||
if(currententry->rundbentry==-1)
|
||||
return;
|
||||
rb->lseek(*rb->rundb_fd,currententry->rundbentry,SEEK_SET);
|
||||
currententry->rundbfe=readlong(*rb->rundb_fd);
|
||||
currententry->rundbhash=readlong(*rb->rundb_fd);
|
||||
currententry->rating=readshort(*rb->rundb_fd);
|
||||
currententry->voladj=readshort(*rb->rundb_fd);
|
||||
currententry->playcount=readlong(*rb->rundb_fd);
|
||||
currententry->lastplayed=readlong(*rb->rundb_fd);
|
||||
}
|
||||
|
||||
void loadartistname() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue