Merge branch 'master' of github.com:FreeRDP/FreeRDP
This commit is contained in:
commit
0146927605
23
.gitignore
vendored
23
.gitignore
vendored
@ -27,16 +27,6 @@ include/freerdp/version.h
|
||||
*_dummy.c
|
||||
*_dummy.c.base
|
||||
|
||||
# Packages
|
||||
*.zip
|
||||
*.exe
|
||||
*.sh
|
||||
*.deb
|
||||
*.rpm
|
||||
*.dmg
|
||||
*.tar.Z
|
||||
*.tar.gz
|
||||
|
||||
# Eclipse
|
||||
*.project
|
||||
*.cproject
|
||||
@ -128,3 +118,16 @@ default.log
|
||||
|
||||
# etags
|
||||
TAGS
|
||||
|
||||
# generated packages
|
||||
*.zip
|
||||
*.exe
|
||||
*.sh
|
||||
*.deb
|
||||
*.rpm
|
||||
*.dmg
|
||||
*.tar.Z
|
||||
*.tar.gz
|
||||
|
||||
# packaging related files
|
||||
!packaging/scripts/prepare_deb_freerdp-nightly.sh
|
||||
|
@ -28,6 +28,8 @@
|
||||
|
||||
#define TAG CHANNELS_TAG("drdynvc.client")
|
||||
|
||||
static void dvcman_channel_free(DVCMAN_CHANNEL* channel);
|
||||
|
||||
static int dvcman_get_configuration(IWTSListener* pListener, void** ppPropertyBag)
|
||||
{
|
||||
*ppPropertyBag = NULL;
|
||||
@ -182,6 +184,7 @@ IWTSVirtualChannelManager* dvcman_new(drdynvcPlugin* plugin)
|
||||
dvcman->iface.GetChannelId = dvcman_get_channel_id;
|
||||
dvcman->drdynvc = plugin;
|
||||
dvcman->channels = ArrayList_New(TRUE);
|
||||
dvcman->channels->object.fnObjectFree = dvcman_channel_free;
|
||||
dvcman->pool = StreamPool_New(TRUE, 10);
|
||||
|
||||
return (IWTSVirtualChannelManager*) dvcman;
|
||||
@ -231,10 +234,13 @@ static DVCMAN_CHANNEL* dvcman_channel_new(IWTSVirtualChannelManager* pChannelMgr
|
||||
return channel;
|
||||
}
|
||||
|
||||
static void dvcman_channel_free(DVCMAN_CHANNEL* channel)
|
||||
void dvcman_channel_free(DVCMAN_CHANNEL* channel)
|
||||
{
|
||||
if (channel->channel_callback)
|
||||
{
|
||||
channel->channel_callback->OnClose(channel->channel_callback);
|
||||
channel->channel_callback = NULL;
|
||||
}
|
||||
|
||||
if (channel->dvc_data)
|
||||
{
|
||||
@ -244,8 +250,11 @@ static void dvcman_channel_free(DVCMAN_CHANNEL* channel)
|
||||
|
||||
DeleteCriticalSection(&(channel->lock));
|
||||
|
||||
free(channel->channel_name);
|
||||
channel->channel_name = NULL;
|
||||
if (channel->channel_name)
|
||||
{
|
||||
free(channel->channel_name);
|
||||
channel->channel_name = NULL;
|
||||
}
|
||||
|
||||
free(channel);
|
||||
}
|
||||
@ -253,24 +262,10 @@ static void dvcman_channel_free(DVCMAN_CHANNEL* channel)
|
||||
void dvcman_free(IWTSVirtualChannelManager* pChannelMgr)
|
||||
{
|
||||
int i;
|
||||
int count;
|
||||
IWTSPlugin* pPlugin;
|
||||
DVCMAN_LISTENER* listener;
|
||||
DVCMAN_CHANNEL* channel;
|
||||
DVCMAN* dvcman = (DVCMAN*) pChannelMgr;
|
||||
|
||||
ArrayList_Lock(dvcman->channels);
|
||||
|
||||
count = ArrayList_Count(dvcman->channels);
|
||||
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
channel = (DVCMAN_CHANNEL*) ArrayList_GetItem(dvcman->channels, i);
|
||||
dvcman_channel_free(channel);
|
||||
}
|
||||
|
||||
ArrayList_Unlock(dvcman->channels);
|
||||
|
||||
ArrayList_Free(dvcman->channels);
|
||||
|
||||
for (i = 0; i < dvcman->num_listeners; i++)
|
||||
@ -326,13 +321,9 @@ static int dvcman_write_channel(IWTSVirtualChannel* pChannel, UINT32 cbSize, BYT
|
||||
static int dvcman_close_channel_iface(IWTSVirtualChannel* pChannel)
|
||||
{
|
||||
DVCMAN_CHANNEL* channel = (DVCMAN_CHANNEL*) pChannel;
|
||||
DVCMAN* dvcman = channel->dvcman;
|
||||
|
||||
WLog_DBG(TAG, "id=%d", channel->channel_id);
|
||||
|
||||
ArrayList_Remove(dvcman->channels, channel);
|
||||
dvcman_channel_free(channel);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -437,7 +428,6 @@ int dvcman_close_channel(IWTSVirtualChannelManager* pChannelMgr, UINT32 ChannelI
|
||||
}
|
||||
|
||||
ArrayList_Remove(dvcman->channels, channel);
|
||||
dvcman_channel_free(channel);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -40,7 +40,7 @@ set(${MODULE_PREFIX}_SRCS
|
||||
|
||||
# On windows create dll version information.
|
||||
# Vendor, product and year are already set in top level CMakeLists.txt
|
||||
if (WIN32)
|
||||
if (WIN32 AND BUILD_SHARED_LIBS)
|
||||
set (RC_VERSION_MAJOR ${FREERDP_VERSION_MAJOR})
|
||||
set (RC_VERSION_MINOR ${FREERDP_VERSION_MINOR})
|
||||
set (RC_VERSION_BUILD ${FREERDP_VERSION_REVISION})
|
||||
|
@ -353,7 +353,8 @@ int xf_SurfaceCommand_H264(xfContext* xfc, RdpgfxClientContext* context, RDPGFX_
|
||||
DstData = surface->data;
|
||||
|
||||
status = h264_decompress(xfc->codecs->h264, bs->data, bs->length, &DstData,
|
||||
surface->format, surface->scanline , surface->height, meta->regionRects, meta->numRegionRects);
|
||||
surface->format, surface->scanline , surface->width,
|
||||
surface->height, meta->regionRects, meta->numRegionRects);
|
||||
|
||||
if (status < 0)
|
||||
{
|
||||
|
@ -44,7 +44,7 @@ endif()
|
||||
|
||||
# On windows create dll version information.
|
||||
# Vendor, product and year are already set in top level CMakeLists.txt
|
||||
if (WIN32)
|
||||
if (WIN32 AND BUILD_SHARED_LIBS)
|
||||
set (RC_VERSION_MAJOR ${FREERDP_VERSION_MAJOR})
|
||||
set (RC_VERSION_MINOR ${FREERDP_VERSION_MINOR})
|
||||
set (RC_VERSION_BUILD ${FREERDP_VERSION_REVISION})
|
||||
|
@ -28,7 +28,7 @@
|
||||
# limitations under the License.
|
||||
#=============================================================================
|
||||
|
||||
set(REQUIRED_WAYLAND_CLIENT_VERSION 0.95)
|
||||
set(REQUIRED_WAYLAND_CLIENT_VERSION 1.3.0)
|
||||
include(FindPkgConfig)
|
||||
|
||||
if(PKG_CONFIG_FOUND)
|
||||
|
@ -61,7 +61,8 @@ extern "C" {
|
||||
FREERDP_API int h264_compress(H264_CONTEXT* h264, BYTE* pSrcData, UINT32 SrcSize, BYTE** ppDstData, UINT32* pDstSize);
|
||||
|
||||
FREERDP_API int h264_decompress(H264_CONTEXT* h264, BYTE* pSrcData, UINT32 SrcSize,
|
||||
BYTE** ppDstData, DWORD DstFormat, int nDstStep, int nDstHeight, RDPGFX_RECT16* regionRects, int numRegionRect);
|
||||
BYTE** ppDstData, DWORD DstFormat, int nDstStep, int nDstWidth, int nDstHeight,
|
||||
RDPGFX_RECT16* regionRects, int numRegionRect);
|
||||
|
||||
FREERDP_API int h264_context_reset(H264_CONTEXT* h264);
|
||||
|
||||
|
@ -423,7 +423,8 @@ static H264_CONTEXT_SUBSYSTEM g_Subsystem_libavcodec =
|
||||
#endif
|
||||
|
||||
int h264_decompress(H264_CONTEXT* h264, BYTE* pSrcData, UINT32 SrcSize,
|
||||
BYTE** ppDstData, DWORD DstFormat, int nDstStep, int nDstHeight, RDPGFX_RECT16* regionRects, int numRegionRects)
|
||||
BYTE** ppDstData, DWORD DstFormat, int nDstStep, int nDstWidth,
|
||||
int nDstHeight, RDPGFX_RECT16* regionRects, int numRegionRects)
|
||||
{
|
||||
int index;
|
||||
int status;
|
||||
@ -435,7 +436,6 @@ int h264_decompress(H264_CONTEXT* h264, BYTE* pSrcData, UINT32 SrcSize,
|
||||
int width, height;
|
||||
BYTE* pYUVPoint[3];
|
||||
RDPGFX_RECT16* rect;
|
||||
int UncompressedSize;
|
||||
primitives_t *prims = primitives_get();
|
||||
|
||||
if (!h264)
|
||||
@ -452,11 +452,6 @@ int h264_decompress(H264_CONTEXT* h264, BYTE* pSrcData, UINT32 SrcSize,
|
||||
if ((status = h264->subsystem->Decompress(h264, pSrcData, SrcSize)) < 0)
|
||||
return status;
|
||||
|
||||
UncompressedSize = h264->width * h264->height * 4;
|
||||
|
||||
if (UncompressedSize > (nDstStep * nDstHeight))
|
||||
return -1;
|
||||
|
||||
pYUVData = h264->pYUVData;
|
||||
iStride = h264->iStride;
|
||||
|
||||
@ -464,6 +459,18 @@ int h264_decompress(H264_CONTEXT* h264, BYTE* pSrcData, UINT32 SrcSize,
|
||||
{
|
||||
rect = &(regionRects[index]);
|
||||
|
||||
/* Check, if the ouput rectangle is valid in decoded h264 frame. */
|
||||
if ((rect->right > h264->width) || (rect->left > h264->width))
|
||||
return -1;
|
||||
if ((rect->top > h264->height) || (rect->bottom > h264->height))
|
||||
return -1;
|
||||
|
||||
/* Check, if the output rectangle is valid in destination buffer. */
|
||||
if ((rect->right > nDstWidth) || (rect->left > nDstWidth))
|
||||
return -1;
|
||||
if ((rect->bottom > nDstHeight) || (rect->top > nDstHeight))
|
||||
return -1;
|
||||
|
||||
width = rect->right - rect->left;
|
||||
height = rect->bottom - rect->top;
|
||||
|
||||
|
@ -642,6 +642,21 @@ UINT VCAPITYPE FreeRDP_VirtualChannelWrite(DWORD openHandle, LPVOID pData, ULONG
|
||||
return CHANNEL_RC_OK;
|
||||
}
|
||||
|
||||
static BOOL freerdp_channels_is_loaded(rdpChannels* channels, PVIRTUALCHANNELENTRY entry)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i=0; i<channels->clientDataCount; i++)
|
||||
{
|
||||
CHANNEL_CLIENT_DATA* pChannelClientData = &channels->clientDataList[i];
|
||||
|
||||
if (pChannelClientData->entry == entry)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int freerdp_channels_client_load(rdpChannels* channels, rdpSettings* settings, PVIRTUALCHANNELENTRY entry, void* data)
|
||||
{
|
||||
int status;
|
||||
@ -654,6 +669,12 @@ int freerdp_channels_client_load(rdpChannels* channels, rdpSettings* settings, P
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (freerdp_channels_is_loaded(channels, entry))
|
||||
{
|
||||
WLog_WARN(TAG, "Skipping, channel already loaded");
|
||||
return 0;
|
||||
}
|
||||
|
||||
pChannelClientData = &channels->clientDataList[channels->clientDataCount];
|
||||
pChannelClientData->entry = entry;
|
||||
|
||||
|
@ -356,7 +356,8 @@ int gdi_SurfaceCommand_H264(rdpGdi* gdi, RdpgfxClientContext* context, RDPGFX_SU
|
||||
DstData = surface->data;
|
||||
|
||||
status = h264_decompress(gdi->codecs->h264, bs->data, bs->length, &DstData,
|
||||
PIXEL_FORMAT_XRGB32, surface->scanline , surface->height, meta->regionRects, meta->numRegionRects);
|
||||
PIXEL_FORMAT_XRGB32, surface->scanline , surface->width, surface->height,
|
||||
meta->regionRects, meta->numRegionRects);
|
||||
|
||||
if (status < 0)
|
||||
{
|
||||
|
5
packaging/deb/freerdp-nightly/changelog
Normal file
5
packaging/deb/freerdp-nightly/changelog
Normal file
@ -0,0 +1,5 @@
|
||||
freerdp-nightly (1.2.0) unstable; urgency=medium
|
||||
|
||||
* Initial version of freerdp-nightly
|
||||
|
||||
-- FreeRDP <team@freerdp.com> Wed, 07 Jan 2015 10:09:32 +0100
|
1
packaging/deb/freerdp-nightly/compat
Normal file
1
packaging/deb/freerdp-nightly/compat
Normal file
@ -0,0 +1 @@
|
||||
9
|
91
packaging/deb/freerdp-nightly/control
Normal file
91
packaging/deb/freerdp-nightly/control
Normal file
@ -0,0 +1,91 @@
|
||||
Source: freerdp-nightly
|
||||
Section: x11
|
||||
Priority: optional
|
||||
Maintainer: FreeRDP <team@freerdp.com>
|
||||
Build-Depends:
|
||||
debhelper (>= 9),
|
||||
cdbs,
|
||||
autotools-dev,
|
||||
cmake,
|
||||
pkg-config,
|
||||
xmlto,
|
||||
libssl-dev,
|
||||
docbook-xsl,
|
||||
xsltproc,
|
||||
libxkbfile-dev,
|
||||
libx11-dev,
|
||||
libwayland-dev,
|
||||
libxrandr-dev,
|
||||
libxi-dev,
|
||||
libxrender-dev,
|
||||
libxext-dev,
|
||||
libxinerama-dev,
|
||||
libxfixes-dev,
|
||||
libxcursor-dev,
|
||||
libxv-dev,
|
||||
libxdamage-dev,
|
||||
libxtst-dev,
|
||||
libcups2-dev,
|
||||
libpcsclite-dev,
|
||||
libasound2-dev,
|
||||
libpulse-dev,
|
||||
libavcodec-dev,
|
||||
libavutil-dev,
|
||||
libjpeg-dev,
|
||||
libgsm1-dev,
|
||||
libusb-1.0-0-dev,
|
||||
libudev-dev,
|
||||
libdbus-glib-1-dev,
|
||||
uuid-dev,
|
||||
libxml2-dev,
|
||||
libgstreamer1.0-dev | libgstreamer0.10-dev,
|
||||
libgstreamer-plugins-base1.0-dev | libgstreamer-plugins-base0.10-dev
|
||||
Standards-Version: 3.9.5
|
||||
Homepage: http://www.freerdp.com/
|
||||
Vcs-Browser: http://github.com/FreeRDP/FreeRDP.git
|
||||
Vcs-Git: git://github.com/FreeRDP/FreeRDP.git
|
||||
|
||||
Package: freerdp-nightly
|
||||
Architecture: any
|
||||
Depends: ${misc:Depends}, ${shlibs:Depends}
|
||||
Provides: freerdp
|
||||
Description: RDP client for Windows Terminal Services (X11 client)
|
||||
FreeRDP is a libre client/server implementation of the Remote
|
||||
Desktop Protocol (RDP).
|
||||
.
|
||||
Currently, the FreeRDP client supports the following Windows Versions:
|
||||
.
|
||||
* Windows NT Server
|
||||
* Windows 2000 Terminal Server
|
||||
* Windows XP
|
||||
* Windows 2003 Server
|
||||
* Windows Vista
|
||||
* Windows 2008/2008r2/2011SBS Server
|
||||
* Windows 7
|
||||
* Windows 2012 Server
|
||||
* Windows 8
|
||||
.
|
||||
This package contains the X11 based client.
|
||||
|
||||
Package: freerdp-nightly-dev
|
||||
Section: libdevel
|
||||
Architecture: any
|
||||
Multi-Arch: same
|
||||
Depends: freerdp-nightly (= ${binary:Version}), ${misc:Depends}
|
||||
Description: Free Remote Desktop Protocol library (development files)
|
||||
FreeRDP is a libre client/server implementation of the Remote
|
||||
Desktop Protocol (RDP).
|
||||
.
|
||||
This package contains the FreeRDP development files.
|
||||
|
||||
Package: freerdp-nightly-dbg
|
||||
Section: debug
|
||||
Priority: extra
|
||||
Architecture: any
|
||||
Depends:
|
||||
freerdp-nightly (= ${binary:Version}), ${misc:Depends},
|
||||
Description: RDP client for Windows Terminal Services (X11 client, debug symbols)
|
||||
FreeRDP is a libre client/server implementation of the Remote
|
||||
Desktop Protocol (RDP).
|
||||
.
|
||||
This package contains the debug symbols of the xfreerdp executable.
|
0
packaging/deb/freerdp-nightly/copyright
Normal file
0
packaging/deb/freerdp-nightly/copyright
Normal file
@ -0,0 +1 @@
|
||||
freerdp-nightly-dbg: no-copyright-file new-package-should-close-itp-bug dir-or-file-in-opt package-name-doesnt-match-sonames
|
@ -0,0 +1,4 @@
|
||||
opt/freerdp-nightly/lib/*.so
|
||||
opt/freerdp-nightly/lib/pkgconfig
|
||||
opt/freerdp-nightly/lib/cmake
|
||||
opt/freerdp-nightly/include
|
@ -0,0 +1 @@
|
||||
freerdp-nightly-dev: no-copyright-file dir-or-file-in-opt
|
3
packaging/deb/freerdp-nightly/freerdp-nightly.install
Normal file
3
packaging/deb/freerdp-nightly/freerdp-nightly.install
Normal file
@ -0,0 +1,3 @@
|
||||
opt/freerdp-nightly/lib/*.so.*
|
||||
opt/freerdp-nightly/bin
|
||||
opt/freerdp-nightly/share/man/man1/xfreerdp.1*
|
@ -0,0 +1 @@
|
||||
freerdp-nightly: no-copyright-file new-package-should-close-itp-bug dir-or-file-in-opt package-name-doesnt-match-sonames
|
1
packaging/deb/freerdp-nightly/lintian-overrides
Normal file
1
packaging/deb/freerdp-nightly/lintian-overrides
Normal file
@ -0,0 +1 @@
|
||||
freerdp-nightly source: no-debian-copyright
|
53
packaging/deb/freerdp-nightly/rules
Executable file
53
packaging/deb/freerdp-nightly/rules
Executable file
@ -0,0 +1,53 @@
|
||||
#!/usr/bin/make -f
|
||||
|
||||
DEB_HOST_ARCH=$(shell dpkg-architecture -qDEB_HOST_ARCH)
|
||||
ifneq (,$(filter armhf,$(DEB_HOST_ARCH)))
|
||||
ARM_FLOAT_ABI = -DARM_FP_ABI=hard
|
||||
else
|
||||
ARM_FLOAT_ABI =
|
||||
endif
|
||||
NULL =
|
||||
|
||||
DEB_CMAKE_EXTRA_FLAGS := -DCMAKE_SKIP_RPATH=FALSE \
|
||||
-DCMAKE_SKIP_INSTALL_RPATH=FALSE \
|
||||
-DWITH_PULSE=ON \
|
||||
-DWITH_CHANNELS=ON \
|
||||
-DSTATIC_CHANNELS=ON \
|
||||
-DWITH_CUPS=ON \
|
||||
-DWITH_PCSC=ON \
|
||||
-DWITH_JPEG=ON \
|
||||
-DWITH_GSTREAMER_0_10=ON \
|
||||
-DWITH_GSM=ON \
|
||||
-DCHANNEL_URBDRC=ON \
|
||||
-DCHANNEL_URBDRC_CLIENT=ON \
|
||||
-DWITH_SERVER=ON \
|
||||
-DBUILD_TESTING=OFF \
|
||||
-DCMAKE_BUILD_TYPE=RELWITHDEBINFO \
|
||||
-DCMAKE_INSTALL_PREFIX=/opt/freerdp-nightly/ \
|
||||
-DCMAKE_INSTALL_INCLUDEDIR=include \
|
||||
-DCMAKE_INSTALL_LIBDIR=lib \
|
||||
$(ARM_FLOAT_ABI) \
|
||||
$(NULL)
|
||||
|
||||
%:
|
||||
dh $@ --parallel
|
||||
|
||||
override_dh_auto_configure:
|
||||
dh_auto_configure -- $(DEB_CMAKE_EXTRA_FLAGS)
|
||||
|
||||
override_dh_shlibdeps:
|
||||
dh_shlibdeps -l /opt/freerdp-nightly/lib/
|
||||
|
||||
override_dh_strip:
|
||||
dh_strip --dbg-package=freerdp-nightly-dbg
|
||||
|
||||
override_dh_install:
|
||||
rm -f debian/tmp/opt/freerdp-nightly/lib/libwinpr-makecert-tool.a
|
||||
rm -f debian/tmp/opt/freerdp-nightly/lib/freerdp/*.a
|
||||
mkdir -p debian/tmp/opt/freerdp-nightly/lib/cmake/
|
||||
|
||||
dh_install --fail-missing
|
||||
|
||||
override_dh_clean:
|
||||
rm -f config.h
|
||||
dh_clean
|
1
packaging/deb/freerdp-nightly/source/format
Normal file
1
packaging/deb/freerdp-nightly/source/format
Normal file
@ -0,0 +1 @@
|
||||
3.0 (native)
|
3
packaging/scripts/prepare_deb_freerdp-nightly.sh
Executable file
3
packaging/scripts/prepare_deb_freerdp-nightly.sh
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
ln -s packaging/deb/freerdp-nightly debian
|
Loading…
Reference in New Issue
Block a user