diff options
author | Warren Dukes <warren.dukes@gmail.com> | 2004-11-15 17:24:57 +0000 |
---|---|---|
committer | Warren Dukes <warren.dukes@gmail.com> | 2004-11-15 17:24:57 +0000 |
commit | 33b9585d68e6f084b214985c2beb2887bf9d929a (patch) | |
tree | 4a9e5052536d5d80148f00aa27c87c05ba4c9bc1 /src/tagTracker.c | |
parent | 64632d6965b47ce3835f256488273d8121c2cb54 (diff) | |
download | mpd-33b9585d68e6f084b214985c2beb2887bf9d929a.tar.gz mpd-33b9585d68e6f084b214985c2beb2887bf9d929a.tar.xz mpd-33b9585d68e6f084b214985c2beb2887bf9d929a.zip |
insert stuff in tagTracker in sorted order, hopefully this makes it faster
git-svn-id: https://svn.musicpd.org/mpd/trunk@2672 09075e82-0dd4-0310-85a5-a0d7c8717e4f
Diffstat (limited to '')
-rw-r--r-- | src/tagTracker.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/src/tagTracker.c b/src/tagTracker.c index 68124c9e2..b6160e2a1 100644 --- a/src/tagTracker.c +++ b/src/tagTracker.c @@ -28,18 +28,23 @@ char * getTagItemString(int type, char * string) { if(tagLists[type] == NULL) { tagLists[type] = makeList(free, 1); + sortList(tagLists[type]); } - if((node = findNodeInList(tagLists[type], string))) { + if(findNodeInList(tagLists[type], string, &node)) { + DEBUG("found\n"); ((TagTrackerItem *)node->data)->count++; } else { + DEBUG("not found\n"); TagTrackerItem * item = malloc(sizeof(TagTrackerItem)); item->count = 1; item->visited = 0; - node = insertInList(tagLists[type], string, item); + node = insertInListBeforeNode(tagLists[type], node, string, + item); } + DEBUG("key: %s:%s\n", string, node->key); return node->key; } @@ -51,15 +56,12 @@ void removeTagItemString(int type, char * string) { assert(tagLists[type]); if(tagLists[type] == NULL) return; - node = findNodeInList(tagLists[type], string); - assert(node); - /*if(!node) { free(string); return; }*/ - if(node) { + if(findNodeInList(tagLists[type], string, &node)) { TagTrackerItem * item = node->data; item->count--; if(item->count <= 0) deleteNodeFromList(tagLists[type], node); @@ -131,9 +133,7 @@ int wasVisitedInTagTracker(int type, char * str) { if(!tagLists[type]) return 0; - node = findNodeInList(tagLists[type], str); - - if(!node) return 0; + if(!findNodeInList(tagLists[type], str, &node)) return 0; return ((TagTrackerItem *)node->data)->visited; } @@ -143,9 +143,7 @@ void visitInTagTracker(int type, char * str) { if(!tagLists[type]) return; - node = findNodeInList(tagLists[type], str); - - if(!node) return; + if(!findNodeInList(tagLists[type], str, &node)) return; ((TagTrackerItem *)node->data)->visited = 1; } |