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",