Merge pull request #821 from awakecoding/master

rdpsnd + tsmf fix
This commit is contained in:
Marc-André Moreau 2012-11-25 22:35:44 -08:00
commit f22ad7948f
16 changed files with 102 additions and 31 deletions

View File

@ -477,6 +477,9 @@ int freerdp_rdpsnd_client_subsystem_entry(PFREERDP_RDPSND_DEVICE_ENTRY_POINTS pE
args = pEntryPoints->args; args = pEntryPoints->args;
rdpsnd_alsa_parse_addin_args((rdpsndDevicePlugin*) alsa, args); rdpsnd_alsa_parse_addin_args((rdpsndDevicePlugin*) alsa, args);
if (!alsa->device_name)
alsa->device_name = _strdup("default");
alsa->out_handle = 0; alsa->out_handle = 0;
alsa->source_rate = 22050; alsa->source_rate = 22050;
alsa->actual_rate = 22050; alsa->actual_rate = 22050;

View File

@ -319,20 +319,27 @@ static void rdpsnd_process_message_wave_info(rdpsndPlugin* rdpsnd, STREAM* data_
DEBUG_SVC("waveDataSize %d wFormatNo %d", rdpsnd->waveDataSize, wFormatNo); DEBUG_SVC("waveDataSize %d wFormatNo %d", rdpsnd->waveDataSize, wFormatNo);
rdpsnd->close_timestamp = 0; rdpsnd->close_timestamp = 0;
if (!rdpsnd->is_open) if (!rdpsnd->is_open)
{ {
rdpsnd->current_format = wFormatNo; rdpsnd->current_format = wFormatNo;
rdpsnd->is_open = TRUE; rdpsnd->is_open = TRUE;
if (rdpsnd->device) if (rdpsnd->device)
{
IFCALL(rdpsnd->device->Open, rdpsnd->device, &rdpsnd->supported_formats[wFormatNo], IFCALL(rdpsnd->device->Open, rdpsnd->device, &rdpsnd->supported_formats[wFormatNo],
rdpsnd->latency); rdpsnd->latency);
}
} }
else if (wFormatNo != rdpsnd->current_format) else if (wFormatNo != rdpsnd->current_format)
{ {
rdpsnd->current_format = wFormatNo; rdpsnd->current_format = wFormatNo;
if (rdpsnd->device) if (rdpsnd->device)
{
IFCALL(rdpsnd->device->SetFormat, rdpsnd->device, &rdpsnd->supported_formats[wFormatNo], IFCALL(rdpsnd->device->SetFormat, rdpsnd->device, &rdpsnd->supported_formats[wFormatNo],
rdpsnd->latency); rdpsnd->latency);
}
} }
} }
@ -345,14 +352,19 @@ static void rdpsnd_process_message_wave(rdpsndPlugin* rdpsnd, STREAM* data_in)
struct data_out_item* item; struct data_out_item* item;
rdpsnd->expectingWave = 0; rdpsnd->expectingWave = 0;
memcpy(stream_get_head(data_in), rdpsnd->waveData, 4); memcpy(stream_get_head(data_in), rdpsnd->waveData, 4);
if (stream_get_size(data_in) != rdpsnd->waveDataSize) if (stream_get_size(data_in) != rdpsnd->waveDataSize)
{ {
DEBUG_WARN("size error"); DEBUG_WARN("size error");
return; return;
} }
if (rdpsnd->device) if (rdpsnd->device)
{
IFCALL(rdpsnd->device->Play, rdpsnd->device, stream_get_head(data_in), stream_get_size(data_in)); IFCALL(rdpsnd->device->Play, rdpsnd->device, stream_get_head(data_in), stream_get_size(data_in));
}
process_ms = get_mstime() - rdpsnd->wave_timestamp; process_ms = get_mstime() - rdpsnd->wave_timestamp;
delay_ms = 250; delay_ms = 250;
@ -380,8 +392,12 @@ static void rdpsnd_process_message_wave(rdpsndPlugin* rdpsnd, STREAM* data_in)
static void rdpsnd_process_message_close(rdpsndPlugin* rdpsnd) static void rdpsnd_process_message_close(rdpsndPlugin* rdpsnd)
{ {
DEBUG_SVC("server closes."); DEBUG_SVC("server closes.");
if (rdpsnd->device) if (rdpsnd->device)
{
IFCALL(rdpsnd->device->Start, rdpsnd->device); IFCALL(rdpsnd->device->Start, rdpsnd->device);
}
rdpsnd->close_timestamp = get_mstime() + 2000; rdpsnd->close_timestamp = get_mstime() + 2000;
rdpsnd->plugin.interval_ms = 10; rdpsnd->plugin.interval_ms = 10;
} }
@ -392,8 +408,11 @@ static void rdpsnd_process_message_setvolume(rdpsndPlugin* rdpsnd, STREAM* data_
stream_read_UINT32(data_in, dwVolume); stream_read_UINT32(data_in, dwVolume);
DEBUG_SVC("dwVolume 0x%X", dwVolume); DEBUG_SVC("dwVolume 0x%X", dwVolume);
if (rdpsnd->device) if (rdpsnd->device)
{
IFCALL(rdpsnd->device->SetVolume, rdpsnd->device, dwVolume); IFCALL(rdpsnd->device->SetVolume, rdpsnd->device, dwVolume);
}
} }
static void rdpsnd_process_receive(rdpSvcPlugin* plugin, STREAM* data_in) static void rdpsnd_process_receive(rdpSvcPlugin* plugin, STREAM* data_in)
@ -420,18 +439,23 @@ static void rdpsnd_process_receive(rdpSvcPlugin* plugin, STREAM* data_in)
case SNDC_FORMATS: case SNDC_FORMATS:
rdpsnd_process_message_formats(rdpsnd, data_in); rdpsnd_process_message_formats(rdpsnd, data_in);
break; break;
case SNDC_TRAINING: case SNDC_TRAINING:
rdpsnd_process_message_training(rdpsnd, data_in); rdpsnd_process_message_training(rdpsnd, data_in);
break; break;
case SNDC_WAVE: case SNDC_WAVE:
rdpsnd_process_message_wave_info(rdpsnd, data_in, BodySize); rdpsnd_process_message_wave_info(rdpsnd, data_in, BodySize);
break; break;
case SNDC_CLOSE: case SNDC_CLOSE:
rdpsnd_process_message_close(rdpsnd); rdpsnd_process_message_close(rdpsnd);
break; break;
case SNDC_SETVOLUME: case SNDC_SETVOLUME:
rdpsnd_process_message_setvolume(rdpsnd, data_in); rdpsnd_process_message_setvolume(rdpsnd, data_in);
break; break;
default: default:
DEBUG_WARN("unknown msgType %d", msgType); DEBUG_WARN("unknown msgType %d", msgType);
break; break;

View File

@ -49,13 +49,14 @@ typedef struct _TSMFALSAAudioDevice
UINT32 bytes_per_sample; UINT32 bytes_per_sample;
FREERDP_DSP_CONTEXT* dsp_context; FREERDP_DSP_CONTEXT* dsp_context;
} TSMFALSAAudioDevice; } TSMFAlsaAudioDevice;
static BOOL tsmf_alsa_open_device(TSMFALSAAudioDevice* alsa) static BOOL tsmf_alsa_open_device(TSMFAlsaAudioDevice* alsa)
{ {
int error; int error;
error = snd_pcm_open(&alsa->out_handle, alsa->device, SND_PCM_STREAM_PLAYBACK, 0); error = snd_pcm_open(&alsa->out_handle, alsa->device, SND_PCM_STREAM_PLAYBACK, 0);
if (error < 0) if (error < 0)
{ {
DEBUG_WARN("failed to open device %s", alsa->device); DEBUG_WARN("failed to open device %s", alsa->device);
@ -68,7 +69,7 @@ static BOOL tsmf_alsa_open_device(TSMFALSAAudioDevice* alsa)
static BOOL tsmf_alsa_open(ITSMFAudioDevice* audio, const char* device) static BOOL tsmf_alsa_open(ITSMFAudioDevice* audio, const char* device)
{ {
TSMFALSAAudioDevice* alsa = (TSMFALSAAudioDevice*) audio; TSMFAlsaAudioDevice* alsa = (TSMFAlsaAudioDevice*) audio;
if (!device) if (!device)
{ {
@ -90,7 +91,7 @@ static BOOL tsmf_alsa_set_format(ITSMFAudioDevice* audio,
snd_pcm_uframes_t frames; snd_pcm_uframes_t frames;
snd_pcm_hw_params_t* hw_params; snd_pcm_hw_params_t* hw_params;
snd_pcm_sw_params_t* sw_params; snd_pcm_sw_params_t* sw_params;
TSMFALSAAudioDevice* alsa = (TSMFALSAAudioDevice*) audio; TSMFAlsaAudioDevice* alsa = (TSMFAlsaAudioDevice*) audio;
if (!alsa->out_handle) if (!alsa->out_handle)
return FALSE; return FALSE;
@ -102,11 +103,13 @@ static BOOL tsmf_alsa_set_format(ITSMFAudioDevice* audio,
alsa->bytes_per_sample = bits_per_sample / 8; alsa->bytes_per_sample = bits_per_sample / 8;
error = snd_pcm_hw_params_malloc(&hw_params); error = snd_pcm_hw_params_malloc(&hw_params);
if (error < 0) if (error < 0)
{ {
DEBUG_WARN("snd_pcm_hw_params_malloc failed"); DEBUG_WARN("snd_pcm_hw_params_malloc failed");
return FALSE; return FALSE;
} }
snd_pcm_hw_params_any(alsa->out_handle, hw_params); snd_pcm_hw_params_any(alsa->out_handle, hw_params);
snd_pcm_hw_params_set_access(alsa->out_handle, hw_params, snd_pcm_hw_params_set_access(alsa->out_handle, hw_params,
SND_PCM_ACCESS_RW_INTERLEAVED); SND_PCM_ACCESS_RW_INTERLEAVED);
@ -123,11 +126,13 @@ static BOOL tsmf_alsa_set_format(ITSMFAudioDevice* audio,
snd_pcm_hw_params_free(hw_params); snd_pcm_hw_params_free(hw_params);
error = snd_pcm_sw_params_malloc(&sw_params); error = snd_pcm_sw_params_malloc(&sw_params);
if (error < 0) if (error < 0)
{ {
DEBUG_WARN("snd_pcm_sw_params_malloc"); DEBUG_WARN("snd_pcm_sw_params_malloc");
return FALSE; return FALSE;
} }
snd_pcm_sw_params_current(alsa->out_handle, sw_params); snd_pcm_sw_params_current(alsa->out_handle, sw_params);
snd_pcm_sw_params_set_start_threshold(alsa->out_handle, sw_params, snd_pcm_sw_params_set_start_threshold(alsa->out_handle, sw_params,
frames / 2); frames / 2);
@ -139,6 +144,7 @@ static BOOL tsmf_alsa_set_format(ITSMFAudioDevice* audio,
DEBUG_DVC("sample_rate %d channels %d bits_per_sample %d", DEBUG_DVC("sample_rate %d channels %d bits_per_sample %d",
sample_rate, channels, bits_per_sample); sample_rate, channels, bits_per_sample);
DEBUG_DVC("hardware buffer %d frames", (int)frames); DEBUG_DVC("hardware buffer %d frames", (int)frames);
if ((alsa->actual_rate != alsa->source_rate) || if ((alsa->actual_rate != alsa->source_rate) ||
(alsa->actual_channels != alsa->source_channels)) (alsa->actual_channels != alsa->source_channels))
{ {
@ -147,6 +153,7 @@ static BOOL tsmf_alsa_set_format(ITSMFAudioDevice* audio,
alsa->actual_rate, alsa->actual_channels, alsa->actual_rate, alsa->actual_channels,
alsa->source_rate, alsa->source_channels); alsa->source_rate, alsa->source_channels);
} }
return TRUE; return TRUE;
} }
@ -160,7 +167,7 @@ static BOOL tsmf_alsa_play(ITSMFAudioDevice* audio, BYTE* data, UINT32 data_size
BYTE* pindex; BYTE* pindex;
int rbytes_per_frame; int rbytes_per_frame;
int sbytes_per_frame; int sbytes_per_frame;
TSMFALSAAudioDevice* alsa = (TSMFALSAAudioDevice*) audio; TSMFAlsaAudioDevice* alsa = (TSMFAlsaAudioDevice*) audio;
DEBUG_DVC("data_size %d", data_size); DEBUG_DVC("data_size %d", data_size);
@ -193,6 +200,7 @@ static BOOL tsmf_alsa_play(ITSMFAudioDevice* audio, BYTE* data, UINT32 data_size
len = end - pindex; len = end - pindex;
frames = len / rbytes_per_frame; frames = len / rbytes_per_frame;
error = snd_pcm_writei(alsa->out_handle, pindex, frames); error = snd_pcm_writei(alsa->out_handle, pindex, frames);
if (error == -EPIPE) if (error == -EPIPE)
{ {
snd_pcm_recover(alsa->out_handle, error, 0); snd_pcm_recover(alsa->out_handle, error, 0);
@ -206,9 +214,12 @@ static BOOL tsmf_alsa_play(ITSMFAudioDevice* audio, BYTE* data, UINT32 data_size
tsmf_alsa_open_device(alsa); tsmf_alsa_open_device(alsa);
break; break;
} }
DEBUG_DVC("%d frames played.", error); DEBUG_DVC("%d frames played.", error);
if (error == 0) if (error == 0)
break; break;
pindex += error * rbytes_per_frame; pindex += error * rbytes_per_frame;
} }
} }
@ -221,14 +232,15 @@ static UINT64 tsmf_alsa_get_latency(ITSMFAudioDevice* audio)
{ {
UINT64 latency = 0; UINT64 latency = 0;
snd_pcm_sframes_t frames = 0; snd_pcm_sframes_t frames = 0;
TSMFALSAAudioDevice* alsa = (TSMFALSAAudioDevice*) audio; TSMFAlsaAudioDevice* alsa = (TSMFAlsaAudioDevice*) audio;
if (alsa->out_handle && alsa->actual_rate > 0 && if (alsa->out_handle && alsa->actual_rate > 0 &&
snd_pcm_delay(alsa->out_handle, &frames) == 0 && snd_pcm_delay(alsa->out_handle, &frames) == 0 &&
frames > 0) frames > 0)
{ {
latency = ((UINT64)frames) * 10000000LL / (UINT64)alsa->actual_rate; latency = ((UINT64)frames) * 10000000LL / (UINT64) alsa->actual_rate;
} }
return latency; return latency;
} }
@ -238,7 +250,7 @@ static void tsmf_alsa_flush(ITSMFAudioDevice* audio)
static void tsmf_alsa_free(ITSMFAudioDevice* audio) static void tsmf_alsa_free(ITSMFAudioDevice* audio)
{ {
TSMFALSAAudioDevice* alsa = (TSMFALSAAudioDevice*) audio; TSMFAlsaAudioDevice* alsa = (TSMFAlsaAudioDevice*) audio;
DEBUG_DVC(""); DEBUG_DVC("");
@ -247,6 +259,7 @@ static void tsmf_alsa_free(ITSMFAudioDevice* audio)
snd_pcm_drain(alsa->out_handle); snd_pcm_drain(alsa->out_handle);
snd_pcm_close(alsa->out_handle); snd_pcm_close(alsa->out_handle);
} }
freerdp_dsp_context_free(alsa->dsp_context); freerdp_dsp_context_free(alsa->dsp_context);
free(alsa); free(alsa);
} }
@ -257,10 +270,10 @@ static void tsmf_alsa_free(ITSMFAudioDevice* audio)
ITSMFAudioDevice* freerdp_tsmf_client_audio_subsystem_entry(void) ITSMFAudioDevice* freerdp_tsmf_client_audio_subsystem_entry(void)
{ {
TSMFALSAAudioDevice* alsa; TSMFAlsaAudioDevice* alsa;
alsa = (TSMFALSAAudioDevice*) malloc(sizeof(TSMFALSAAudioDevice)); alsa = (TSMFAlsaAudioDevice*) malloc(sizeof(TSMFAlsaAudioDevice));
ZeroMemory(alsa, sizeof(TSMFALSAAudioDevice)); ZeroMemory(alsa, sizeof(TSMFAlsaAudioDevice));
alsa->iface.Open = tsmf_alsa_open; alsa->iface.Open = tsmf_alsa_open;
alsa->iface.SetFormat = tsmf_alsa_set_format; alsa->iface.SetFormat = tsmf_alsa_set_format;

View File

@ -16,7 +16,8 @@
#import "freerdp/graphics.h" #import "freerdp/graphics.h"
#import "freerdp/utils/event.h" #import "freerdp/utils/event.h"
#import "freerdp/client/cliprdr.h" #import "freerdp/client/cliprdr.h"
#import "freerdp/utils/args.h" #import "freerdp/client/file.h"
#import "freerdp/client/cmdline.h"
#import "freerdp/rail/rail.h" #import "freerdp/rail/rail.h"
#import "freerdp/rail.h" #import "freerdp/rail.h"
#import "freerdp/utils/rail.h" #import "freerdp/utils/rail.h"

View File

@ -1016,6 +1016,7 @@ int rdp_connect()
BOOL mac_pre_connect(freerdp *inst) BOOL mac_pre_connect(freerdp *inst)
{ {
int status;
char *cptr; char *cptr;
int len; int len;
int i; int i;
@ -1213,12 +1214,28 @@ BOOL mac_pre_connect(freerdp *inst)
} }
} }
#endif #endif
freerdp_parse_args(inst->settings, g_mrdpview->argc, g_mrdpview->argv, process_plugin_args, inst->context->channels, NULL, NULL); if (freerdp_detect_old_command_line_syntax(inst->context->argc, inst->context->argv))
if ((strcmp(g_mrdpview->argv[1], "-h") == 0) || (strcmp(g_mrdpview->argv[1], "--help") == 0)) { {
[NSApp terminate:nil]; printf("warning: deprecated command-line syntax detected!\n");
return TRUE; freerdp_client_print_command_line_help(inst->context->argc, inst->context->argv);
}
[NSApp terminate:nil];
return TRUE;
}
inst->context->argc = g_mrdpview->argc;
inst->context->argv = g_mrdpview->argv;
status = freerdp_client_parse_command_line_arguments(inst->context->argc, inst->context->argv, inst->settings);
if (status < 0)
{
[NSApp terminate:nil];
return TRUE;
}
freerdp_client_load_addins(inst->context->channels, inst->settings);
[g_mrdpview setViewSize:inst->settings->DesktopWidth :inst->settings->DesktopHeight]; [g_mrdpview setViewSize:inst->settings->DesktopWidth :inst->settings->DesktopHeight];

View File

@ -883,6 +883,12 @@ int freerdp_client_load_addins(rdpChannels* channels, rdpSettings* settings)
int index; int index;
ADDIN_ARGV* args; ADDIN_ARGV* args;
if ((freerdp_static_channel_collection_find(settings, "rdpsnd")) ||
(freerdp_dynamic_channel_collection_find(settings, "tsmf")))
{
settings->AudioPlayback = TRUE; /* Both rdpsnd and tsmf require this flag to be set */
}
if (settings->DeviceRedirection) if (settings->DeviceRedirection)
{ {
freerdp_client_load_static_channel_addin(channels, settings, "rdpdr", settings); freerdp_client_load_static_channel_addin(channels, settings, "rdpdr", settings);

View File

@ -99,6 +99,8 @@ set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS
MODULE freerdp MODULE freerdp
MODULES freerdp-utils) MODULES freerdp-utils)
message(STATUS "libfreerdp-codec libs: ${${MODULE_PREFIX}_LIBS}")
if(MONOLITHIC_BUILD) if(MONOLITHIC_BUILD)
set(FREERDP_LIBS ${FREERDP_LIBS} ${${MODULE_PREFIX}_LIBS} PARENT_SCOPE) set(FREERDP_LIBS ${FREERDP_LIBS} ${${MODULE_PREFIX}_LIBS} PARENT_SCOPE)
else() else()

View File

@ -772,7 +772,7 @@ BOOL compress_rdp_5(struct rdp_mppc_enc* enc, BYTE* srcData, int len)
/* encode copy_offset and insert into output buffer */ /* encode copy_offset and insert into output buffer */
if ((copy_offset >= 0) && (copy_offset <= 63)) if (copy_offset <= 63) /* (copy_offset >= 0) is always true */
{ {
/* insert binary header */ /* insert binary header */
data = 0x1f; data = 0x1f;

View File

@ -113,7 +113,7 @@ set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} ${OPENSSL_LIBRARIES})
set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS
MONOLITHIC ${MONOLITHIC_BUILD} INTERNAL MONOLITHIC ${MONOLITHIC_BUILD} INTERNAL
MODULE freerdp MODULE freerdp
MODULES freerdp-core freerdp-crypto freerdp-codec freerdp-locale freerdp-utils) MODULES freerdp-crypto freerdp-codec freerdp-locale freerdp-utils)
set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS
MONOLITHIC ${MONOLITHIC_BUILD} MONOLITHIC ${MONOLITHIC_BUILD}

View File

@ -809,6 +809,12 @@ int rpc_in_write(rdpRpc* rpc, BYTE* data, int length)
{ {
int status; int status;
#ifdef WITH_DEBUG_TSG
rpc_pdu_header_print((rpcconn_hdr_t*) data);
printf("Sending PDU (length: %d)\n", length);
freerdp_hexdump(data, length);
#endif
status = tls_write_all(rpc->TlsIn, data, length); status = tls_write_all(rpc->TlsIn, data, length);
return status; return status;
@ -871,6 +877,8 @@ int rpc_recv_pdu(rdpRpc* rpc)
header = (rpcconn_hdr_t*) rpc->buffer; header = (rpcconn_hdr_t*) rpc->buffer;
bytesRead += status; bytesRead += status;
rpc_pdu_header_print(header);
if (header->common.frag_length > rpc->length) if (header->common.frag_length > rpc->length)
{ {
rpc->length = header->common.frag_length; rpc->length = header->common.frag_length;

View File

@ -59,7 +59,7 @@ set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS
set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS
MONOLITHIC ${MONOLITHIC_BUILD} MONOLITHIC ${MONOLITHIC_BUILD}
MODULE winpr MODULE winpr
MODULES winpr-crt) MODULES winpr-crt winpr-library)
if(MONOLITHIC_BUILD) if(MONOLITHIC_BUILD)
set(FREERDP_LIBS ${FREERDP_LIBS} ${${MODULE_PREFIX}_LIBS} PARENT_SCOPE) set(FREERDP_LIBS ${FREERDP_LIBS} ${${MODULE_PREFIX}_LIBS} PARENT_SCOPE)

View File

@ -183,7 +183,8 @@ void* freerdp_keyboard_xkb_init()
UINT32 freerdp_keyboard_init_xkbfile(UINT32 keyboardLayoutId, RDP_SCANCODE x11_keycode_to_rdp_scancode[256]) UINT32 freerdp_keyboard_init_xkbfile(UINT32 keyboardLayoutId, RDP_SCANCODE x11_keycode_to_rdp_scancode[256])
{ {
void* display; void* display;
memset(x11_keycode_to_rdp_scancode, 0, sizeof(x11_keycode_to_rdp_scancode));
ZeroMemory(x11_keycode_to_rdp_scancode, sizeof(RDP_SCANCODE) * 256);
display = freerdp_keyboard_xkb_init(); display = freerdp_keyboard_xkb_init();

View File

@ -65,15 +65,10 @@ if(${CMAKE_SYSTEM_NAME} MATCHES SunOS)
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} rt) set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} rt)
endif() endif()
set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS
MONOLITHIC ${MONOLITHIC_BUILD} INTERNAL
MODULE freerdp
MODULES freerdp-common)
set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS
MONOLITHIC ${MONOLITHIC_BUILD} MONOLITHIC ${MONOLITHIC_BUILD}
MODULE winpr MODULE winpr
MODULES winpr-crt winpr-synch) MODULES winpr-crt winpr-synch winpr-thread)
if(MONOLITHIC_BUILD) if(MONOLITHIC_BUILD)
set(FREERDP_LIBS ${FREERDP_LIBS} ${${MODULE_PREFIX}_LIBS} PARENT_SCOPE) set(FREERDP_LIBS ${FREERDP_LIBS} ${${MODULE_PREFIX}_LIBS} PARENT_SCOPE)

View File

@ -90,7 +90,7 @@ set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} ${X11_LIBRARIES})
set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS
MONOLITHIC ${MONOLITHIC_BUILD} MONOLITHIC ${MONOLITHIC_BUILD}
MODULE freerdp MODULE freerdp
MODULES freerdp-core freerdp-codec freerdp-utils freerdp-gdi freerdp-crypto freerdp-locale) MODULES freerdp-core freerdp-common freerdp-codec freerdp-utils freerdp-gdi freerdp-crypto freerdp-locale)
set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS
MONOLITHIC ${MONOLITHIC_BUILD} MONOLITHIC ${MONOLITHIC_BUILD}
@ -101,3 +101,4 @@ target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR}) install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR})
set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "Server/X11") set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "Server/X11")

View File

@ -300,7 +300,7 @@ HANDLE FindFirstFileA(LPCSTR lpFileName, LPWIN32_FIND_DATAA lpFindFileData)
struct stat fileStat; struct stat fileStat;
WIN32_FILE_SEARCH* pFileSearch; WIN32_FILE_SEARCH* pFileSearch;
ZeroMemory(lpFindFileData, sizeof(LPWIN32_FIND_DATAA)); ZeroMemory(lpFindFileData, sizeof(WIN32_FIND_DATAA));
pFileSearch = (WIN32_FILE_SEARCH*) malloc(sizeof(WIN32_FILE_SEARCH)); pFileSearch = (WIN32_FILE_SEARCH*) malloc(sizeof(WIN32_FILE_SEARCH));
ZeroMemory(pFileSearch, sizeof(WIN32_FILE_SEARCH)); ZeroMemory(pFileSearch, sizeof(WIN32_FILE_SEARCH));

View File

@ -582,7 +582,7 @@ RPC_STATUS UuidToStringA(UUID* Uuid, RPC_CSTR* StringUuid)
* xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx * xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
*/ */
sprintf_s((char*) *StringUuid, 36 + 1, "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", sprintf_s((char*) *StringUuid, 36 + 1, "%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
Uuid->Data1, Uuid->Data2, Uuid->Data3, Uuid->Data1, Uuid->Data2, Uuid->Data3,
Uuid->Data4[0], Uuid->Data4[1], Uuid->Data4[0], Uuid->Data4[1],
Uuid->Data4[2], Uuid->Data4[3], Uuid->Data4[4], Uuid->Data4[2], Uuid->Data4[3], Uuid->Data4[4],