Fixed loading of sound channel
authorArmin Novak <armin.novak@thincast.com>
Tue, 30 Jul 2019 07:39:45 +0000 (09:39 +0200)
committerArmin Novak <armin.novak@thincast.com>
Tue, 30 Jul 2019 09:29:17 +0000 (11:29 +0200)
Ensure sound channel is loaded if settings require it in freerdp_client_load_addins

client/common/cmdline.c
client/common/file.c

index 6296bd8..4fb5680 100644 (file)
@@ -3114,6 +3114,17 @@ BOOL freerdp_client_load_addins(rdpChannels* channels, rdpSettings* settings)
        UINT32 index;
        ADDIN_ARGV* args;
 
+       if (settings->AudioPlayback)
+       {
+               char* p[] =
+               {
+                       "rdpsnd"
+               };
+
+               if (!freerdp_client_add_static_channel(settings, ARRAYSIZE(p), p))
+                       return FALSE;
+       }
+
        if ((freerdp_static_channel_collection_find(settings, "rdpsnd")) ||
            (freerdp_dynamic_channel_collection_find(settings, "tsmf")))
        {
index 6d4289e..39aa5d8 100644 (file)
@@ -1218,21 +1218,27 @@ BOOL freerdp_client_populate_settings_from_rdp_file(rdpFile* file, rdpSettings*
 
        if (~file->AudioMode)
        {
-               if (file->AudioMode == AUDIO_MODE_REDIRECT)
+               switch(file->AudioMode)
                {
-                       if (!freerdp_settings_set_bool(settings, FreeRDP_AudioPlayback, TRUE))
-                               return FALSE;
-               }
-               else if (file->AudioMode == AUDIO_MODE_PLAY_ON_SERVER)
-               {
-                       if (!freerdp_settings_set_bool(settings, FreeRDP_RemoteConsoleAudio, TRUE))
-                               return FALSE;
-               }
-               else if (file->AudioMode == AUDIO_MODE_NONE)
-               {
-                       if (!freerdp_settings_set_bool(settings, FreeRDP_AudioPlayback, FALSE) ||
-                           !freerdp_settings_set_bool(settings, FreeRDP_RemoteConsoleAudio, FALSE))
-                               return FALSE;
+                       case AUDIO_MODE_REDIRECT:
+                               if (!freerdp_settings_set_bool(settings, FreeRDP_RemoteConsoleAudio, FALSE))
+                                       return FALSE;
+                               if (!freerdp_settings_set_bool(settings, FreeRDP_AudioPlayback, TRUE))
+                                       return FALSE;
+                               break;
+                       case AUDIO_MODE_PLAY_ON_SERVER:
+                               if (!freerdp_settings_set_bool(settings, FreeRDP_RemoteConsoleAudio, TRUE))
+                                       return FALSE;
+                               if (!freerdp_settings_set_bool(settings, FreeRDP_AudioPlayback, FALSE))
+                                       return FALSE;
+                               break;
+                       case AUDIO_MODE_NONE:
+                       default:
+                               if (!freerdp_settings_set_bool(settings, FreeRDP_AudioPlayback, FALSE))
+                                       return FALSE;
+                               if (!freerdp_settings_set_bool(settings, FreeRDP_RemoteConsoleAudio, FALSE))
+                                       return FALSE;
+                               break;
                }
        }