From 9dd6bdab95686a02650fa9297080026982736baf Mon Sep 17 00:00:00 2001 From: Henrik Andersson Date: Mon, 20 Dec 2010 13:42:51 +0000 Subject: [PATCH] Fix for sound playback in Windows 2008R2 which requires the rdpdr channel to be initiated. RDPEA nor RDPBCGR mention a relation between audio and the rdpdr channel. See. support request #2717082 git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/rdesktop/trunk@1604 423420c4-83ab-492f-b58f-81f9feb106b5 --- proto.h | 2 +- rdesktop.c | 5 ++++- rdpdr.c | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/proto.h b/proto.h index 7ae9d8d..d4e28fe 100644 --- a/proto.h +++ b/proto.h @@ -158,7 +158,7 @@ int get_device_index(RD_NTHANDLE handle); void convert_to_unix_filename(char *filename); void rdpdr_send_completion(uint32 device, uint32 id, uint32 status, uint32 result, uint8 * buffer, uint32 length); -RD_BOOL rdpdr_init(void); +RD_BOOL rdpdr_init(RD_BOOL force); void rdpdr_add_fds(int *n, fd_set * rfds, fd_set * wfds, struct timeval *tv, RD_BOOL * timeout); struct async_iorequest *rdpdr_remove_iorequest(struct async_iorequest *prev, struct async_iorequest *iorq); diff --git a/rdesktop.c b/rdesktop.c index f9853c8..c7237a7 100644 --- a/rdesktop.c +++ b/rdesktop.c @@ -461,6 +461,7 @@ main(int argc, char *argv[]) char *locale = NULL; int username_option = 0; RD_BOOL geometry_option = False; + RD_BOOL force_rdpdr = False; #ifdef WITH_RDPSND char *rdpsnd_optarg = NULL; #endif @@ -960,13 +961,15 @@ main(int argc, char *argv[]) { warning("Initializing sound-support failed!\n"); } + else + force_rdpdr = True; } #endif if (g_lspci_enabled) lspci_init(); - rdpdr_init(); + rdpdr_init (force_rdpdr); while (1) { diff --git a/rdpdr.c b/rdpdr.c index 7288531..1e0f15b 100644 --- a/rdpdr.c +++ b/rdpdr.c @@ -838,9 +838,9 @@ rdpdr_process(STREAM s) } RD_BOOL -rdpdr_init() +rdpdr_init(RD_BOOL force) { - if (g_num_devices > 0) + if (g_num_devices > 0 || force) { rdpdr_channel = channel_register("rdpdr",