]> mj.ucw.cz Git - misc.git/blobdiff - ursaryd/ut.c
Ursary: FIXMEs
[misc.git] / ursaryd / ut.c
index 825584841cefe0062f9a2558a0a8fa8b37185356..a1277441d00e4399fb9c5fce3eddd82e10fe0abc 100644 (file)
@@ -96,6 +96,7 @@ struct pulse_sink_input {
   char *name;
   int client_idx;
   int sink_idx;
+  uns channels;
   uns volume;
   uns mute;
 };
@@ -126,14 +127,15 @@ static void pulse_sink_input_cb(pa_context *ctx UNUSED, const pa_sink_input_info
       return;
     }
 
-  DBG("Pulse: SINK INPUT #%u: %s client=%d sink=%d has_vol=%d vol_rw=%d volume=%u mute=%d",
-    i->index, i->name, i->client, i->sink, i->has_volume, i->volume_writable, i->volume.values[0], i->mute);
+  DBG("Pulse: SINK INPUT #%u: %s client=%d sink=%d chans=%d has_vol=%d vol_rw=%d volume=%u mute=%d",
+    i->index, i->name, i->client, i->sink, i->channel_map.channels, i->has_volume, i->volume_writable, i->volume.values[0], i->mute);
   pulse_dump_proplist(i->proplist);
 
   struct pulse_sink_input *s = pulse_sink_input_lookup(i->index);
   SET_STRING(s->name, i->name);
   s->client_idx = i->client;
   s->sink_idx = i->sink;
+  s->channels = i->channel_map.channels;
   s->volume = pa_cvolume_avg(&i->volume);
   s->mute = i->mute;
   schedule_update();
@@ -150,6 +152,7 @@ static void pulse_sink_input_gone(int idx)
 struct pulse_sink {
   int idx;
   char *name;
+  uns channels;
   uns volume;
   uns base_volume;
   int mute;
@@ -179,12 +182,13 @@ static void pulse_sink_cb(pa_context *ctx, const pa_sink_info *i, int eol, void
       return;
     }
 
-  DBG("Pulse: SINK #%u: %s (%s) flags=%08x volume=%u mute=%d base_vol=%u state=%u",
-    i->index, i->name, i->description, i->flags, i->volume.values[0], i->mute, i->base_volume, i->state);
+  DBG("Pulse: SINK #%u: %s (%s) flags=%08x channels=%u volume=%u mute=%d base_vol=%u state=%u",
+    i->index, i->name, i->description, i->flags, i->channel_map.channels, i->volume.values[0], i->mute, i->base_volume, i->state);
   pulse_dump_proplist(i->proplist);
 
   struct pulse_sink *s = pulse_sink_lookup(i->index);
   SET_STRING(s->name, i->name);
+  s->channels = i->channel_map.channels;
   s->volume = pa_cvolume_avg(&i->volume);
   s->base_volume = i->base_volume;
   s->mute = i->mute;
@@ -344,15 +348,15 @@ static void pulse_dump(void)
 
   HASH_FOR_ALL(pulse_sink, s)
     {
-      DBG("## Sink #%d: %s volume=%u base_vol=%u mute=%u",
-       s->idx, s->name, s->volume, s->base_volume, s->mute);
+      DBG("## Sink #%d: %s channels=%u volume=%u base_vol=%u mute=%u",
+       s->idx, s->name, s->channels, s->volume, s->base_volume, s->mute);
     }
   HASH_END_FOR;
 
   HASH_FOR_ALL(pulse_sink_input, s)
     {
-      DBG("## Sink input #%d: %s client=%d sink=%d volume=%u mute=%u",
-       s->idx, s->name, s->client_idx, s->sink_idx, s->volume, s->mute);
+      DBG("## Sink input #%d: %s client=%d sink=%d channels=%u volume=%u mute=%u",
+       s->idx, s->name, s->client_idx, s->sink_idx, s->channels, s->volume, s->mute);
     }
   HASH_END_FOR;
 }
@@ -550,7 +554,7 @@ static void do_update(struct main_timer *t)
 
 void schedule_update(void)
 {
-  timer_add_rel(&update_timer, 10);    // FIXME
+  timer_add_rel(&update_timer, 10);
 }
 
 static void update_sink_from_rotary(int delta, const char *sink_name)
@@ -566,7 +570,7 @@ static void update_sink_from_rotary(int delta, const char *sink_name)
   if (pavol == s->volume)
     return;
   pa_cvolume cvol;
-  pa_cvolume_set(&cvol, 2, pavol);
+  pa_cvolume_set(&cvol, s->channels, pavol);
 
   DBG("## Setting volume of sink %s to %d", s->name, cvol.values[0]);
   PULSE_ASYNC_RUN(pa_context_set_sink_volume_by_index, pulse_ctx, s->idx, &cvol, pulse_success_cb);
@@ -592,7 +596,7 @@ static void update_client_from_rotary(int rotary, int delta)
        {
          DBG("@@ Client #%d, sink input #%d: setting volume=%u", s->client_idx, s->idx, pavol);
          pa_cvolume cvol;
-         pa_cvolume_set(&cvol, 2, pavol);      // FIXME: #channels
+         pa_cvolume_set(&cvol, s->channels, pavol);
          PULSE_ASYNC_RUN(pa_context_set_sink_input_volume, pulse_ctx, s->idx, &cvol, pulse_success_cb);
        }
     }