[Spice-devel] [PATCH v4 04/17] sound: Rename SndWorker to SndChannel

Frediano Ziglio fziglio at redhat.com
Fri Dec 2 08:31:01 UTC 2016


> 
> On Thu, 2016-12-01 at 11:24 +0000, Frediano Ziglio wrote:
> > SndWorker has been historically based on RedChannel, initial git
> > commit
> > has:
> > struct SndWorker {
> >      Channel base;
> >      ...
> > };
> 
> 
> I'd add a short note to the commit log explaining that this is only
> possible since we just renamed SndChannel to SndChannelClient.
> 
> On an semi-unrelated note: Should we take this opportunity to use the
> full word "Sound" for these types instead of "Snd"? SoundChannel
> 
> I find unnecessary shortening to be a bit annoying. It would also avoid
> the confusion that could be introduced by bisecting old versions of the
> code and not realizing that the name SndChannel refers to completely
> different objects in different versions of the repository.
> 
> 
> Jonathon
> 
>

It's already merged.
About Snd -> Sound can be a follow up but I don't feel very confusing.

Frediano
 
> 
> > 
> > Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> > ---
> >  server/sound.c | 312 +++++++++++++++++++++++++--------------------
> > -----
> >  1 file changed, 156 insertions(+), 156 deletions(-)
> > 
> > diff --git a/server/sound.c b/server/sound.c
> > index bafdd1e..5b66f3a 100644
> > --- a/server/sound.c
> > +++ b/server/sound.c
> > @@ -79,12 +79,12 @@ typedef int
> > (*snd_channel_handle_message_proc)(SndChannelClient *client, size_t
> >  typedef void (*snd_channel_on_message_done_proc)(SndChannelClient
> > *client);
> >  typedef void (*snd_channel_cleanup_channel_proc)(SndChannelClient
> > *client);
> >  
> > -typedef struct SndWorker SndWorker;
> > +typedef struct SndChannel SndChannel;
> >  
> >  /* Connects an audio client to a Spice client */
> >  struct SndChannelClient {
> >      RedsStream *stream;
> > -    SndWorker *worker;
> > +    SndChannel *channel;
> >      spice_parse_channel_func_t parser;
> >      int refs;
> >  
> > @@ -145,10 +145,10 @@ typedef struct SpiceVolumeState {
> >  } SpiceVolumeState;
> >  
> >  /* Base class for SpicePlaybackState and SpiceRecordState */
> > -struct SndWorker {
> > +struct SndChannel {
> >      RedChannel *base_channel;
> >      SndChannelClient *connection; /* Only one client is supported */
> > -    SndWorker *next; /* For the global SndWorker list */
> > +    SndChannel *next; /* For the global SndChannel list */
> >  
> >      int active;
> >      SpiceVolumeState volume;
> > @@ -156,11 +156,11 @@ struct SndWorker {
> >  };
> >  
> >  struct SpicePlaybackState {
> > -    struct SndWorker worker;
> > +    struct SndChannel channel;
> >  };
> >  
> >  struct SpiceRecordState {
> > -    struct SndWorker worker;
> > +    struct SndChannel channel;
> >  };
> >  
> >  typedef struct RecordChannelClient {
> > @@ -176,11 +176,11 @@ typedef struct RecordChannelClient {
> >  } RecordChannelClient;
> >  
> >  /* A list of all Spice{Playback,Record}State objects */
> > -static SndWorker *workers;
> > +static SndChannel *snd_channels;
> >  
> >  static void snd_receive(SndChannelClient *client);
> > -static void snd_playback_start(SndWorker *worker);
> > -static void snd_record_start(SndWorker *worker);
> > +static void snd_playback_start(SndChannel *channel);
> > +static void snd_record_start(SndChannel *channel);
> >  
> >  static SndChannelClient *snd_channel_ref(SndChannelClient *client)
> >  {
> > @@ -201,12 +201,12 @@ static SndChannelClient
> > *snd_channel_unref(SndChannelClient *client)
> >  static RedsState* snd_channel_get_server(SndChannelClient *client)
> >  {
> >      g_return_val_if_fail(client != NULL, NULL);
> > -    return red_channel_get_server(client->worker->base_channel);
> > +    return red_channel_get_server(client->channel->base_channel);
> >  }
> >  
> >  static void snd_disconnect_channel(SndChannelClient *client)
> >  {
> > -    SndWorker *worker;
> > +    SndChannel *channel;
> >      RedsState *reds;
> >      RedChannel *red_channel;
> >      uint32_t type;
> > @@ -220,17 +220,17 @@ static void
> > snd_disconnect_channel(SndChannelClient *client)
> >      g_object_get(red_channel, "channel-type", &type, NULL);
> >      spice_debug("SndChannelClient=%p rcc=%p type=%d",
> >                   client, client->channel_client, type);
> > -    worker = client->worker;
> > +    channel = client->channel;
> >      client->cleanup(client);
> > -    red_channel_client_disconnect(worker->connection-
> > >channel_client);
> > -    worker->connection->channel_client = NULL;
> > +    red_channel_client_disconnect(channel->connection-
> > >channel_client);
> > +    channel->connection->channel_client = NULL;
> >      reds_core_watch_remove(reds, client->stream->watch);
> >      client->stream->watch = NULL;
> >      reds_stream_free(client->stream);
> >      client->stream = NULL;
> >      spice_marshaller_destroy(client->send_data.marshaller);
> >      snd_channel_unref(client);
> > -    worker->connection = NULL;
> > +    channel->connection = NULL;
> >  }
> >  
> >  static void snd_playback_free_frame(PlaybackChannelClient
> > *playback_client, AudioFrame *frame)
> > @@ -384,11 +384,11 @@ static int
> > snd_record_handle_message(SndChannelClient *client, size_t size, uint
> >          return snd_record_handle_write((RecordChannelClient
> > *)client, size, message);
> >      case SPICE_MSGC_RECORD_MODE: {
> >          SpiceMsgcRecordMode *mode = (SpiceMsgcRecordMode *)message;
> > -        SndWorker *worker = client->worker;
> > +        SndChannel *channel = client->channel;
> >          record_client->mode_time = mode->time;
> >          if (mode->mode != SPICE_AUDIO_DATA_MODE_RAW) {
> > -            if (snd_codec_is_capable(mode->mode, worker->frequency))
> > {
> > -                if (snd_codec_create(&record_client->codec, mode-
> > >mode, worker->frequency,
> > +            if (snd_codec_is_capable(mode->mode, channel-
> > >frequency)) {
> > +                if (snd_codec_create(&record_client->codec, mode-
> > >mode, channel->frequency,
> >                                       SND_CODEC_DECODE) ==
> > SND_CODEC_OK) {
> >                      record_client->mode = mode->mode;
> >                  } else {
> > @@ -571,7 +571,7 @@ static int snd_send_volume(SndChannelClient
> > *client, uint32_t cap, int msg)
> >  {
> >      SpiceMsgAudioVolume *vol;
> >      uint8_t c;
> > -    SpiceVolumeState *st = &client->worker->volume;
> > +    SpiceVolumeState *st = &client->channel->volume;
> >  
> >      if (!red_channel_client_test_remote_cap(client->channel_client,
> > cap)) {
> >          return TRUE;
> > @@ -600,7 +600,7 @@ static int
> > snd_playback_send_volume(PlaybackChannelClient *playback_client)
> >  static int snd_send_mute(SndChannelClient *client, uint32_t cap, int
> > msg)
> >  {
> >      SpiceMsgAudioMute mute;
> > -    SpiceVolumeState *st = &client->worker->volume;
> > +    SpiceVolumeState *st = &client->channel->volume;
> >  
> >      if (!red_channel_client_test_remote_cap(client->channel_client,
> > cap)) {
> >          return TRUE;
> > @@ -645,7 +645,7 @@ static int
> > snd_playback_send_start(PlaybackChannelClient *playback_client)
> >      }
> >  
> >      start.channels = SPICE_INTERFACE_PLAYBACK_CHAN;
> > -    start.frequency = client->worker->frequency;
> > +    start.frequency = client->channel->frequency;
> >      spice_assert(SPICE_INTERFACE_PLAYBACK_FMT ==
> > SPICE_INTERFACE_AUDIO_FMT_S16);
> >      start.format = SPICE_AUDIO_FMT_S16;
> >      start.time = reds_get_mm_time();
> > @@ -686,7 +686,7 @@ static int
> > snd_record_send_start(RecordChannelClient *record_client)
> >      }
> >  
> >      start.channels = SPICE_INTERFACE_RECORD_CHAN;
> > -    start.frequency = client->worker->frequency;
> > +    start.frequency = client->channel->frequency;
> >      spice_assert(SPICE_INTERFACE_RECORD_FMT ==
> > SPICE_INTERFACE_AUDIO_FMT_S16);
> >      start.format = SPICE_AUDIO_FMT_S16;
> >      spice_marshall_msg_record_start(client->send_data.marshaller,
> > &start);
> > @@ -873,7 +873,7 @@ static void snd_record_send(void* data)
> >      }
> >  }
> >  
> > -static SndChannelClient *__new_channel(SndWorker *worker, int size,
> > uint32_t channel_id,
> > +static SndChannelClient *__new_channel(SndChannel *channel, int
> > size, uint32_t channel_id,
> >                                   RedClient *red_client,
> >                                   RedsStream *stream,
> >                                   int migrate,
> > @@ -892,7 +892,7 @@ static SndChannelClient *__new_channel(SndWorker
> > *worker, int size, uint32_t cha
> >  #endif
> >      int tos;
> >      MainChannelClient *mcc = red_client_get_main(red_client);
> > -    RedsState *reds = red_channel_get_server(worker->base_channel);
> > +    RedsState *reds = red_channel_get_server(channel->base_channel);
> >  
> >      spice_assert(stream);
> >      if ((flags = fcntl(stream->socket, F_GETFL)) == -1) {
> > @@ -934,7 +934,7 @@ static SndChannelClient *__new_channel(SndWorker
> > *worker, int size, uint32_t cha
> >      client->refs = 1;
> >      client->parser = spice_get_client_channel_parser(channel_id,
> > NULL);
> >      client->stream = stream;
> > -    client->worker = worker;
> > +    client->channel = channel;
> >      client->receive_data.message_start = client->receive_data.buf;
> >      client->receive_data.now = client->receive_data.buf;
> >      client->receive_data.end = client->receive_data.buf +
> > sizeof(client->receive_data.buf);
> > @@ -953,7 +953,7 @@ static SndChannelClient *__new_channel(SndWorker
> > *worker, int size, uint32_t cha
> >      client->cleanup = cleanup;
> >  
> >      client->channel_client =
> > -        dummy_channel_client_create(worker->base_channel,
> > red_client,
> > +        dummy_channel_client_create(channel->base_channel,
> > red_client,
> >                                      num_common_caps, common_caps,
> > num_caps, caps);
> >      if (!client->channel_client) {
> >          goto error2;
> > @@ -970,19 +970,19 @@ error1:
> >  
> >  static void snd_disconnect_channel_client(RedChannelClient *rcc)
> >  {
> > -    SndWorker *worker;
> > -    RedChannel *channel = red_channel_client_get_channel(rcc);
> > +    SndChannel *channel;
> > +    RedChannel *red_channel = red_channel_client_get_channel(rcc);
> >      uint32_t type;
> >  
> > +    spice_assert(red_channel);
> > +    channel = (SndChannel *)g_object_get_data(G_OBJECT(red_channel),
> > "sound-channel");
> >      spice_assert(channel);
> > -    worker = (SndWorker *)g_object_get_data(G_OBJECT(channel),
> > "sound-worker");
> > -    spice_assert(worker);
> > -    g_object_get(channel, "channel-type", &type, NULL);
> > +    g_object_get(red_channel, "channel-type", &type, NULL);
> >  
> >      spice_debug("channel-type=%d", type);
> > -    if (worker->connection) {
> > -        spice_assert(worker->connection->channel_client == rcc);
> > -        snd_disconnect_channel(worker->connection);
> > +    if (channel->connection) {
> > +        spice_assert(channel->connection->channel_client == rcc);
> > +        snd_disconnect_channel(channel->connection);
> >      }
> >  }
> >  
> > @@ -998,8 +998,8 @@ SPICE_GNUC_VISIBLE void
> > spice_server_playback_set_volume(SpicePlaybackInstance *
> >                                                    uint8_t nchannels,
> >                                                    uint16_t *volume)
> >  {
> > -    SpiceVolumeState *st = &sin->st->worker.volume;
> > -    SndChannelClient *client = sin->st->worker.connection;
> > +    SpiceVolumeState *st = &sin->st->channel.volume;
> > +    SndChannelClient *client = sin->st->channel.connection;
> >      PlaybackChannelClient *playback_client =
> > SPICE_CONTAINEROF(client, PlaybackChannelClient, base);
> >  
> >      st->volume_nchannels = nchannels;
> > @@ -1014,8 +1014,8 @@ SPICE_GNUC_VISIBLE void
> > spice_server_playback_set_volume(SpicePlaybackInstance *
> >  
> >  SPICE_GNUC_VISIBLE void
> > spice_server_playback_set_mute(SpicePlaybackInstance *sin, uint8_t
> > mute)
> >  {
> > -    SpiceVolumeState *st = &sin->st->worker.volume;
> > -    SndChannelClient *client = sin->st->worker.connection;
> > +    SpiceVolumeState *st = &sin->st->channel.volume;
> > +    SndChannelClient *client = sin->st->channel.connection;
> >      PlaybackChannelClient *playback_client =
> > SPICE_CONTAINEROF(client, PlaybackChannelClient, base);
> >  
> >      st->mute = mute;
> > @@ -1026,11 +1026,11 @@ SPICE_GNUC_VISIBLE void
> > spice_server_playback_set_mute(SpicePlaybackInstance *si
> >      snd_playback_send_mute(playback_client);
> >  }
> >  
> > -static void snd_playback_start(SndWorker *worker)
> > +static void snd_playback_start(SndChannel *channel)
> >  {
> > -    SndChannelClient *client = worker->connection;
> > +    SndChannelClient *client = channel->connection;
> >  
> > -    worker->active = 1;
> > +    channel->active = 1;
> >      if (!client)
> >          return;
> >      spice_assert(!client->active);
> > @@ -1046,15 +1046,15 @@ static void snd_playback_start(SndWorker
> > *worker)
> >  
> >  SPICE_GNUC_VISIBLE void
> > spice_server_playback_start(SpicePlaybackInstance *sin)
> >  {
> > -    return snd_playback_start(&sin->st->worker);
> > +    return snd_playback_start(&sin->st->channel);
> >  }
> >  
> >  SPICE_GNUC_VISIBLE void
> > spice_server_playback_stop(SpicePlaybackInstance *sin)
> >  {
> > -    SndChannelClient *client = sin->st->worker.connection;
> > +    SndChannelClient *client = sin->st->channel.connection;
> >      PlaybackChannelClient *playback_client =
> > SPICE_CONTAINEROF(client, PlaybackChannelClient, base);
> >  
> > -    sin->st->worker.active = 0;
> > +    sin->st->channel.active = 0;
> >      if (!client)
> >          return;
> >      spice_assert(playback_client->base.active);
> > @@ -1079,7 +1079,7 @@ SPICE_GNUC_VISIBLE void
> > spice_server_playback_stop(SpicePlaybackInstance *sin)
> >  SPICE_GNUC_VISIBLE void
> > spice_server_playback_get_buffer(SpicePlaybackInstance *sin,
> >                                                           uint32_t
> > **frame, uint32_t *num_samples)
> >  {
> > -    SndChannelClient *client = sin->st->worker.connection;
> > +    SndChannelClient *client = sin->st->channel.connection;
> >      PlaybackChannelClient *playback_client =
> > SPICE_CONTAINEROF(client, PlaybackChannelClient, base);
> >  
> >      if (!client || !playback_client->free_frames) {
> > @@ -1104,7 +1104,7 @@ SPICE_GNUC_VISIBLE void
> > spice_server_playback_put_samples(SpicePlaybackInstance
> >      playback_client = frame->client;
> >      spice_assert(playback_client);
> >      if (!snd_channel_unref(&playback_client->base) ||
> > -        sin->st->worker.connection != &playback_client->base) {
> > +        sin->st->channel.connection != &playback_client->base) {
> >          /* lost last reference, client has been destroyed previously
> > */
> >          spice_info("audio samples belong to a disconnected client");
> >          return;
> > @@ -1122,7 +1122,7 @@ SPICE_GNUC_VISIBLE void
> > spice_server_playback_put_samples(SpicePlaybackInstance
> >  
> >  void snd_set_playback_latency(RedClient *client, uint32_t latency)
> >  {
> > -    SndWorker *now = workers;
> > +    SndChannel *now = snd_channels;
> >  
> >      for (; now; now = now->next) {
> >          uint32_t type;
> > @@ -1159,18 +1159,18 @@ static int snd_desired_audio_mode(int
> > playback_compression, int frequency,
> >      return SPICE_AUDIO_DATA_MODE_RAW;
> >  }
> >  
> > -static void on_new_playback_channel(SndWorker *worker,
> > SndChannelClient *snd_channel)
> > +static void on_new_playback_channel(SndChannel *channel,
> > SndChannelClient *snd_channel)
> >  {
> > -    RedsState *reds = red_channel_get_server(worker->base_channel);
> > +    RedsState *reds = red_channel_get_server(channel->base_channel);
> >  
> >      spice_assert(snd_channel);
> >  
> > -    worker->connection = snd_channel;
> > +    channel->connection = snd_channel;
> >      snd_set_command(snd_channel, SND_PLAYBACK_MODE_MASK);
> >      if (snd_channel->active) {
> >          snd_set_command(snd_channel, SND_CTRL_MASK);
> >      }
> > -    if (worker->volume.volume_nchannels) {
> > +    if (channel->volume.volume_nchannels) {
> >          snd_set_command(snd_channel, SND_VOLUME_MASK);
> >      }
> >      if (snd_channel->active) {
> > @@ -1189,16 +1189,16 @@ static void
> > snd_playback_cleanup(SndChannelClient *client)
> >      snd_codec_destroy(&playback_client->codec);
> >  }
> >  
> > -static void snd_set_playback_peer(RedChannel *channel, RedClient
> > *client, RedsStream *stream,
> > +static void snd_set_playback_peer(RedChannel *red_channel, RedClient
> > *client, RedsStream *stream,
> >                                    int migration, int
> > num_common_caps, uint32_t *common_caps,
> >                                    int num_caps, uint32_t *caps)
> >  {
> > -    SndWorker *worker = g_object_get_data(G_OBJECT(channel), "sound-
> > worker");
> > +    SndChannel *channel = g_object_get_data(G_OBJECT(red_channel),
> > "sound-channel");
> >      PlaybackChannelClient *playback_client;
> >  
> > -    snd_disconnect_channel(worker->connection);
> > +    snd_disconnect_channel(channel->connection);
> >  
> > -    if (!(playback_client = (PlaybackChannelClient
> > *)__new_channel(worker,
> > +    if (!(playback_client = (PlaybackChannelClient
> > *)__new_channel(channel,
> >                                                                sizeof
> > (*playback_client),
> >                                                                SPICE_
> > CHANNEL_PLAYBACK,
> >                                                                client
> > ,
> > @@ -1221,12 +1221,12 @@ static void snd_set_playback_peer(RedChannel
> > *channel, RedClient *client, RedsSt
> >      int client_can_opus =
> > red_channel_client_test_remote_cap(playback_client-
> > >base.channel_client,
> >                                            SPICE_PLAYBACK_CAP_OPUS);
> >      int playback_compression =
> > -        reds_config_get_playback_compression(red_channel_get_server(
> > channel));
> > -    int desired_mode = snd_desired_audio_mode(playback_compression,
> > worker->frequency,
> > +        reds_config_get_playback_compression(red_channel_get_server(
> > red_channel));
> > +    int desired_mode = snd_desired_audio_mode(playback_compression,
> > channel->frequency,
> >                                                client_can_celt,
> > client_can_opus);
> >      playback_client->mode = SPICE_AUDIO_DATA_MODE_RAW;
> >      if (desired_mode != SPICE_AUDIO_DATA_MODE_RAW) {
> > -        if (snd_codec_create(&playback_client->codec, desired_mode,
> > worker->frequency,
> > +        if (snd_codec_create(&playback_client->codec, desired_mode,
> > channel->frequency,
> >                               SND_CODEC_ENCODE) == SND_CODEC_OK) {
> >              playback_client->mode = desired_mode;
> >          } else {
> > @@ -1235,29 +1235,29 @@ static void snd_set_playback_peer(RedChannel
> > *channel, RedClient *client, RedsSt
> >      }
> >  
> >      if (!red_client_during_migrate_at_target(client)) {
> > -        on_new_playback_channel(worker, &playback_client->base);
> > +        on_new_playback_channel(channel, &playback_client->base);
> >      }
> >  
> > -    if (worker->active) {
> > -        snd_playback_start(worker);
> > +    if (channel->active) {
> > +        snd_playback_start(channel);
> >      }
> > -    snd_playback_send(worker->connection);
> > +    snd_playback_send(channel->connection);
> >  }
> >  
> >  static void snd_record_migrate_channel_client(RedChannelClient *rcc)
> >  {
> > -    SndWorker *worker;
> > -    RedChannel *channel = red_channel_client_get_channel(rcc);
> > +    SndChannel *channel;
> > +    RedChannel *red_channel = red_channel_client_get_channel(rcc);
> >  
> >      spice_debug(NULL);
> > +    spice_assert(red_channel);
> > +    channel = (SndChannel *)g_object_get_data(G_OBJECT(red_channel),
> > "sound-channel");
> >      spice_assert(channel);
> > -    worker = (SndWorker *)g_object_get_data(G_OBJECT(channel),
> > "sound-worker");
> > -    spice_assert(worker);
> >  
> > -    if (worker->connection) {
> > -        spice_assert(worker->connection->channel_client == rcc);
> > -        snd_set_command(worker->connection, SND_MIGRATE_MASK);
> > -        snd_record_send(worker->connection);
> > +    if (channel->connection) {
> > +        spice_assert(channel->connection->channel_client == rcc);
> > +        snd_set_command(channel->connection, SND_MIGRATE_MASK);
> > +        snd_record_send(channel->connection);
> >      }
> >  }
> >  
> > @@ -1265,8 +1265,8 @@ SPICE_GNUC_VISIBLE void
> > spice_server_record_set_volume(SpiceRecordInstance *sin,
> >                                                  uint8_t nchannels,
> >                                                  uint16_t *volume)
> >  {
> > -    SpiceVolumeState *st = &sin->st->worker.volume;
> > -    SndChannelClient *client = sin->st->worker.connection;
> > +    SpiceVolumeState *st = &sin->st->channel.volume;
> > +    SndChannelClient *client = sin->st->channel.connection;
> >      RecordChannelClient *record_client = SPICE_CONTAINEROF(client,
> > RecordChannelClient, base);
> >  
> >      st->volume_nchannels = nchannels;
> > @@ -1281,8 +1281,8 @@ SPICE_GNUC_VISIBLE void
> > spice_server_record_set_volume(SpiceRecordInstance *sin,
> >  
> >  SPICE_GNUC_VISIBLE void
> > spice_server_record_set_mute(SpiceRecordInstance *sin, uint8_t mute)
> >  {
> > -    SpiceVolumeState *st = &sin->st->worker.volume;
> > -    SndChannelClient *client = sin->st->worker.connection;
> > +    SpiceVolumeState *st = &sin->st->channel.volume;
> > +    SndChannelClient *client = sin->st->channel.connection;
> >      RecordChannelClient *record_client = SPICE_CONTAINEROF(client,
> > RecordChannelClient, base);
> >  
> >      st->mute = mute;
> > @@ -1293,12 +1293,12 @@ SPICE_GNUC_VISIBLE void
> > spice_server_record_set_mute(SpiceRecordInstance *sin, u
> >      snd_record_send_mute(record_client);
> >  }
> >  
> > -static void snd_record_start(SndWorker *worker)
> > +static void snd_record_start(SndChannel *channel)
> >  {
> > -    SndChannelClient *client = worker->connection;
> > +    SndChannelClient *client = channel->connection;
> >      RecordChannelClient *record_client = SPICE_CONTAINEROF(client,
> > RecordChannelClient, base);
> >  
> > -    worker->active = 1;
> > +    channel->active = 1;
> >      if (!client)
> >          return;
> >      spice_assert(!client->active);
> > @@ -1315,15 +1315,15 @@ static void snd_record_start(SndWorker
> > *worker)
> >  
> >  SPICE_GNUC_VISIBLE void
> > spice_server_record_start(SpiceRecordInstance *sin)
> >  {
> > -    snd_record_start(&sin->st->worker);
> > +    snd_record_start(&sin->st->channel);
> >  }
> >  
> >  SPICE_GNUC_VISIBLE void spice_server_record_stop(SpiceRecordInstance
> > *sin)
> >  {
> > -    SndChannelClient *client = sin->st->worker.connection;
> > +    SndChannelClient *client = sin->st->channel.connection;
> >      RecordChannelClient *record_client = SPICE_CONTAINEROF(client,
> > RecordChannelClient, base);
> >  
> > -    sin->st->worker.active = 0;
> > +    sin->st->channel.active = 0;
> >      if (!client)
> >          return;
> >      spice_assert(record_client->base.active);
> > @@ -1339,7 +1339,7 @@ SPICE_GNUC_VISIBLE void
> > spice_server_record_stop(SpiceRecordInstance *sin)
> >  SPICE_GNUC_VISIBLE uint32_t
> > spice_server_record_get_samples(SpiceRecordInstance *sin,
> >                                                              uint32_t
> > *samples, uint32_t bufsize)
> >  {
> > -    SndChannelClient *client = sin->st->worker.connection;
> > +    SndChannelClient *client = sin->st->channel.connection;
> >      RecordChannelClient *record_client = SPICE_CONTAINEROF(client,
> > RecordChannelClient, base);
> >      uint32_t read_pos;
> >      uint32_t now;
> > @@ -1356,9 +1356,9 @@ SPICE_GNUC_VISIBLE uint32_t
> > spice_server_record_get_samples(SpiceRecordInstance
> >      len = MIN(record_client->write_pos - record_client->read_pos,
> > bufsize);
> >  
> >      if (len < bufsize) {
> > -        SndWorker *worker = record_client->base.worker;
> > +        SndChannel *channel = record_client->base.channel;
> >          snd_receive(&record_client->base);
> > -        if (!worker->connection) {
> > +        if (!channel->connection) {
> >              return 0;
> >          }
> >          len = MIN(record_client->write_pos - record_client-
> > >read_pos, bufsize);
> > @@ -1387,41 +1387,41 @@ static uint32_t
> > snd_get_best_rate(SndChannelClient *client, uint32_t cap_opus)
> >      return SND_CODEC_CELT_PLAYBACK_FREQ;
> >  }
> >  
> > -static void snd_set_rate(SndWorker *worker, uint32_t frequency,
> > uint32_t cap_opus)
> > +static void snd_set_rate(SndChannel *channel, uint32_t frequency,
> > uint32_t cap_opus)
> >  {
> > -    RedChannel *channel = worker->base_channel;
> > -    worker->frequency = frequency;
> > -    if (channel && snd_codec_is_capable(SPICE_AUDIO_DATA_MODE_OPUS,
> > frequency)) {
> > -        red_channel_set_cap(channel, cap_opus);
> > +    RedChannel *red_channel = channel->base_channel;
> > +    channel->frequency = frequency;
> > +    if (red_channel &&
> > snd_codec_is_capable(SPICE_AUDIO_DATA_MODE_OPUS, frequency)) {
> > +        red_channel_set_cap(red_channel, cap_opus);
> >      }
> >  }
> >  
> >  SPICE_GNUC_VISIBLE uint32_t
> > spice_server_get_best_playback_rate(SpicePlaybackInstance *sin)
> >  {
> > -    return snd_get_best_rate(sin ? sin->st->worker.connection :
> > NULL, SPICE_PLAYBACK_CAP_OPUS);
> > +    return snd_get_best_rate(sin ? sin->st->channel.connection :
> > NULL, SPICE_PLAYBACK_CAP_OPUS);
> >  }
> >  
> >  SPICE_GNUC_VISIBLE void
> > spice_server_set_playback_rate(SpicePlaybackInstance *sin, uint32_t
> > frequency)
> >  {
> > -    snd_set_rate(&sin->st->worker, frequency,
> > SPICE_PLAYBACK_CAP_OPUS);
> > +    snd_set_rate(&sin->st->channel, frequency,
> > SPICE_PLAYBACK_CAP_OPUS);
> >  }
> >  
> >  SPICE_GNUC_VISIBLE uint32_t
> > spice_server_get_best_record_rate(SpiceRecordInstance *sin)
> >  {
> > -    return snd_get_best_rate(sin ? sin->st->worker.connection :
> > NULL, SPICE_RECORD_CAP_OPUS);
> > +    return snd_get_best_rate(sin ? sin->st->channel.connection :
> > NULL, SPICE_RECORD_CAP_OPUS);
> >  }
> >  
> >  SPICE_GNUC_VISIBLE void
> > spice_server_set_record_rate(SpiceRecordInstance *sin, uint32_t
> > frequency)
> >  {
> > -    snd_set_rate(&sin->st->worker, frequency,
> > SPICE_RECORD_CAP_OPUS);
> > +    snd_set_rate(&sin->st->channel, frequency,
> > SPICE_RECORD_CAP_OPUS);
> >  }
> >  
> > -static void on_new_record_channel(SndWorker *worker,
> > SndChannelClient *snd_channel)
> > +static void on_new_record_channel(SndChannel *channel,
> > SndChannelClient *snd_channel)
> >  {
> >      spice_assert(snd_channel);
> >  
> > -    worker->connection = snd_channel ;
> > -    if (worker->volume.volume_nchannels) {
> > +    channel->connection = snd_channel ;
> > +    if (channel->volume.volume_nchannels) {
> >          snd_set_command(snd_channel, SND_VOLUME_MASK);
> >      }
> >      if (snd_channel->active) {
> > @@ -1435,16 +1435,16 @@ static void
> > snd_record_cleanup(SndChannelClient *client)
> >      snd_codec_destroy(&record_client->codec);
> >  }
> >  
> > -static void snd_set_record_peer(RedChannel *channel, RedClient
> > *client, RedsStream *stream,
> > +static void snd_set_record_peer(RedChannel *red_channel, RedClient
> > *client, RedsStream *stream,
> >                                  int migration, int num_common_caps,
> > uint32_t *common_caps,
> >                                  int num_caps, uint32_t *caps)
> >  {
> > -    SndWorker *worker = g_object_get_data(G_OBJECT(channel), "sound-
> > worker");
> > +    SndChannel *channel = g_object_get_data(G_OBJECT(red_channel),
> > "sound-channel");
> >      RecordChannelClient *record_client;
> >  
> > -    snd_disconnect_channel(worker->connection);
> > +    snd_disconnect_channel(channel->connection);
> >  
> > -    if (!(record_client = (RecordChannelClient
> > *)__new_channel(worker,
> > +    if (!(record_client = (RecordChannelClient
> > *)__new_channel(channel,
> >                                                            sizeof(*re
> > cord_client),
> >                                                            SPICE_CHAN
> > NEL_RECORD,
> >                                                            client,
> > @@ -1461,42 +1461,42 @@ static void snd_set_record_peer(RedChannel
> > *channel, RedClient *client, RedsStre
> >  
> >      record_client->mode = SPICE_AUDIO_DATA_MODE_RAW;
> >  
> > -    on_new_record_channel(worker, &record_client->base);
> > -    if (worker->active) {
> > -        snd_record_start(worker);
> > +    on_new_record_channel(channel, &record_client->base);
> > +    if (channel->active) {
> > +        snd_record_start(channel);
> >      }
> > -    snd_record_send(worker->connection);
> > +    snd_record_send(channel->connection);
> >  }
> >  
> >  static void snd_playback_migrate_channel_client(RedChannelClient
> > *rcc)
> >  {
> > -    SndWorker *worker;
> > -    RedChannel *channel = red_channel_client_get_channel(rcc);
> > +    SndChannel *channel;
> > +    RedChannel *red_channel = red_channel_client_get_channel(rcc);
> >  
> > +    spice_assert(red_channel);
> > +    channel = (SndChannel *)g_object_get_data(G_OBJECT(red_channel),
> > "sound-channel");
> >      spice_assert(channel);
> > -    worker = (SndWorker *)g_object_get_data(G_OBJECT(channel),
> > "sound-worker");
> > -    spice_assert(worker);
> >      spice_debug(NULL);
> >  
> > -    if (worker->connection) {
> > -        spice_assert(worker->connection->channel_client == rcc);
> > -        snd_set_command(worker->connection, SND_MIGRATE_MASK);
> > -        snd_playback_send(worker->connection);
> > +    if (channel->connection) {
> > +        spice_assert(channel->connection->channel_client == rcc);
> > +        snd_set_command(channel->connection, SND_MIGRATE_MASK);
> > +        snd_playback_send(channel->connection);
> >      }
> >  }
> >  
> > -static void add_worker(SndWorker *worker)
> > +static void add_channel(SndChannel *channel)
> >  {
> > -    worker->next = workers;
> > -    workers = worker;
> > +    channel->next = snd_channels;
> > +    snd_channels = channel;
> >  }
> >  
> > -static void remove_worker(SndWorker *worker)
> > +static void remove_channel(SndChannel *channel)
> >  {
> > -    SndWorker **now = &workers;
> > +    SndChannel **now = &snd_channels;
> >      while (*now) {
> > -        if (*now == worker) {
> > -            *now = worker->next;
> > +        if (*now == channel) {
> > +            *now = channel->next;
> >              return;
> >          }
> >          now = &(*now)->next;
> > @@ -1506,73 +1506,73 @@ static void remove_worker(SndWorker *worker)
> >  
> >  void snd_attach_playback(RedsState *reds, SpicePlaybackInstance
> > *sin)
> >  {
> > -    SndWorker *playback_worker;
> > -    RedChannel *channel;
> > +    SndChannel *playback;
> > +    RedChannel *red_channel;
> >      ClientCbs client_cbs = { NULL, };
> >  
> >      sin->st = spice_new0(SpicePlaybackState, 1);
> > -    playback_worker = &sin->st->worker;
> > -    playback_worker->frequency = SND_CODEC_CELT_PLAYBACK_FREQ; /*
> > Default to the legacy rate */
> > +    playback = &sin->st->channel;
> > +    playback->frequency = SND_CODEC_CELT_PLAYBACK_FREQ; /* Default
> > to the legacy rate */
> >  
> > -    // TODO: Make RedChannel base of worker? instead of assigning it
> > to channel->data
> > -    channel = dummy_channel_new(reds, SPICE_CHANNEL_PLAYBACK, 0);
> > +    // TODO: Make RedChannel base of channel? instead of assigning
> > it to channel->data
> > +    red_channel = dummy_channel_new(reds, SPICE_CHANNEL_PLAYBACK,
> > 0);
> >  
> > -    g_object_set_data(G_OBJECT(channel), "sound-worker",
> > playback_worker);
> > +    g_object_set_data(G_OBJECT(red_channel), "sound-channel",
> > playback);
> >      client_cbs.connect = snd_set_playback_peer;
> >      client_cbs.disconnect = snd_disconnect_channel_client;
> >      client_cbs.migrate = snd_playback_migrate_channel_client;
> > -    red_channel_register_client_cbs(channel, &client_cbs,
> > playback_worker);
> > +    red_channel_register_client_cbs(red_channel, &client_cbs,
> > playback);
> >  
> >      if (snd_codec_is_capable(SPICE_AUDIO_DATA_MODE_CELT_0_5_1,
> > SND_CODEC_ANY_FREQUENCY))
> > -        red_channel_set_cap(channel, SPICE_PLAYBACK_CAP_CELT_0_5_1);
> > +        red_channel_set_cap(red_channel,
> > SPICE_PLAYBACK_CAP_CELT_0_5_1);
> >  
> > -    red_channel_set_cap(channel, SPICE_PLAYBACK_CAP_VOLUME);
> > +    red_channel_set_cap(red_channel, SPICE_PLAYBACK_CAP_VOLUME);
> >  
> > -    playback_worker->base_channel = channel;
> > -    add_worker(playback_worker);
> > -    reds_register_channel(reds, channel);
> > +    playback->base_channel = red_channel;
> > +    add_channel(playback);
> > +    reds_register_channel(reds, red_channel);
> >  }
> >  
> >  void snd_attach_record(RedsState *reds, SpiceRecordInstance *sin)
> >  {
> > -    SndWorker *record_worker;
> > -    RedChannel *channel;
> > +    SndChannel *record;
> > +    RedChannel *red_channel;
> >      ClientCbs client_cbs = { NULL, };
> >  
> >      sin->st = spice_new0(SpiceRecordState, 1);
> > -    record_worker = &sin->st->worker;
> > -    record_worker->frequency = SND_CODEC_CELT_PLAYBACK_FREQ; /*
> > Default to the legacy rate */
> > +    record = &sin->st->channel;
> > +    record->frequency = SND_CODEC_CELT_PLAYBACK_FREQ; /* Default to
> > the legacy rate */
> >  
> > -    // TODO: Make RedChannel base of worker? instead of assigning it
> > to channel->data
> > -    channel = dummy_channel_new(reds, SPICE_CHANNEL_RECORD, 0);
> > +    // TODO: Make RedChannel base of channel? instead of assigning
> > it to channel->data
> > +    red_channel = dummy_channel_new(reds, SPICE_CHANNEL_RECORD, 0);
> >  
> > -    g_object_set_data(G_OBJECT(channel), "sound-worker",
> > record_worker);
> > +    g_object_set_data(G_OBJECT(red_channel), "sound-channel",
> > record);
> >      client_cbs.connect = snd_set_record_peer;
> >      client_cbs.disconnect = snd_disconnect_channel_client;
> >      client_cbs.migrate = snd_record_migrate_channel_client;
> > -    red_channel_register_client_cbs(channel, &client_cbs,
> > record_worker);
> > +    red_channel_register_client_cbs(red_channel, &client_cbs,
> > record);
> >      if (snd_codec_is_capable(SPICE_AUDIO_DATA_MODE_CELT_0_5_1,
> > SND_CODEC_ANY_FREQUENCY))
> > -        red_channel_set_cap(channel, SPICE_RECORD_CAP_CELT_0_5_1);
> > -    red_channel_set_cap(channel, SPICE_RECORD_CAP_VOLUME);
> > +        red_channel_set_cap(red_channel,
> > SPICE_RECORD_CAP_CELT_0_5_1);
> > +    red_channel_set_cap(red_channel, SPICE_RECORD_CAP_VOLUME);
> >  
> > -    record_worker->base_channel = channel;
> > -    add_worker(record_worker);
> > -    reds_register_channel(reds, channel);
> > +    record->base_channel = red_channel;
> > +    add_channel(record);
> > +    reds_register_channel(reds, red_channel);
> >  }
> >  
> > -static void snd_detach_common(SndWorker *worker)
> > +static void snd_detach_common(SndChannel *channel)
> >  {
> > -    if (!worker) {
> > +    if (!channel) {
> >          return;
> >      }
> > -    RedsState *reds = red_channel_get_server(worker->base_channel);
> > +    RedsState *reds = red_channel_get_server(channel->base_channel);
> >  
> > -    remove_worker(worker);
> > -    snd_disconnect_channel(worker->connection);
> > -    reds_unregister_channel(reds, worker->base_channel);
> > -    red_channel_destroy(worker->base_channel);
> > -    free(worker->volume.volume);
> > -    worker->volume.volume = NULL;
> > +    remove_channel(channel);
> > +    snd_disconnect_channel(channel->connection);
> > +    reds_unregister_channel(reds, channel->base_channel);
> > +    red_channel_destroy(channel->base_channel);
> > +    free(channel->volume.volume);
> > +    channel->volume.volume = NULL;
> >  }
> >  
> >  static void spice_playback_state_free(SpicePlaybackState *st)
> > @@ -1582,7 +1582,7 @@ static void
> > spice_playback_state_free(SpicePlaybackState *st)
> >  
> >  void snd_detach_playback(SpicePlaybackInstance *sin)
> >  {
> > -    snd_detach_common(&sin->st->worker);
> > +    snd_detach_common(&sin->st->channel);
> >      spice_playback_state_free(sin->st);
> >  }
> >  
> > @@ -1593,13 +1593,13 @@ static void
> > spice_record_state_free(SpiceRecordState *st)
> >  
> >  void snd_detach_record(SpiceRecordInstance *sin)
> >  {
> > -    snd_detach_common(&sin->st->worker);
> > +    snd_detach_common(&sin->st->channel);
> >      spice_record_state_free(sin->st);
> >  }
> >  
> >  void snd_set_playback_compression(int on)
> >  {
> > -    SndWorker *now = workers;
> > +    SndChannel *now = snd_channels;
> >  
> >      for (; now; now = now->next) {
> >          uint32_t type;
> 


More information about the Spice-devel mailing list