summaryrefslogtreecommitdiff
path: root/firmware/kernel.c
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2006-10-19 11:43:13 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2006-10-19 11:43:13 +0000
commit4950b5583718bf4f995a3a0751bd400cfc155dca (patch)
tree68e2ebfa93fa4ee8eb7274f44a76326e82c44bb1 /firmware/kernel.c
parent74a102dde2d03aaca61f19ccfc688db8b4b87db7 (diff)
downloadrockbox-4950b5583718bf4f995a3a0751bd400cfc155dca.zip
rockbox-4950b5583718bf4f995a3a0751bd400cfc155dca.tar.gz
rockbox-4950b5583718bf4f995a3a0751bd400cfc155dca.tar.bz2
rockbox-4950b5583718bf4f995a3a0751bd400cfc155dca.tar.xz
Patch #6052 - More responsive skip on Archos
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11273 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/kernel.c')
-rw-r--r--firmware/kernel.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/firmware/kernel.c b/firmware/kernel.c
index 4a6d615..b18b923 100644
--- a/firmware/kernel.c
+++ b/firmware/kernel.c
@@ -184,6 +184,19 @@ void queue_clear(struct event_queue* q)
set_irq_level(oldlevel);
}
+void queue_remove_from_head(struct event_queue *q, long id)
+{
+ int oldlevel = set_irq_level(HIGHEST_IRQ_LEVEL);
+
+ while (q->read != q->write &&
+ q->events[(q->read) & QUEUE_LENGTH_MASK].id == id)
+ {
+ q->read++;
+ }
+
+ set_irq_level(oldlevel);
+}
+
int queue_broadcast(long id, void *data)
{
int i;