Merge branch 'master' of github.com:FreeRDP/FreeRDP

This commit is contained in:
Marc-André Moreau 2015-01-22 16:07:25 -05:00
commit 0146927605
23 changed files with 234 additions and 45 deletions

23
.gitignore vendored
View File

@ -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

View File

@ -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;
}

View File

@ -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})

View File

@ -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)
{

View File

@ -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})

View File

@ -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)

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -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)
{

View 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

View File

@ -0,0 +1 @@
9

View 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.

View File

View 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

View File

@ -0,0 +1,4 @@
opt/freerdp-nightly/lib/*.so
opt/freerdp-nightly/lib/pkgconfig
opt/freerdp-nightly/lib/cmake
opt/freerdp-nightly/include

View File

@ -0,0 +1 @@
freerdp-nightly-dev: no-copyright-file dir-or-file-in-opt

View File

@ -0,0 +1,3 @@
opt/freerdp-nightly/lib/*.so.*
opt/freerdp-nightly/bin
opt/freerdp-nightly/share/man/man1/xfreerdp.1*

View File

@ -0,0 +1 @@
freerdp-nightly: no-copyright-file new-package-should-close-itp-bug dir-or-file-in-opt package-name-doesnt-match-sonames

View File

@ -0,0 +1 @@
freerdp-nightly source: no-debian-copyright

View 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

View File

@ -0,0 +1 @@
3.0 (native)

View File

@ -0,0 +1,3 @@
#!/bin/sh
ln -s packaging/deb/freerdp-nightly debian