[Spice-devel] [PATCH v2 1/6] sound: Remove on_new_playback_channel_client()
Jonathon Jongsma
jjongsma at redhat.com
Mon May 1 14:54:19 UTC 2017
I believe that this is the only patch of the series that has not been
formally ACKed yet. Any takers? In the first version of the patch
Frediano found a bug where I was returning too early from
playback_channel_client_constructed(). So that is the only real change
in the second version.
Jonathon
On Mon, 2017-04-24 at 12:09 -0500, Jonathon Jongsma wrote:
> This function is only called from the constructor, so move all of
> that
> code into the constructor.
>
> Signed-off-by: Jonathon Jongsma <jjongsma at redhat.com>
> ---
> server/sound.c | 48 ++++++++++++++++++++----------------------------
> 1 file changed, 20 insertions(+), 28 deletions(-)
>
> diff --git a/server/sound.c b/server/sound.c
> index 72dfefb..0e48255 100644
> --- a/server/sound.c
> +++ b/server/sound.c
> @@ -1007,29 +1007,6 @@ static int snd_desired_audio_mode(bool
> playback_compression, int frequency,
> return SPICE_AUDIO_DATA_MODE_RAW;
> }
>
> -static void on_new_playback_channel_client(SndChannel *channel,
> SndChannelClient *client)
> -{
> - RedsState *reds = red_channel_get_server(RED_CHANNEL(channel));
> - RedClient *red_client =
> red_channel_client_get_client(RED_CHANNEL_CLIENT(client));
> -
> - spice_assert(client);
> -
> - channel->connection = client;
> - if (red_client_during_migrate_at_target(red_client)) {
> - return;
> - }
> - snd_set_command(client, SND_PLAYBACK_MODE_MASK);
> - if (client->active) {
> - snd_set_command(client, SND_CTRL_MASK);
> - }
> - if (channel->volume.volume_nchannels) {
> - snd_set_command(client, SND_VOLUME_MUTE_MASK);
> - }
> - if (client->active) {
> - reds_disable_mm_time(reds);
> - }
> -}
> -
> static void
> playback_channel_client_finalize(GObject *object)
> {
> @@ -1058,14 +1035,17 @@ static void
> playback_channel_client_constructed(GObject *object)
> {
> PlaybackChannelClient *playback_client =
> PLAYBACK_CHANNEL_CLIENT(object);
> - RedChannel *red_channel =
> red_channel_client_get_channel(RED_CHANNEL_CLIENT(playback_client));
> + RedChannelClient *rcc = RED_CHANNEL_CLIENT(playback_client);
> + RedChannel *red_channel = red_channel_client_get_channel(rcc);
> SndChannel *channel = SND_CHANNEL(red_channel);
> + RedClient *red_client = red_channel_client_get_client(rcc);
> + RedsState *reds = red_channel_get_server(red_channel);
> + SndChannelClient *scc = SND_CHANNEL_CLIENT(playback_client);
>
> G_OBJECT_CLASS(playback_channel_client_parent_class)-
> >constructed(object);
>
> - SND_CHANNEL_CLIENT(playback_client)->on_message_done =
> snd_playback_on_message_done;
> + scc->on_message_done = snd_playback_on_message_done;
>
> - RedChannelClient *rcc = RED_CHANNEL_CLIENT(playback_client);
> bool client_can_celt = red_channel_client_test_remote_cap(rcc,
> SPICE_PLAYBACK_CAP_CELT_0_
> 5_1);
> bool client_can_opus = red_channel_client_test_remote_cap(rcc,
> @@ -1086,12 +1066,24 @@ playback_channel_client_constructed(GObject
> *object)
> spice_debug("playback client %p using mode %s", playback_client,
> spice_audio_data_mode_to_string(playback_client-
> >mode));
>
> - on_new_playback_channel_client(channel,
> SND_CHANNEL_CLIENT(playback_client));
> + channel->connection = scc;
> + if (!red_client_during_migrate_at_target(red_client)) {
> + snd_set_command(scc, SND_PLAYBACK_MODE_MASK);
> + if (scc->active) {
> + snd_set_command(scc, SND_CTRL_MASK);
> + }
> + if (channel->volume.volume_nchannels) {
> + snd_set_command(scc, SND_VOLUME_MUTE_MASK);
> + }
> + if (scc->active) {
> + reds_disable_mm_time(reds);
> + }
> + }
>
> if (channel->active) {
> snd_playback_start(channel);
> }
> - snd_send(SND_CHANNEL_CLIENT(playback_client));
> + snd_send(scc);
> }
>
> static void snd_set_peer(RedChannel *red_channel, RedClient *client,
> RedsStream *stream,
More information about the Spice-devel
mailing list