aboutsummaryrefslogtreecommitdiff
path: root/src/tagTracker.c
diff options
context:
space:
mode:
authorWarren Dukes <warren.dukes@gmail.com>2004-11-15 17:24:57 +0000
committerWarren Dukes <warren.dukes@gmail.com>2004-11-15 17:24:57 +0000
commit33b9585d68e6f084b214985c2beb2887bf9d929a (patch)
tree4a9e5052536d5d80148f00aa27c87c05ba4c9bc1 /src/tagTracker.c
parent64632d6965b47ce3835f256488273d8121c2cb54 (diff)
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 'src/tagTracker.c')
-rw-r--r--src/tagTracker.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/src/tagTracker.c b/src/tagTracker.c
index 68124c9e..b6160e2a 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;
}