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

ulab-next
Jay Sorg 12 years ago
commit 0c19bc49e6

@ -1,7 +1,7 @@
/** /**
* xrdp: A Remote Desktop Protocol server. * xrdp: A Remote Desktop Protocol server.
* *
* Copyright (C) Jay Sorg 2009-2012 * Copyright (C) Jay Sorg 2009-2013
* Copyright (C) Laxmikant Rashinkar 2009-2012 * Copyright (C) Laxmikant Rashinkar 2009-2012
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
@ -45,6 +45,7 @@ static int g_rdpsnd_index = -1;
static int g_rdpdr_index = -1; static int g_rdpdr_index = -1;
static int g_rail_index = -1; static int g_rail_index = -1;
static int g_drdynvc_index = -1; static int g_drdynvc_index = -1;
static int g_sent = 0; /* if sent data to xrdp, waiting response */
/* state info for dynamic virtual channels */ /* state info for dynamic virtual channels */
static struct xrdp_api_data *g_dvc_channels[MAX_DVC_CHANNELS]; static struct xrdp_api_data *g_dvc_channels[MAX_DVC_CHANNELS];
@ -149,6 +150,7 @@ send_data_from_chan_item(struct chan_item *chan_item)
s_mark_end(s); s_mark_end(s);
LOGM((LOG_LEVEL_DEBUG, "chansrv::send_channel_data: -- " LOGM((LOG_LEVEL_DEBUG, "chansrv::send_channel_data: -- "
"size %d chan_flags 0x%8.8x", size, chan_flags)); "size %d chan_flags 0x%8.8x", size, chan_flags));
g_sent = 1;
error = trans_force_write(g_con_trans); error = trans_force_write(g_con_trans);
if (error != 0) if (error != 0)
@ -214,7 +216,10 @@ send_channel_data(int chan_id, char *data, int size)
if (g_chan_items[index].id == chan_id) if (g_chan_items[index].id == chan_id)
{ {
add_data_to_chan_item(g_chan_items + index, data, size); add_data_to_chan_item(g_chan_items + index, data, size);
check_chan_items(); if (g_sent == 0)
{
check_chan_items();
}
return 0; return 0;
} }
} }
@ -478,6 +483,7 @@ static int APP_CC
process_message_channel_data_response(struct stream *s) process_message_channel_data_response(struct stream *s)
{ {
LOG(10, ("process_message_channel_data_response:")); LOG(10, ("process_message_channel_data_response:"));
g_sent = 0;
check_chan_items(); check_chan_items();
return 0; return 0;
} }

@ -262,7 +262,6 @@ static int data_send(struct userdata *u, pa_memchunk *chunk) {
char *data; char *data;
int bytes; int bytes;
int sent; int sent;
int display_num;
int fd; int fd;
struct header h; struct header h;
struct sockaddr_un s; struct sockaddr_un s;
@ -276,9 +275,8 @@ static int data_send(struct userdata *u, pa_memchunk *chunk) {
fd = socket(PF_LOCAL, SOCK_STREAM, 0); fd = socket(PF_LOCAL, SOCK_STREAM, 0);
memset(&s, 0, sizeof(s)); memset(&s, 0, sizeof(s));
s.sun_family = AF_UNIX; s.sun_family = AF_UNIX;
display_num = get_display_num_from_display(getenv("DISPLAY"));
bytes = sizeof(s.sun_path) - 1; bytes = sizeof(s.sun_path) - 1;
snprintf(s.sun_path, bytes, CHANSRV_PORT_STR, display_num); snprintf(s.sun_path, bytes, CHANSRV_PORT_STR, u->display_num);
pa_log("trying to conenct to %s", s.sun_path); pa_log("trying to conenct to %s", s.sun_path);
if (connect(fd, (struct sockaddr *)&s, if (connect(fd, (struct sockaddr *)&s,
sizeof(struct sockaddr_un)) != 0) { sizeof(struct sockaddr_un)) != 0) {
@ -296,15 +294,11 @@ static int data_send(struct userdata *u, pa_memchunk *chunk) {
//pa_log("bytes %d", bytes); //pa_log("bytes %d", bytes);
/* from rewind */ /* from rewind */
if (u->skip_bytes > 0) if (u->skip_bytes > 0) {
{ if (bytes > u->skip_bytes) {
if (bytes > u->skip_bytes)
{
bytes -= u->skip_bytes; bytes -= u->skip_bytes;
u->skip_bytes = 0; u->skip_bytes = 0;
} } else {
else
{
u->skip_bytes -= bytes; u->skip_bytes -= bytes;
return bytes; return bytes;
} }

@ -4,7 +4,7 @@ Pulse audio notes.
to see what version of PA is on your machine to see what version of PA is on your machine
pulseaudio --version pulseaudio --version
IMA ADPCM
To build xrdp pulse sink, To build xrdp pulse sink,
get the pulse source that most closely matches your version on get the pulse source that most closely matches your version on
@ -25,3 +25,48 @@ autospawn = no
daemon-binary = /bin/true daemon-binary = /bin/true
xfreerdp -a 24 -z --plugin rdpsnd --data alsa:hw:0,0 -- 127.0.0.1 xfreerdp -a 24 -z --plugin rdpsnd --data alsa:hw:0,0 -- 127.0.0.1
to get ./configure on pulse source to run
apt-get install libsndfile1-dev
apt-get install libspeex-dev
apt-get install libspeexdsp-dev
alsamixer
apt-get install alsa-utils
/etc/asound.conf
---------------------------------
pcm.pulse {
type pulse
}
ctl.pulse {
type pulse
}
pcm.!default {
type pulse
}
ctl.!default {
type pulse
}
---------------------------------
/etc/pulse/default.pa
---------------------------------
.nofail
.fail
load-module module-augment-properties
#load-module module-alsa-sink device=hw:0
#load-module module-alsa-source device=hw:0
#load-module module-pipe-sink
#load-module module-pipe-source
#load-module module-null-sink
load-module module-xrdp-sink
load-module module-native-protocol-unix
#load-module module-udev-detect tsched=0
---------------------------------

Loading…
Cancel
Save