chiark / gitweb /
Expose command backend pause mode to server configuration as well.
authorRichard Kettlewell <rjk@greenend.org.uk>
Sat, 14 Mar 2009 09:37:36 +0000 (09:37 +0000)
committerRichard Kettlewell <rjk@greenend.org.uk>
Sat, 14 Mar 2009 09:37:36 +0000 (09:37 +0000)
doc/disorder_config.5.in
lib/configuration.c
lib/configuration.h
lib/uaudio-command.c

index d033258359123b9e76b5b86242d4c23aa7b08dcc..85135f5601cc4506aa48162dee873e918acda408 100644 (file)
@@ -275,6 +275,10 @@ Execute a command.
 This is the default if
 .B speaker_command
 is specified, or if no native is available.
+.IP
+You might want to set
+.B pause_mode
+with this backend.
 .TP
 .B rtp
 Transmit audio over the network.
@@ -527,6 +531,19 @@ The maximum days that a track can survive in the database of newly added
 tracks.
 The default is 31.
 .TP
+.B pause_mode \fIMODE
+Sets the pause mode for the \fBcommand\fR backend.
+The possible values are:
+.RS
+.TP
+.B silence
+Send silent (0-value) samples when paused.
+This is the default.
+.TP
+.B suspend
+Stop writing when paused.
+.RE
+.TP
 .B player \fIPATTERN\fR \fIMODULE\fR [\fIOPTIONS.. [\fB\-\-\fR]] \fIARGS\fR...
 Specifies the player for files matching the glob \fIPATTERN\fR.
 \fIMODULE\fR specifies which plugin module to use.
index 8f04e7d51f0d9e922fd13953b6078562a8470e0f..67d50a07b8fd757a30b4de68ef60f6d5718f1b1d 100644 (file)
@@ -889,6 +889,15 @@ static int validate_backend(const struct config_state attribute((unused)) *cs,
   return 0;
 }
 
+static int validate_pausemode(const struct config_state attribute((unused)) *cs,
+                              int nvec,
+                              char **vec) {
+  if(nvec == 1 && (!strcmp(vec[0], "silence") || !strcmp(vec[0], "suspend")))
+    return 0;
+  error(0, "%s:%d: invalid pause mode", cs->path, cs->line);
+  return -1;
+}
+
 /** @brief Item name and and offset */
 #define C(x) #x, offsetof(struct config, x)
 /** @brief Item name and and offset */
@@ -931,6 +940,7 @@ static const struct conf conf[] = {
   { C(nice_speaker),     &type_integer,          validate_any },
   { C(noticed_history),  &type_integer,          validate_positive },
   { C(password),         &type_string,           validate_any },
+  { C(pause_mode),       &type_string,           validate_pausemode },
   { C(player),           &type_stringlist_accum, validate_player },
   { C(plugins),          &type_string_accum,     validate_isdir },
   { C(prefsync),         &type_integer,          validate_positive },
index acb96b769c46a00ba9e4d412081600c929b191b8..9a85e5da537c3bf440b6ddcddde44331df974181 100644 (file)
@@ -171,6 +171,9 @@ struct config {
   /** @brief Command execute by speaker to play audio */
   const char *speaker_command;
 
+  /** @brief Pause mode for command backend */
+  const char *pause_mode;
+  
   /** @brief Target sample format */
   struct stream_header sample_format;
 
index 812a3f26a2c2678220ccccb48178549c4f54497b..2c610ff08225e4d7fa478bfdc0eeccb08f61a8b8 100644 (file)
@@ -151,6 +151,7 @@ static void command_deactivate(void) {
 
 static void command_configure(void) {
   uaudio_set("command", config->speaker_command);
+  uaudio_set("pause-mode", config->pause_mode);
 }
 
 const struct uaudio uaudio_command = {