[Spice-devel] [PATCH spice-server v2] sound: Unify commands

Frediano Ziglio fziglio at redhat.com
Tue Nov 29 11:35:51 UTC 2016


Use same constants for common commands.
This will allow code reuse between Record and Playback.

Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
 server/sound.c | 79 +++++++++++++++++++++++++++-------------------------------
 1 file changed, 37 insertions(+), 42 deletions(-)

Changes since v1:
- extend commit message.

diff --git a/server/sound.c b/server/sound.c
index 332cf0c..8eddd2b 100644
--- a/server/sound.c
+++ b/server/sound.c
@@ -52,32 +52,27 @@
 #define SND_RECEIVE_BUF_SIZE     (16 * 1024 * 2)
 #define RECORD_SAMPLES_SIZE (SND_RECEIVE_BUF_SIZE >> 2)
 
+enum SndCommand {
+    SND_MIGRATE,
+    SND_CTRL,
+    SND_VOLUME,
+    SND_END_COMMAND,
+};
+
 enum PlaybackCommand {
-    SND_PLAYBACK_MIGRATE,
-    SND_PLAYBACK_MODE,
-    SND_PLAYBACK_CTRL,
+    SND_PLAYBACK_MODE = SND_END_COMMAND,
     SND_PLAYBACK_PCM,
-    SND_PLAYBACK_VOLUME,
     SND_PLAYBACK_LATENCY,
 };
 
-enum RecordCommand {
-    SND_RECORD_MIGRATE,
-    SND_RECORD_CTRL,
-    SND_RECORD_VOLUME,
-};
+#define SND_MIGRATE_MASK (1 << SND_MIGRATE)
+#define SND_CTRL_MASK (1 << SND_CTRL)
+#define SND_VOLUME_MASK (1 << SND_VOLUME)
 
-#define SND_PLAYBACK_MIGRATE_MASK (1 << SND_PLAYBACK_MIGRATE)
 #define SND_PLAYBACK_MODE_MASK (1 << SND_PLAYBACK_MODE)
-#define SND_PLAYBACK_CTRL_MASK (1 << SND_PLAYBACK_CTRL)
 #define SND_PLAYBACK_PCM_MASK (1 << SND_PLAYBACK_PCM)
-#define SND_PLAYBACK_VOLUME_MASK (1 << SND_PLAYBACK_VOLUME)
 #define SND_PLAYBACK_LATENCY_MASK ( 1 << SND_PLAYBACK_LATENCY)
 
-#define SND_RECORD_MIGRATE_MASK (1 << SND_RECORD_MIGRATE)
-#define SND_RECORD_CTRL_MASK (1 << SND_RECORD_CTRL)
-#define SND_RECORD_VOLUME_MASK (1 << SND_RECORD_VOLUME)
-
 typedef struct SndChannel SndChannel;
 typedef void (*snd_channel_send_messages_proc)(void *in_channel);
 typedef int (*snd_channel_handle_message_proc)(SndChannel *channel, size_t size, uint32_t type, void *message);
@@ -818,24 +813,24 @@ static void snd_playback_send(void* data)
                 return;
             }
         }
-        if (channel->command & SND_PLAYBACK_CTRL_MASK) {
+        if (channel->command & SND_CTRL_MASK) {
             if (!snd_playback_send_ctl(playback_channel)) {
                 return;
             }
-            channel->command &= ~SND_PLAYBACK_CTRL_MASK;
+            channel->command &= ~SND_CTRL_MASK;
         }
-        if (channel->command & SND_PLAYBACK_VOLUME_MASK) {
+        if (channel->command & SND_VOLUME_MASK) {
             if (!snd_playback_send_volume(playback_channel) ||
                 !snd_playback_send_mute(playback_channel)) {
                 return;
             }
-            channel->command &= ~SND_PLAYBACK_VOLUME_MASK;
+            channel->command &= ~SND_VOLUME_MASK;
         }
-        if (channel->command & SND_PLAYBACK_MIGRATE_MASK) {
+        if (channel->command & SND_MIGRATE_MASK) {
             if (!snd_playback_send_migrate(playback_channel)) {
                 return;
             }
-            channel->command &= ~SND_PLAYBACK_MIGRATE_MASK;
+            channel->command &= ~SND_MIGRATE_MASK;
         }
         if (channel->command & SND_PLAYBACK_LATENCY_MASK) {
             if (!snd_playback_send_latency(playback_channel)) {
@@ -856,24 +851,24 @@ static void snd_record_send(void* data)
     }
 
     while (channel->command) {
-        if (channel->command & SND_RECORD_CTRL_MASK) {
+        if (channel->command & SND_CTRL_MASK) {
             if (!snd_record_send_ctl(record_channel)) {
                 return;
             }
-            channel->command &= ~SND_RECORD_CTRL_MASK;
+            channel->command &= ~SND_CTRL_MASK;
         }
-        if (channel->command & SND_RECORD_VOLUME_MASK) {
+        if (channel->command & SND_VOLUME_MASK) {
             if (!snd_record_send_volume(record_channel) ||
                 !snd_record_send_mute(record_channel)) {
                 return;
             }
-            channel->command &= ~SND_RECORD_VOLUME_MASK;
+            channel->command &= ~SND_VOLUME_MASK;
         }
-        if (channel->command & SND_RECORD_MIGRATE_MASK) {
+        if (channel->command & SND_MIGRATE_MASK) {
             if (!snd_record_send_migrate(record_channel)) {
                 return;
             }
-            channel->command &= ~SND_RECORD_MIGRATE_MASK;
+            channel->command &= ~SND_MIGRATE_MASK;
         }
     }
 }
@@ -1042,10 +1037,10 @@ static void snd_playback_start(SpicePlaybackState *st)
     reds_disable_mm_time(snd_channel_get_server(channel));
     channel->active = TRUE;
     if (!channel->client_active) {
-        snd_set_command(channel, SND_PLAYBACK_CTRL_MASK);
+        snd_set_command(channel, SND_CTRL_MASK);
         snd_playback_send(channel);
     } else {
-        channel->command &= ~SND_PLAYBACK_CTRL_MASK;
+        channel->command &= ~SND_CTRL_MASK;
     }
 }
 
@@ -1066,10 +1061,10 @@ SPICE_GNUC_VISIBLE void spice_server_playback_stop(SpicePlaybackInstance *sin)
     reds_enable_mm_time(snd_channel_get_server(channel));
     playback_channel->base.active = FALSE;
     if (playback_channel->base.client_active) {
-        snd_set_command(&playback_channel->base, SND_PLAYBACK_CTRL_MASK);
+        snd_set_command(&playback_channel->base, SND_CTRL_MASK);
         snd_playback_send(&playback_channel->base);
     } else {
-        playback_channel->base.command &= ~SND_PLAYBACK_CTRL_MASK;
+        playback_channel->base.command &= ~SND_CTRL_MASK;
         playback_channel->base.command &= ~SND_PLAYBACK_PCM_MASK;
 
         if (playback_channel->pending_frame) {
@@ -1173,10 +1168,10 @@ static void on_new_playback_channel(SndWorker *worker, SndChannel *snd_channel)
     worker->connection = snd_channel;
     snd_set_command(snd_channel, SND_PLAYBACK_MODE_MASK);
     if (snd_channel->active) {
-        snd_set_command(snd_channel, SND_PLAYBACK_CTRL_MASK);
+        snd_set_command(snd_channel, SND_CTRL_MASK);
     }
     if (worker->volume.volume_nchannels) {
-        snd_set_command(snd_channel, SND_PLAYBACK_VOLUME_MASK);
+        snd_set_command(snd_channel, SND_VOLUME_MASK);
     }
     if (snd_channel->active) {
         reds_disable_mm_time(reds);
@@ -1262,7 +1257,7 @@ static void snd_record_migrate_channel_client(RedChannelClient *rcc)
 
     if (worker->connection) {
         spice_assert(worker->connection->channel_client == rcc);
-        snd_set_command(worker->connection, SND_RECORD_MIGRATE_MASK);
+        snd_set_command(worker->connection, SND_MIGRATE_MASK);
         snd_record_send(worker->connection);
     }
 }
@@ -1312,10 +1307,10 @@ static void snd_record_start(SpiceRecordState *st)
                                                                 //stream generation
     channel->active = TRUE;
     if (!channel->client_active) {
-        snd_set_command(channel, SND_RECORD_CTRL_MASK);
+        snd_set_command(channel, SND_CTRL_MASK);
         snd_record_send(channel);
     } else {
-        channel->command &= ~SND_RECORD_CTRL_MASK;
+        channel->command &= ~SND_CTRL_MASK;
     }
 }
 
@@ -1335,10 +1330,10 @@ SPICE_GNUC_VISIBLE void spice_server_record_stop(SpiceRecordInstance *sin)
     spice_assert(record_channel->base.active);
     record_channel->base.active = FALSE;
     if (record_channel->base.client_active) {
-        snd_set_command(&record_channel->base, SND_RECORD_CTRL_MASK);
+        snd_set_command(&record_channel->base, SND_CTRL_MASK);
         snd_record_send(&record_channel->base);
     } else {
-        record_channel->base.command &= ~SND_RECORD_CTRL_MASK;
+        record_channel->base.command &= ~SND_CTRL_MASK;
     }
 }
 
@@ -1428,10 +1423,10 @@ static void on_new_record_channel(SndWorker *worker, SndChannel *snd_channel)
 
     worker->connection = snd_channel ;
     if (worker->volume.volume_nchannels) {
-        snd_set_command(snd_channel, SND_RECORD_VOLUME_MASK);
+        snd_set_command(snd_channel, SND_VOLUME_MASK);
     }
     if (snd_channel->active) {
-        snd_set_command(snd_channel, SND_RECORD_CTRL_MASK);
+        snd_set_command(snd_channel, SND_CTRL_MASK);
     }
 }
 
@@ -1487,7 +1482,7 @@ static void snd_playback_migrate_channel_client(RedChannelClient *rcc)
 
     if (worker->connection) {
         spice_assert(worker->connection->channel_client == rcc);
-        snd_set_command(worker->connection, SND_PLAYBACK_MIGRATE_MASK);
+        snd_set_command(worker->connection, SND_MIGRATE_MASK);
         snd_playback_send(worker->connection);
     }
 }
-- 
2.9.3



More information about the Spice-devel mailing list