chiark
/
gitweb
/
~mdw
/
disorder
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
67a9f4b
)
speaker_play() actually honors playable()
author
Richard Kettlewell
<rjk@greenend.org.uk>
Wed, 5 Dec 2007 18:34:29 +0000
(18:34 +0000)
committer
Richard Kettlewell
<rjk@greenend.org.uk>
Wed, 5 Dec 2007 18:34:29 +0000
(18:34 +0000)
server/speaker.c
patch
|
blob
|
blame
|
history
diff --git
a/server/speaker.c
b/server/speaker.c
index 8acd9a6e42399960c7b3e3a83a7c460ab01e837f..dc9b9813fd17ab591e03f63a25b33df7dcce56ff 100644
(file)
--- a/
server/speaker.c
+++ b/
server/speaker.c
@@
-283,6
+283,17
@@
static void maybe_finished(void) {
abandon();
}
abandon();
}
+/** @brief Return nonzero if we want to play some audio
+ *
+ * We want to play audio if there is a current track; and it is not paused; and
+ * it is playable according to the rules for @ref track::playable.
+ */
+static int playable(void) {
+ return playing
+ && !paused
+ && playing->playable;
+}
+
/** @brief Play up to @p frames frames of audio
*
* It is always safe to call this function.
/** @brief Play up to @p frames frames of audio
*
* It is always safe to call this function.
@@
-293,15
+304,15
@@
static void maybe_finished(void) {
* - If there is not enough audio to play then it play what is available.
*
* If there are not enough frames to play then whatever is available is played
* - If there is not enough audio to play then it play what is available.
*
* If there are not enough frames to play then whatever is available is played
- * instead. It is up to mainloop() to ensure that
play() is not called when
- * unreasonably only an small amounts of data is available to play.
+ * instead. It is up to mainloop() to ensure that
speaker_play() is not called
+ *
when
unreasonably only an small amounts of data is available to play.
*/
*/
-static void play(size_t frames) {
+static void
speaker_
play(size_t frames) {
size_t avail_frames, avail_bytes, written_frames;
ssize_t written_bytes;
size_t avail_frames, avail_bytes, written_frames;
ssize_t written_bytes;
- /* Make sure there's a track to play and it is not pa
su
ed */
- if(!play
ing || paused
)
+ /* Make sure there's a track to play and it is not pa
us
ed */
+ if(!play
able()
)
return;
/* Make sure the output device is open */
if(device_state != device_open) {
return;
/* Make sure the output device is open */
if(device_state != device_open) {
@@
-395,17
+406,6
@@
static const struct speaker_backend *backends[] = {
0
};
0
};
-/** @brief Return nonzero if we want to play some audio
- *
- * We want to play audio if there is a current track; and it is not paused; and
- * it is playable according to the rules for @ref track::playable.
- */
-static int playable(void) {
- return playing
- && !paused
- && playing->playable;
-}
-
/** @brief Main event loop */
static void mainloop(void) {
struct track *t;
/** @brief Main event loop */
static void mainloop(void) {
struct track *t;
@@
-465,15
+465,15
@@
static void mainloop(void) {
/* We want to play some audio */
if(device_state == device_open) {
if(backend->ready())
/* We want to play some audio */
if(device_state == device_open) {
if(backend->ready())
- play(3 * FRAMES);
+
speaker_
play(3 * FRAMES);
} else {
/* We must be in _closed or _error, and it should be the latter, but we
* cope with either.
*
} else {
/* We must be in _closed or _error, and it should be the latter, but we
* cope with either.
*
- * We most likely timed out, so now is a good time to retry.
play()
- * knows to re-activate the device if necessary.
+ * We most likely timed out, so now is a good time to retry.
+ *
speaker_play()
knows to re-activate the device if necessary.
*/
*/
- play(3 * FRAMES);
+
speaker_
play(3 * FRAMES);
}
}
/* Perhaps a connection has arrived */
}
}
/* Perhaps a connection has arrived */
@@
-527,9
+527,9
@@
static void mainloop(void) {
error(0, "cannot play track because no connection arrived");
playing = t;
/* We attempt to play straight away rather than going round the loop.
error(0, "cannot play track because no connection arrived");
playing = t;
/* We attempt to play straight away rather than going round the loop.
- * play() is clever enough to perform any activation that is
+ *
speaker_
play() is clever enough to perform any activation that is
* required. */
* required. */
- play(3 * FRAMES);
+
speaker_
play(3 * FRAMES);
report();
break;
case SM_PAUSE:
report();
break;
case SM_PAUSE:
@@
-543,7
+543,7
@@
static void mainloop(void) {
paused = 0;
/* As for SM_PLAY we attempt to play straight away. */
if(playing)
paused = 0;
/* As for SM_PLAY we attempt to play straight away. */
if(playing)
- play(3 * FRAMES);
+
speaker_
play(3 * FRAMES);
}
report();
break;
}
report();
break;