From 829497b313b2e8e5fc809c71466eb5a4db1a44dd Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Tue, 25 Feb 2020 15:21:16 +0100 Subject: [PATCH] Made CHANNEL_TSMF optional and deprecated. --- CMakeLists.txt | 18 ------------ channels/tsmf/ChannelOptions.cmake | 4 +-- channels/tsmf/client/CMakeLists.txt | 37 +++++++++++++++++++++++++ client/Sample/tf_channels.c | 7 ----- client/Sample/tf_freerdp.h | 1 - client/Wayland/wlf_channels.c | 6 ---- client/Wayland/wlf_channels.h | 1 - client/X11/CMakeLists.txt | 10 +++++-- client/X11/xf_channels.c | 6 ++++ client/X11/xf_channels.h | 1 - client/X11/xf_client.c | 4 +++ client/X11/xfreerdp.h | 13 +++++++++ client/common/cmdline.c | 12 +++++--- client/common/cmdline.h | 4 ++- client/common/test/TestClientChannels.c | 2 ++ cmake/ConfigOptions.cmake | 2 +- config.h.in | 2 -- include/freerdp/channels/tsmf.h | 7 +++++ include/freerdp/client/tsmf.h | 7 +++++ server/proxy/pf_channels.c | 1 - 20 files changed, 97 insertions(+), 48 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 91f490611..51a104f48 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -730,14 +730,6 @@ set(VAAPI_FEATURE_TYPE "OPTIONAL") set(VAAPI_FEATURE_PURPOSE "multimedia") set(VAAPI_FEATURE_DESCRIPTION "VA-API hardware acceleration for video playback") -set(GSTREAMER_0_10_FEATURE_TYPE "OPTIONAL") -set(GSTREAMER_0_10_FEATURE_PURPOSE "multimedia") -set(GSTREAMER_0_10_FEATURE_DESCRIPTION "multimedia redirection, audio and video playback, gstreamer 0.10 version") - -set(GSTREAMER_1_0_FEATURE_TYPE "RECOMMENDED") -set(GSTREAMER_1_0_FEATURE_PURPOSE "multimedia") -set(GSTREAMER_1_0_FEATURE_DESCRIPTION "multimedia redirection, audio and video playback") - set(IPP_FEATURE_TYPE "OPTIONAL") set(IPP_FEATURE_PURPOSE "performance") set(IPP_FEATURE_DESCRIPTION "Intel Integrated Performance Primitives library") @@ -793,15 +785,12 @@ if(WIN32) set(PCSC_FEATURE_TYPE "DISABLED") set(FFMPEG_FEATURE_TYPE "DISABLED") set(VAAPI_FEATURE_TYPE "DISABLED") - set(GSTREAMER_1_0_FEATURE_TYPE "DISABLED") - set(GSTREAMER_0_10_FEATURE_TYPE "OPTIONAL") set(OPENSLES_FEATURE_TYPE "DISABLED") endif() if(APPLE) set(FFMPEG_FEATURE_TYPE "OPTIONAL") set(VAAPI_FEATURE_TYPE "DISABLED") - set(GSTREAMER_1_0_FEATURE_TYPE "OPTIONAL") set(X11_FEATURE_TYPE "OPTIONAL") set(WAYLAND_FEATURE_TYPE "DISABLED") set(OSS_FEATURE_TYPE "DISABLED") @@ -811,8 +800,6 @@ if(APPLE) set(PULSE_FEATURE_TYPE "DISABLED") set(CUPS_FEATURE_TYPE "DISABLED") set(PCSC_FEATURE_TYPE "DISABLED") - set(GSTREAMER_1_0_FEATURE_TYPE "DISABLED") - set(GSTREAMER_0_10_FEATURE_TYPE "DISABLED") endif() set(OPENSLES_FEATURE_TYPE "DISABLED") endif() @@ -842,8 +829,6 @@ if(ANDROID) set(PCSC_FEATURE_TYPE "DISABLED") set(FFMPEG_FEATURE_TYPE "DISABLED") set(VAAPI_FEATURE_TYPE "DISABLED") - set(GSTREAMER_1_0_FEATURE_TYPE "DISABLED") - set(GSTREAMER_0_10_FEATURE_TYPE "DISABLED") set(OPENSLES_FEATURE_TYPE "REQUIRED") endif() @@ -864,9 +849,6 @@ find_feature(PCSC ${PCSC_FEATURE_TYPE} ${PCSC_FEATURE_PURPOSE} ${PCSC_FEATURE_DE find_feature(FFmpeg ${FFMPEG_FEATURE_TYPE} ${FFMPEG_FEATURE_PURPOSE} ${FFMPEG_FEATURE_DESCRIPTION}) -find_feature(GStreamer_0_10 ${GSTREAMER_0_10_FEATURE_TYPE} ${GSTREAMER_0_10_FEATURE_PURPOSE} ${GSTREAMER_0_10_FEATURE_DESCRIPTION}) -find_feature(GStreamer_1_0 ${GSTREAMER_1_0_FEATURE_TYPE} ${GSTREAMER_1_0_FEATURE_PURPOSE} ${GSTREAMER_1_0_FEATURE_DESCRIPTION}) - find_feature(JPEG ${JPEG_FEATURE_TYPE} ${JPEG_FEATURE_PURPOSE} ${JPEG_FEATURE_DESCRIPTION}) find_feature(x264 ${X264_FEATURE_TYPE} ${X264_FEATURE_PURPOSE} ${X264_FEATURE_DESCRIPTION}) find_feature(OpenH264 ${OPENH264_FEATURE_TYPE} ${OPENH264_FEATURE_PURPOSE} ${OPENH264_FEATURE_DESCRIPTION}) diff --git a/channels/tsmf/ChannelOptions.cmake b/channels/tsmf/ChannelOptions.cmake index b59578f6d..b5252eafd 100644 --- a/channels/tsmf/ChannelOptions.cmake +++ b/channels/tsmf/ChannelOptions.cmake @@ -1,6 +1,6 @@ set(OPTION_DEFAULT OFF) -set(OPTION_CLIENT_DEFAULT ON) +set(OPTION_CLIENT_DEFAULT OFF) set(OPTION_SERVER_DEFAULT OFF) if(WIN32) @@ -14,7 +14,7 @@ if(ANDROID) endif() define_channel_options(NAME "tsmf" TYPE "dynamic" - DESCRIPTION "Video Redirection Virtual Channel Extension" + DESCRIPTION "[DEPRECATED] Video Redirection Virtual Channel Extension" SPECIFICATIONS "[MS-RDPEV]" DEFAULT ${OPTION_DEFAULT}) diff --git a/channels/tsmf/client/CMakeLists.txt b/channels/tsmf/client/CMakeLists.txt index ee172fc27..d7438de91 100644 --- a/channels/tsmf/client/CMakeLists.txt +++ b/channels/tsmf/client/CMakeLists.txt @@ -18,6 +18,43 @@ define_channel_client("tsmf") +message(DEPRECATION "TSMF channel is no longer maintained. Use [MS-RDPEVOR] (/video) instead.") + +set(GSTREAMER_0_10_FEATURE_TYPE "OPTIONAL") +set(GSTREAMER_0_10_FEATURE_PURPOSE "multimedia") +set(GSTREAMER_0_10_FEATURE_DESCRIPTION "multimedia redirection, audio and video playback, gstreamer 0.10 version") + +set(GSTREAMER_1_0_FEATURE_TYPE "RECOMMENDED") +set(GSTREAMER_1_0_FEATURE_PURPOSE "multimedia") +set(GSTREAMER_1_0_FEATURE_DESCRIPTION "multimedia redirection, audio and video playback") + +if (WIN32) + set(GSTREAMER_1_0_FEATURE_TYPE "DISABLED") + set(GSTREAMER_0_10_FEATURE_TYPE "OPTIONAL") +endif() +if (APPLE) + set(GSTREAMER_1_0_FEATURE_TYPE "OPTIONAL") + + if (IOS) + set(GSTREAMER_1_0_FEATURE_TYPE "DISABLED") + set(GSTREAMER_0_10_FEATURE_TYPE "DISABLED") + endif() +endif() +if (ANDROID) + set(GSTREAMER_1_0_FEATURE_TYPE "DISABLED") + set(GSTREAMER_0_10_FEATURE_TYPE "DISABLED") +endif() + +find_feature(GStreamer_0_10 ${GSTREAMER_0_10_FEATURE_TYPE} ${GSTREAMER_0_10_FEATURE_PURPOSE} ${GSTREAMER_0_10_FEATURE_DESCRIPTION}) +find_feature(GStreamer_1_0 ${GSTREAMER_1_0_FEATURE_TYPE} ${GSTREAMER_1_0_FEATURE_PURPOSE} ${GSTREAMER_1_0_FEATURE_DESCRIPTION}) + +if (WITH_GSTREAMER_0_10 AND GSTREAMER_0_10_FOUND) + add_definitions(-DWITH_GSTREAMER_0_10) +endif() +if (WITH_GSTREAMER_1_0 AND GSTREAMER_1_0_FOUND) + add_definitions(-DWITH_GSTREAMER_1_0) +endif() + set(${MODULE_PREFIX}_SRCS tsmf_audio.c tsmf_audio.h diff --git a/client/Sample/tf_channels.c b/client/Sample/tf_channels.c index e26f29f35..7119a1c87 100644 --- a/client/Sample/tf_channels.c +++ b/client/Sample/tf_channels.c @@ -25,7 +25,6 @@ #include #include -#include #include #include #include @@ -75,9 +74,6 @@ void tf_OnChannelConnectedEventHandler(void* context, ChannelConnectedEventArgs* { tf->rdpei = (RdpeiClientContext*)e->pInterface; } - else if (strcmp(e->name, TSMF_DVC_CHANNEL_NAME) == 0) - { - } else if (strcmp(e->name, RDPGFX_DVC_CHANNEL_NAME) == 0) { gdi_graphics_pipeline_init(tf->context.gdi, (RdpgfxClientContext*)e->pInterface); @@ -102,9 +98,6 @@ void tf_OnChannelDisconnectedEventHandler(void* context, ChannelDisconnectedEven { tf->rdpei = NULL; } - else if (strcmp(e->name, TSMF_DVC_CHANNEL_NAME) == 0) - { - } else if (strcmp(e->name, RDPGFX_DVC_CHANNEL_NAME) == 0) { gdi_graphics_pipeline_uninit(tf->context.gdi, (RdpgfxClientContext*)e->pInterface); diff --git a/client/Sample/tf_freerdp.h b/client/Sample/tf_freerdp.h index de0580fc0..19e0cee02 100644 --- a/client/Sample/tf_freerdp.h +++ b/client/Sample/tf_freerdp.h @@ -23,7 +23,6 @@ #include #include -#include #include #include #include diff --git a/client/Wayland/wlf_channels.c b/client/Wayland/wlf_channels.c index ff84fc2ff..9c49584c4 100644 --- a/client/Wayland/wlf_channels.c +++ b/client/Wayland/wlf_channels.c @@ -105,9 +105,6 @@ void wlf_OnChannelConnectedEventHandler(void* context, ChannelConnectedEventArgs { wlf->rdpei = (RdpeiClientContext*)e->pInterface; } - else if (strcmp(e->name, TSMF_DVC_CHANNEL_NAME) == 0) - { - } else if (strcmp(e->name, RDPGFX_DVC_CHANNEL_NAME) == 0) { gdi_graphics_pipeline_init(wlf->context.gdi, (RdpgfxClientContext*)e->pInterface); @@ -137,9 +134,6 @@ void wlf_OnChannelDisconnectedEventHandler(void* context, ChannelDisconnectedEve { wlf->rdpei = NULL; } - else if (strcmp(e->name, TSMF_DVC_CHANNEL_NAME) == 0) - { - } else if (strcmp(e->name, RDPGFX_DVC_CHANNEL_NAME) == 0) { gdi_graphics_pipeline_uninit(wlf->context.gdi, (RdpgfxClientContext*)e->pInterface); diff --git a/client/Wayland/wlf_channels.h b/client/Wayland/wlf_channels.h index d4469cbfc..c56be6a9e 100644 --- a/client/Wayland/wlf_channels.h +++ b/client/Wayland/wlf_channels.h @@ -23,7 +23,6 @@ #include #include #include -#include #include #include #include diff --git a/client/X11/CMakeLists.txt b/client/X11/CMakeLists.txt index 48e5af96f..869652c1f 100644 --- a/client/X11/CMakeLists.txt +++ b/client/X11/CMakeLists.txt @@ -29,9 +29,7 @@ set(${MODULE_PREFIX}_SRCS xf_gfx.c xf_gfx.h xf_rail.c - xf_rail.h - xf_tsmf.c - xf_tsmf.h + xf_rail.h xf_input.c xf_input.h xf_event.c @@ -59,6 +57,12 @@ set(${MODULE_PREFIX}_SRCS xf_client.c xf_client.h) +if (CHANNEL_TSMF_CLIENT) + set(${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} + xf_tsmf.c + xf_tsmf.h) +endif() + if(WITH_CLIENT_INTERFACE) if(CLIENT_INTERFACE_SHARED) add_library(${MODULE_NAME} SHARED ${${MODULE_PREFIX}_SRCS}) diff --git a/client/X11/xf_channels.c b/client/X11/xf_channels.c index 4241a1dc6..8090b9b41 100644 --- a/client/X11/xf_channels.c +++ b/client/X11/xf_channels.c @@ -28,7 +28,9 @@ #include "xfreerdp.h" #include "xf_gfx.h" +#if defined(CHANNEL_TSMF_CLIENT) #include "xf_tsmf.h" +#endif #include "xf_rail.h" #include "xf_cliprdr.h" #include "xf_disp.h" @@ -42,10 +44,12 @@ void xf_OnChannelConnectedEventHandler(void* context, ChannelConnectedEventArgs* { xfc->rdpei = (RdpeiClientContext*)e->pInterface; } +#if defined(CHANNEL_TSMF_CLIENT) else if (strcmp(e->name, TSMF_DVC_CHANNEL_NAME) == 0) { xf_tsmf_init(xfc, (TsmfClientContext*)e->pInterface); } +#endif else if (strcmp(e->name, RDPGFX_DVC_CHANNEL_NAME) == 0) { xf_graphics_pipeline_init(xfc, (RdpgfxClientContext*)e->pInterface); @@ -93,10 +97,12 @@ void xf_OnChannelDisconnectedEventHandler(void* context, ChannelDisconnectedEven { xf_disp_uninit(xfc->xfDisp, (DispClientContext*)e->pInterface); } +#if defined(CHANNEL_TSMF_CLIENT) else if (strcmp(e->name, TSMF_DVC_CHANNEL_NAME) == 0) { xf_tsmf_uninit(xfc, (TsmfClientContext*)e->pInterface); } +#endif else if (strcmp(e->name, RDPGFX_DVC_CHANNEL_NAME) == 0) { xf_graphics_pipeline_uninit(xfc, (RdpgfxClientContext*)e->pInterface); diff --git a/client/X11/xf_channels.h b/client/X11/xf_channels.h index 8a8c3b19b..c12d823dd 100644 --- a/client/X11/xf_channels.h +++ b/client/X11/xf_channels.h @@ -23,7 +23,6 @@ #include #include #include -#include #include #include #include diff --git a/client/X11/xf_client.c b/client/X11/xf_client.c index 783cd7ba1..df0ad23ba 100644 --- a/client/X11/xf_client.c +++ b/client/X11/xf_client.c @@ -89,7 +89,9 @@ #include "xf_gdi.h" #include "xf_rail.h" +#if defined(CHANNEL_TSMF_CLIENT) #include "xf_tsmf.h" +#endif #include "xf_event.h" #include "xf_input.h" #include "xf_cliprdr.h" @@ -664,11 +666,13 @@ static void xf_window_free(xfContext* xfc) xfc->hdc = NULL; } +#if defined(CHANNEL_TSMF_CLIENT) if (xfc->xv_context) { xf_tsmf_uninit(xfc, NULL); xfc->xv_context = NULL; } +#endif if (xfc->image) { diff --git a/client/X11/xfreerdp.h b/client/X11/xfreerdp.h index 31bb8dc4c..97359e813 100644 --- a/client/X11/xfreerdp.h +++ b/client/X11/xfreerdp.h @@ -22,6 +22,10 @@ #ifndef FREERDP_CLIENT_X11_FREERDP_H #define FREERDP_CLIENT_X11_FREERDP_H +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + typedef struct xf_context xfContext; #include @@ -30,6 +34,10 @@ typedef struct xf_context xfContext; #include "xf_monitor.h" #include "xf_channels.h" +#if defined(CHANNEL_TSMF_CLIENT) +#include +#endif + #include #include #include @@ -173,7 +181,9 @@ struct xf_context XSetWindowAttributes attribs; BOOL complex_regions; VIRTUAL_SCREEN vscreen; +#if defined(CHANNEL_TSMF_CLIENT) void* xv_context; +#endif Atom* supportedAtoms; unsigned long supportedAtomCount; @@ -216,7 +226,10 @@ struct xf_context Atom WM_DELETE_WINDOW; /* Channels */ +#if defined(CHANNEL_TSMF_CLIENT) TsmfClientContext* tsmf; +#endif + xfClipboard* clipboard; CliprdrClientContext* cliprdr; xfVideoContext* xfVideo; diff --git a/client/common/cmdline.c b/client/common/cmdline.c index c2105877a..4783e056d 100644 --- a/client/common/cmdline.c +++ b/client/common/cmdline.c @@ -430,8 +430,7 @@ BOOL freerdp_client_print_command_line_help_ex(int argc, char** argv, printf("Audio Input Redirection: /microphone:sys:oss,dev:1,format:1\n"); printf("Audio Input Redirection: /microphone:sys:alsa\n"); printf("\n"); - printf("Multimedia Redirection: /multimedia:sys:oss,dev:/dev/dsp1,decoder:ffmpeg\n"); - printf("Multimedia Redirection: /multimedia:sys:alsa\n"); + printf("Multimedia Redirection: /video\n"); #ifdef CHANNEL_URBDRC_CLIENT printf("USB Device Redirection: /usb:id,dev:054c:0268\n"); #endif @@ -935,6 +934,7 @@ static int freerdp_client_command_line_post_filter(void* context, COMMAND_LINE_A status = freerdp_client_add_dynamic_channel(settings, count, p); free(p); } +#if defined(CHANNEL_TSMF_CLIENT) CommandLineSwitchCase(arg, "multimedia") { char** p; @@ -943,6 +943,7 @@ static int freerdp_client_command_line_post_filter(void* context, COMMAND_LINE_A status = freerdp_client_add_dynamic_channel(settings, count, p); free(p); } +#endif CommandLineSwitchCase(arg, "heartbeat") { settings->SupportHeartbeatPdu = enable; @@ -3271,8 +3272,11 @@ BOOL freerdp_client_load_addins(rdpChannels* channels, rdpSettings* settings) return FALSE; } - if ((freerdp_static_channel_collection_find(settings, "rdpsnd")) || - (freerdp_dynamic_channel_collection_find(settings, "tsmf"))) + if ((freerdp_static_channel_collection_find(settings, "rdpsnd")) +#if defined(CHANNEL_TSMF_CLIENT) + || (freerdp_dynamic_channel_collection_find(settings, "tsmf")) +#endif + ) { settings->DeviceRedirection = TRUE; /* rdpsnd requires rdpdr to be registered */ settings->AudioPlayback = TRUE; /* Both rdpsnd and tsmf require this flag to be set */ diff --git a/client/common/cmdline.h b/client/common/cmdline.h index 7f11744ee..dc4eb73b1 100644 --- a/client/common/cmdline.h +++ b/client/common/cmdline.h @@ -208,8 +208,10 @@ static const COMMAND_LINE_ARGUMENT_A args[] = { "Select monitors to use" }, { "mouse-motion", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueTrue, NULL, -1, NULL, "Send mouse motion" }, +#if defined(CHANNEL_TSMF_CLIENT) { "multimedia", COMMAND_LINE_VALUE_OPTIONAL, "[sys:,][dev:,][decoder:]", - NULL, NULL, -1, "mmr", "Redirect multimedia (video)" }, + NULL, NULL, -1, "mmr", "[DEPRECATED] Redirect multimedia (video) use /video instead" }, +#endif { "multimon", COMMAND_LINE_VALUE_OPTIONAL, "force", NULL, NULL, -1, NULL, "Use multiple monitors" }, { "multitouch", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueFalse, NULL, -1, NULL, diff --git a/client/common/test/TestClientChannels.c b/client/common/test/TestClientChannels.c index d6a55d319..28e25bece 100644 --- a/client/common/test/TestClientChannels.c +++ b/client/common/test/TestClientChannels.c @@ -42,6 +42,7 @@ int TestClientChannels(int argc, char* argv[]) freerdp_channels_addin_list_free(ppAddins); +#if defined(CHANNEL_TSMF_CLIENT) printf("Enumerate tsmf video\n"); ppAddins = freerdp_channels_list_addins("tsmf", NULL, "video", dwFlags); @@ -54,6 +55,7 @@ int TestClientChannels(int argc, char* argv[]) } freerdp_channels_addin_list_free(ppAddins); +#endif ppAddins = freerdp_channels_list_addins("unknown", NULL, NULL, dwFlags); diff --git a/cmake/ConfigOptions.cmake b/cmake/ConfigOptions.cmake index 23366a3d9..21db9caf0 100644 --- a/cmake/ConfigOptions.cmake +++ b/cmake/ConfigOptions.cmake @@ -109,7 +109,7 @@ option(WITH_DEBUG_CHANNELS "Print channel manager debug messages." ${DEFAULT_DEB option(WITH_DEBUG_CLIPRDR "Print clipboard redirection debug messages" ${DEFAULT_DEBUG_OPTION}) option(WITH_DEBUG_RDPGFX "Print RDPGFX debug messages" ${DEFAULT_DEBUG_OPTION}) option(WITH_DEBUG_DVC "Print dynamic virtual channel debug messages." ${DEFAULT_DEBUG_OPTION}) -option(WITH_DEBUG_TSMF "Print TSMF virtual channel debug messages." ${DEFAULT_DEBUG_OPTION}) +CMAKE_DEPENDENT_OPTION(WITH_DEBUG_TSMF "Print TSMF virtual channel debug messages." ${DEFAULT_DEBUG_OPTION} "CHANNEL_TSMF" OFF) option(WITH_DEBUG_KBD "Print keyboard related debug messages." ${DEFAULT_DEBUG_OPTION}) option(WITH_DEBUG_LICENSE "Print license debug messages." ${DEFAULT_DEBUG_OPTION}) option(WITH_DEBUG_NEGO "Print negotiation related debug messages." ${DEFAULT_DEBUG_OPTION}) diff --git a/config.h.in b/config.h.in index 62860e912..c2e20d356 100644 --- a/config.h.in +++ b/config.h.in @@ -45,8 +45,6 @@ #cmakedefine WITH_EVENTFD_READ_WRITE #cmakedefine HAVE_MATH_C99_LONG_DOUBLE -#cmakedefine WITH_GSTREAMER_1_0 -#cmakedefine WITH_GSTREAMER_0_10 #cmakedefine WITH_WINMM #cmakedefine WITH_MACAUDIO #cmakedefine WITH_OSS diff --git a/include/freerdp/channels/tsmf.h b/include/freerdp/channels/tsmf.h index 83da56f2f..2e5250931 100644 --- a/include/freerdp/channels/tsmf.h +++ b/include/freerdp/channels/tsmf.h @@ -18,6 +18,13 @@ * limitations under the License. */ +/* DEPRECATION WARNING: + * + * This channel is unmaintained and not used since windows 7. + * Only compile and use it if absolutely necessary, otherwise + * deactivate it or use the newer [MS-RDPEVOR] video redirection. + */ + #ifndef FREERDP_CHANNEL_TSMF_H #define FREERDP_CHANNEL_TSMF_H diff --git a/include/freerdp/client/tsmf.h b/include/freerdp/client/tsmf.h index 0ca4d472e..0d5e0d549 100644 --- a/include/freerdp/client/tsmf.h +++ b/include/freerdp/client/tsmf.h @@ -17,6 +17,13 @@ * limitations under the License. */ +/* DEPRECATION WARNING: + * + * This channel is unmaintained and not used since windows 7. + * Only compile and use it if absolutely necessary, otherwise + * deactivate it or use the newer [MS-RDPEVOR] video redirection. + */ + #ifndef FREERDP_CHANNEL_TSMF_CLIENT_TSMF_H #define FREERDP_CHANNEL_TSMF_CLIENT_TSMF_H diff --git a/server/proxy/pf_channels.c b/server/proxy/pf_channels.c index 1c6620fa6..094f43fd6 100644 --- a/server/proxy/pf_channels.c +++ b/server/proxy/pf_channels.c @@ -26,7 +26,6 @@ #include #include -#include #include #include #include