summaryrefslogtreecommitdiff
path: root/acme/bin/source/acd/toc.c
diff options
context:
space:
mode:
Diffstat (limited to 'acme/bin/source/acd/toc.c')
-rw-r--r--acme/bin/source/acd/toc.c59
1 files changed, 59 insertions, 0 deletions
diff --git a/acme/bin/source/acd/toc.c b/acme/bin/source/acd/toc.c
new file mode 100644
index 000000000..c447949e6
--- /dev/null
+++ b/acme/bin/source/acd/toc.c
@@ -0,0 +1,59 @@
+#include "acd.h"
+
+Toc thetoc;
+
+void
+tocthread(void *v)
+{
+ Drive *d;
+
+ threadsetname("tocthread");
+ d = v;
+ DPRINT(2, "recv ctocdisp?...");
+ while(recv(d->ctocdisp, &thetoc) == 1) {
+ DPRINT(2, "recv ctocdisp!...");
+ drawtoc(d->w, &thetoc);
+ DPRINT(2, "send dbreq...\n");
+ send(d->ctocdbreq, &thetoc);
+ }
+}
+
+void
+freetoc(Toc *t)
+{
+ int i;
+
+ free(t->title);
+ for(i=0; i<t->ntrack; i++)
+ free(t->track[i].title);
+}
+
+void
+cddbthread(void *v)
+{
+ Drive *d;
+ Toc t;
+
+ threadsetname("cddbthread");
+ d = v;
+ while(recv(d->ctocdbreply, &t) == 1) {
+ if(thetoc.nchange == t.nchange) {
+ freetoc(&thetoc);
+ thetoc = t;
+ redrawtoc(d->w, &thetoc);
+ }
+ }
+}
+
+void
+cdstatusthread(void *v)
+{
+ Drive *d;
+ Cdstatus s;
+
+ d = v;
+
+ for(;;)
+ recv(d->cstat, &s);
+
+}