chiark
/
gitweb
/
~mdw
/
disorder
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Complete Disobedience transition to event_ from _monitor.
[disorder]
/
server
/
speaker-command.c
diff --git
a/server/speaker-command.c
b/server/speaker-command.c
index 8a8f63cbbf21ad3e16b440d1f80ddcd80a939be5..7e19e2b58a961332a61aed5a298c8cd3a359d9d7 100644
(file)
--- a/
server/speaker-command.c
+++ b/
server/speaker-command.c
@@
-1,6
+1,7
@@
/*
* This file is part of DisOrder
* Copyright (C) 2005, 2006, 2007 Richard Kettlewell
/*
* This file is part of DisOrder
* Copyright (C) 2005, 2006, 2007 Richard Kettlewell
+ * Portions (C) 2007 Mark Wooding
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@
-20,11
+21,11
@@
/** @file server/speaker-command.c
* @brief Support for @ref BACKEND_COMMAND */
/** @file server/speaker-command.c
* @brief Support for @ref BACKEND_COMMAND */
-#include <config.h>
-#include "types.h"
+#include "common.h"
#include <unistd.h>
#include <poll.h>
#include <unistd.h>
#include <poll.h>
+#include <errno.h>
#include "configuration.h"
#include "syscalls.h"
#include "configuration.h"
#include "syscalls.h"
@@
-52,6
+53,7
@@
static void fork_cmd(void) {
xpipe(pfd);
cmdpid = xfork();
if(!cmdpid) {
xpipe(pfd);
cmdpid = xfork();
if(!cmdpid) {
+ exitfn = _exit;
signal(SIGPIPE, SIG_DFL);
xdup2(pfd[0], 0);
close(pfd[0]);
signal(SIGPIPE, SIG_DFL);
xdup2(pfd[0], 0);
close(pfd[0]);
@@
-72,7
+74,7
@@
static void command_init(void) {
/** @brief Play to a subprocess */
static size_t command_play(size_t frames) {
/** @brief Play to a subprocess */
static size_t command_play(size_t frames) {
- size_t bytes = frames *
device_
bpf;
+ size_t bytes = frames * bpf;
int written_bytes;
written_bytes = write(cmdfd, playing->buffer + playing->start, bytes);
int written_bytes;
written_bytes = write(cmdfd, playing->buffer + playing->start, bytes);
@@
-90,11
+92,11
@@
static size_t command_play(size_t frames) {
fatal(errno, "error writing to subprocess");
}
} else
fatal(errno, "error writing to subprocess");
}
} else
- return written_bytes /
device_
bpf;
+ return written_bytes / bpf;
}
/** @brief Update poll array for writing to subprocess */
}
/** @brief Update poll array for writing to subprocess */
-static void command_beforepoll(
void
) {
+static void command_beforepoll(
int attribute((unused)) *timeoutp
) {
/* We send sample data to the subprocess as fast as it can accept it.
* This isn't ideal as pause latency can be very high as a result. */
if(cmdfd >= 0)
/* We send sample data to the subprocess as fast as it can accept it.
* This isn't ideal as pause latency can be very high as a result. */
if(cmdfd >= 0)
@@
-111,7
+113,7
@@
static int command_ready(void) {
const struct speaker_backend command_backend = {
BACKEND_COMMAND,
const struct speaker_backend command_backend = {
BACKEND_COMMAND,
-
FIXED_FORMAT
,
+
0
,
command_init,
0, /* activate */
command_play,
command_init,
0, /* activate */
command_play,