Index: head/net/xrdp-devel/Makefile =================================================================== --- head/net/xrdp-devel/Makefile +++ head/net/xrdp-devel/Makefile @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= xrdp -PORTVERSION= 0.9.3 +PORTVERSION= 0.9.4 DISTVERSIONPREFIX= v PORTEPOCH= 1 CATEGORIES= net @@ -27,7 +27,7 @@ USE_GITHUB= yes GH_ACCOUNT= neutrinolabs GH_PROJECT= xrdp librfxcodec:librfxcodec libpainter:libpainter -GH_TAGNAME= v0.1.2:librfxcodec v0.1.1:libpainter +GH_TAGNAME= v0.1.3:librfxcodec v0.1.1:libpainter CONFIGURE_ARGS= --localstatedir=/var --enable-strict-locations \ --with-pkgconfigdir=${LOCALBASE}/libdata/pkgconfig \ @@ -39,16 +39,21 @@ SUB_FILES= pkg-install pkg-message SUB_LIST= OPENSSLBASE=${OPENSSLBASE} -OPTIONS_DEFINE= DEBUG FUSE IPV6 MP3LAME OPUS -OPTIONS_DEFAULT= OPUS MP3LAME +OPTIONS_DEFINE= DEBUG FUSE IPV6 +OPTIONS_DEFAULT= FDKAAC MP3LAME OPUS +OPTIONS_GROUP= AUDIO_CODEC +OPTIONS_GROUP_AUDIO_CODEC= FDKAAC MP3LAME OPUS +FDKAAC_DESC= Enable Fraunhofer FDK AAC for audio redirection FUSE_DESC= Enable drive redirection via FUSE (experimental) MP3LAME_DESC= Enable MP3 Lame for audio redirection OPUS_DESC= Enable Opus for audio redirection -IPV6_CONFIGURE_ENABLE= ipv6 DEBUG_CONFIGURE_ENABLE= xrdpdebug +FDKAAC_CONFIGURE_ENABLE= fdkaac +FDKAAC_LIB_DEPENDS= libfdk-aac.so:audio/fdk-aac FUSE_CONFIGURE_ENABLE= fuse FUSE_USES= fuse +IPV6_CONFIGURE_ENABLE= ipv6 MP3LAME_CONFIGURE_ENABLE= mp3lame MP3LAME_LIB_DEPENDS= libmp3lame.so:audio/lame OPUS_CONFIGURE_ENABLE= opus Index: head/net/xrdp-devel/distinfo =================================================================== --- head/net/xrdp-devel/distinfo +++ head/net/xrdp-devel/distinfo @@ -1,7 +1,7 @@ -TIMESTAMP = 1500361123 -SHA256 (xrdp/neutrinolabs-xrdp-v0.9.3_GH0.tar.gz) = 36f096d013b2cf09324cc1bf9c27caadc733001f2bcbe24e67f93233260afe5b -SIZE (xrdp/neutrinolabs-xrdp-v0.9.3_GH0.tar.gz) = 1866654 -SHA256 (xrdp/neutrinolabs-librfxcodec-v0.1.2_GH0.tar.gz) = f4aa7f4247a42f6f5e49fc56eb70589a1d26cae7c8d5d4e32f75200d5c473a42 -SIZE (xrdp/neutrinolabs-librfxcodec-v0.1.2_GH0.tar.gz) = 46139 +TIMESTAMP = 1510103629 +SHA256 (xrdp/neutrinolabs-xrdp-v0.9.4_GH0.tar.gz) = 962d9d14b9062654e4adc1c9aa1b1bd89d3707e57f20ef0c1b6e619dd025c5df +SIZE (xrdp/neutrinolabs-xrdp-v0.9.4_GH0.tar.gz) = 1868159 +SHA256 (xrdp/neutrinolabs-librfxcodec-v0.1.3_GH0.tar.gz) = 9a4612691d35431b17d2f8059e7be1cabbedd4823f84608e80ca64fdc869f272 +SIZE (xrdp/neutrinolabs-librfxcodec-v0.1.3_GH0.tar.gz) = 46782 SHA256 (xrdp/neutrinolabs-libpainter-v0.1.1_GH0.tar.gz) = 6caee8444fbd72677ac5e125c7ac99490688474975451668e751a9d9187ee5e6 SIZE (xrdp/neutrinolabs-libpainter-v0.1.1_GH0.tar.gz) = 13929 Index: head/net/xrdp-devel/files/patch-configure.ac =================================================================== --- head/net/xrdp-devel/files/patch-configure.ac +++ head/net/xrdp-devel/files/patch-configure.ac @@ -1,6 +1,6 @@ ---- configure.ac.orig 2017-07-14 12:22:02 UTC +--- configure.ac.orig 2017-09-28 02:25:19 UTC +++ configure.ac -@@ -152,11 +152,35 @@ AC_CHECK_FUNC(dlopen, [], +@@ -156,11 +156,35 @@ AC_CHECK_FUNC(dlopen, [], AC_SUBST(DLOPEN_LIBS) # checking for openssl Index: head/net/xrdp-devel/files/patch-issue-730 =================================================================== --- head/net/xrdp-devel/files/patch-issue-730 +++ head/net/xrdp-devel/files/patch-issue-730 @@ -0,0 +1,225 @@ +--- common/xrdp_constants.h.orig 2017-09-28 02:25:19 UTC ++++ common/xrdp_constants.h +@@ -189,13 +189,21 @@ + #define RDP_KEYPRESS 0 + #define RDP_KEYRELEASE (KBD_FLAG_DOWN | KBD_FLAG_UP) + +-#define MOUSE_FLAG_MOVE 0x0800 +-#define MOUSE_FLAG_BUTTON1 0x1000 +-#define MOUSE_FLAG_BUTTON2 0x2000 +-#define MOUSE_FLAG_BUTTON3 0x4000 +-#define MOUSE_FLAG_BUTTON4 0x0280 +-#define MOUSE_FLAG_BUTTON5 0x0380 +-#define MOUSE_FLAG_DOWN 0x8000 ++/* Mouse Event (MS-RDPBCGR 2.2.8.1.1.3.1.1.3) */ ++#define PTRFLAGS_HWHEEL 0x0400 ++#define PTRFLAGS_WHEEL 0x0200 ++#define PTRFLAGS_WHEEL_NEGATIVE 0x0100 ++#define WheelRotationMask 0x01FF ++#define PTRFLAGS_MOVE 0x0800 ++#define PTRFLAGS_DOWN 0x8000 ++#define PTRFLAGS_BUTTON1 0x1000 ++#define PTRFLAGS_BUTTON2 0x2000 ++#define PTRFLAGS_BUTTON3 0x4000 ++ ++/* Mouse Event (MS-RDPBCGR 2.2.8.1.1.3.1.1.4) */ ++#define PTRXFLAGS_DOWN 0x8000 ++#define PTRXFLAGS_BUTTON1 0x0001 ++#define PTRXFLAGS_BUTTON2 0x0002 + + /* Raster operation masks */ + #define ROP2_S(rop3) (rop3 & 0xf) +@@ -594,11 +602,16 @@ + #define SOLIDPATTERNBRUSHONLY 0x0040 + #define ORDERFLAGS_EXTRA_FLAGS 0x0080 + +-#define INPUT_FLAG_SCANCODES 0x0001 +-#define INPUT_FLAG_MOUSEX 0x0004 +-#define INPUT_FLAG_FASTPATH_INPUT 0x0008 +-#define INPUT_FLAG_UNICODE 0x0010 +-#define INPUT_FLAG_FASTPATH_INPUT2 0x0020 ++/* Input Capability Set (MS-RDPBCGR 2.2.7.1.6) */ ++#define INPUT_FLAG_SCANCODES 0x0001 ++#define INPUT_FLAG_MOUSEX 0x0004 ++#define INPUT_FLAG_FASTPATH_INPUT 0x0008 ++#define INPUT_FLAG_UNICODE 0x0010 ++#define INPUT_FLAG_FASTPATH_INPUT2 0x0020 ++#define INPUT_FLAG_UNUSED1 0x0040 ++#define INPUT_FLAG_UNUSED2 0x0080 ++#define TS_INPUT_FLAG_MOUSE_HWHEEL 0x0100 ++#define TS_INPUT_FLAG_QOE_TIMESTAMPS 0x0200 + + #define COMPDESK_NOT_SUPPORTED 0x0000 + #define COMPDESK_SUPPORTED 0x0001 +--- libxrdp/xrdp_caps.c.orig 2017-09-28 02:25:19 UTC ++++ libxrdp/xrdp_caps.c +@@ -924,7 +924,11 @@ xrdp_caps_send_demand_active(struct xrdp + out_uint16_le(s, RDP_CAPSET_INPUT); /* 13(0xd) */ + out_uint16_le(s, RDP_CAPLEN_INPUT); /* 88(0x58) */ + +- flags = INPUT_FLAG_SCANCODES | INPUT_FLAG_MOUSEX | INPUT_FLAG_UNICODE; ++ flags = INPUT_FLAG_SCANCODES | ++ INPUT_FLAG_MOUSEX | ++ INPUT_FLAG_UNICODE | ++ TS_INPUT_FLAG_MOUSE_HWHEEL; ++ + if (self->client_info.use_fast_path & 2) + { + flags |= INPUT_FLAG_FASTPATH_INPUT | INPUT_FLAG_FASTPATH_INPUT2; +--- xrdp/xrdp_wm.c.orig 2017-09-28 02:25:19 UTC ++++ xrdp/xrdp_wm.c +@@ -1264,6 +1264,8 @@ xrdp_wm_mouse_click(struct xrdp_wm *self + self->mm->mod->mod_event(self->mm->mod, WM_BUTTON3UP, x, y, 0, 0); + } + ++ /* vertical scroll */ ++ + if (but == 4) + { + self->mm->mod->mod_event(self->mm->mod, WM_BUTTON4DOWN, +@@ -1279,21 +1281,23 @@ xrdp_wm_mouse_click(struct xrdp_wm *self + self->mm->mod->mod_event(self->mm->mod, WM_BUTTON5UP, + self->mouse_x, self->mouse_y, 0, 0); + } +- if (but == 6 && down) +- { +- self->mm->mod->mod_event(self->mm->mod, WM_BUTTON6DOWN, x, y, 0, 0); +- } +- else if (but == 6 && !down) +- { +- self->mm->mod->mod_event(self->mm->mod, WM_BUTTON6UP, x, y, 0, 0); +- } +- if (but == 7 && down) ++ ++ /* horizontal scroll */ ++ ++ if (but == 6) + { +- self->mm->mod->mod_event(self->mm->mod, WM_BUTTON7DOWN, x, y, 0, 0); ++ self->mm->mod->mod_event(self->mm->mod, WM_BUTTON6DOWN, ++ self->mouse_x, self->mouse_y, 0, 0); ++ self->mm->mod->mod_event(self->mm->mod, WM_BUTTON6UP, ++ self->mouse_x, self->mouse_y, 0, 0); + } +- else if (but == 7 && !down) ++ ++ if (but == 7) + { +- self->mm->mod->mod_event(self->mm->mod, WM_BUTTON7UP, x, y, 0, 0); ++ self->mm->mod->mod_event(self->mm->mod, WM_BUTTON7DOWN, ++ self->mouse_x, self->mouse_y, 0, 0); ++ self->mm->mod->mod_event(self->mm->mod, WM_BUTTON7UP, ++ self->mouse_x, self->mouse_y, 0, 0); + } + } + } +@@ -1638,14 +1642,14 @@ xrdp_wm_process_input_mouse(struct xrdp_ + { + DEBUG(("mouse event flags %4.4x x %d y %d", device_flags, x, y)); + +- if (device_flags & MOUSE_FLAG_MOVE) /* 0x0800 */ ++ if (device_flags & PTRFLAGS_MOVE) + { + xrdp_wm_mouse_move(self, x, y); + } + +- if (device_flags & MOUSE_FLAG_BUTTON1) /* 0x1000 */ ++ if (device_flags & PTRFLAGS_BUTTON1) + { +- if (device_flags & MOUSE_FLAG_DOWN) /* 0x8000 */ ++ if (device_flags & PTRFLAGS_DOWN) + { + xrdp_wm_mouse_click(self, x, y, 1, 1); + } +@@ -1655,9 +1659,9 @@ xrdp_wm_process_input_mouse(struct xrdp_ + } + } + +- if (device_flags & MOUSE_FLAG_BUTTON2) /* 0x2000 */ ++ if (device_flags & PTRFLAGS_BUTTON2) + { +- if (device_flags & MOUSE_FLAG_DOWN) /* 0x8000 */ ++ if (device_flags & PTRFLAGS_DOWN) + { + xrdp_wm_mouse_click(self, x, y, 2, 1); + } +@@ -1667,9 +1671,9 @@ xrdp_wm_process_input_mouse(struct xrdp_ + } + } + +- if (device_flags & MOUSE_FLAG_BUTTON3) /* 0x4000 */ ++ if (device_flags & PTRFLAGS_BUTTON3) + { +- if (device_flags & MOUSE_FLAG_DOWN) /* 0x8000 */ ++ if (device_flags & PTRFLAGS_DOWN) + { + xrdp_wm_mouse_click(self, x, y, 3, 1); + } +@@ -1679,9 +1683,10 @@ xrdp_wm_process_input_mouse(struct xrdp_ + } + } + +- if (device_flags & 0x200) /* PTRFLAGS_WHEEL */ ++ /* vertical mouse wheel */ ++ if (device_flags & PTRFLAGS_WHEEL) + { +- if (device_flags & 0x100) /* PTRFLAGS_WHEEL_NEGATIVE */ ++ if (device_flags & PTRFLAGS_WHEEL_NEGATIVE) + { + xrdp_wm_mouse_click(self, 0, 0, 5, 0); + } +@@ -1691,6 +1696,24 @@ xrdp_wm_process_input_mouse(struct xrdp_ + } + } + ++ /* horizontal mouse wheel */ ++ ++ /** ++ * As mstsc does MOUSE not MOUSEX for horizontal scrolling, ++ * PTRFLAGS_HWHEEL must be handled here. ++ */ ++ if (device_flags & PTRFLAGS_HWHEEL) ++ { ++ if (device_flags & PTRFLAGS_WHEEL_NEGATIVE) ++ { ++ xrdp_wm_mouse_click(self, 0, 0, 6, 0); ++ } ++ else ++ { ++ xrdp_wm_mouse_click(self, 0, 0, 7, 0); ++ } ++ } ++ + return 0; + } + +@@ -1699,24 +1722,24 @@ static int + xrdp_wm_process_input_mousex(struct xrdp_wm* self, int device_flags, + int x, int y) + { +- if (device_flags & 0x8000) /* PTRXFLAGS_DOWN */ ++ if (device_flags & PTRXFLAGS_DOWN) + { +- if (device_flags & 0x0001) /* PTRXFLAGS_BUTTON1 */ ++ if (device_flags & PTRXFLAGS_BUTTON1) + { + xrdp_wm_mouse_click(self, x, y, 6, 1); + } +- else if (device_flags & 0x0002) /* PTRXFLAGS_BUTTON2 */ ++ else if (device_flags & PTRXFLAGS_BUTTON2) + { + xrdp_wm_mouse_click(self, x, y, 7, 1); + } + } + else + { +- if (device_flags & 0x0001) /* PTRXFLAGS_BUTTON1 */ ++ if (device_flags & PTRXFLAGS_BUTTON1) + { + xrdp_wm_mouse_click(self, x, y, 6, 0); + } +- else if (device_flags & 0x0002) /* PTRXFLAGS_BUTTON2 */ ++ else if (device_flags & PTRXFLAGS_BUTTON2) + { + xrdp_wm_mouse_click(self, x, y, 7, 0); + } Index: head/net/xrdp-devel/files/patch-issue-910 =================================================================== --- head/net/xrdp-devel/files/patch-issue-910 +++ head/net/xrdp-devel/files/patch-issue-910 @@ -0,0 +1,40 @@ +--- sesman/chansrv/sound.c.orig 2017-09-28 02:25:19 UTC ++++ sesman/chansrv/sound.c +@@ -400,19 +400,16 @@ sound_process_output_format(int aindex, + LOG(0, ("wFormatTag, fdk aac")); + g_client_does_fdk_aac = 1; + g_client_fdk_aac_index = aindex; +- g_bbuf_size = 4096; + break; + case WAVE_FORMAT_MPEGLAYER3: + LOG(0, ("wFormatTag, mp3")); + g_client_does_mp3lame = 1; + g_client_mp3lame_index = aindex; +- g_bbuf_size = 11520; + break; + case WAVE_FORMAT_OPUS: + LOG(0, ("wFormatTag, opus")); + g_client_does_opus = 1; + g_client_opus_index = aindex; +- g_bbuf_size = 11520; + break; + } + +@@ -840,14 +837,17 @@ sound_wave_compress(char *data, int data + { + if (g_client_does_fdk_aac) + { ++ g_bbuf_size = 4096; + return sound_wave_compress_fdk_aac(data, data_bytes, format_index); + } + else if (g_client_does_opus) + { ++ g_bbuf_size = 11520; + return sound_wave_compress_opus(data, data_bytes, format_index); + } + else if (g_client_does_mp3lame) + { ++ g_bbuf_size = 11520; + return sound_wave_compress_mp3lame(data, data_bytes, format_index); + } + return data_bytes;