diff --git a/channels/tsmf/client/tsmf_media.c b/channels/tsmf/client/tsmf_media.c index 340f20bb2..ce3a5ce97 100644 --- a/channels/tsmf/client/tsmf_media.c +++ b/channels/tsmf/client/tsmf_media.c @@ -41,9 +41,9 @@ #include #include #include -#include #include +#include #include #include "tsmf_constants.h" @@ -341,7 +341,7 @@ static void tsmf_sample_playback_video(TSMF_SAMPLE* sample) (sample->end_time >= presentation->audio_start_time || sample->end_time < stream->last_end_time)) { - freerdp_usleep((stream->next_start_time - t) / 10); + USleep((stream->next_start_time - t) / 10); } stream->next_start_time = t + sample->duration - 50000; @@ -674,10 +674,11 @@ static void* tsmf_stream_playback_func(void* arg) { tsmf_stream_process_ack(stream); sample = tsmf_stream_pop_sample(stream, 1); + if (sample) tsmf_sample_playback(sample); else - freerdp_usleep(5000); + USleep(5000); } if (stream->eos || presentation->eos) { diff --git a/include/freerdp/utils/sleep.h b/include/freerdp/utils/sleep.h deleted file mode 100644 index b54e8975f..000000000 --- a/include/freerdp/utils/sleep.h +++ /dev/null @@ -1,29 +0,0 @@ -/** - * FreeRDP: A Remote Desktop Protocol Implementation - * Sleep Utils - * - * Copyright 2011 Marc-Andre Moreau - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef FREERDP_UTILS_SLEEP_H -#define FREERDP_UTILS_SLEEP_H - -#include -#include - -FREERDP_API void freerdp_sleep(UINT32 seconds); -FREERDP_API void freerdp_usleep(UINT32 useconds); - -#endif /* FREERDP_UTILS_SLEEP_H */ diff --git a/include/freerdp/utils/time.h b/include/freerdp/utils/time.h index 5e361de3e..7d47ecdef 100644 --- a/include/freerdp/utils/time.h +++ b/include/freerdp/utils/time.h @@ -33,6 +33,5 @@ FREERDP_API UINT64 freerdp_windows_gmtime(); FREERDP_API UINT64 freerdp_get_windows_time_from_unix_time(time_t unix_time); FREERDP_API time_t freerdp_get_unix_time_from_windows_time(UINT64 windows_time); -FREERDP_API time_t freerdp_get_unix_time_from_generalized_time(const char* generalized_time); #endif /* FREERDP_TIME_UTILS_H */ diff --git a/libfreerdp/core/gateway/ntlm.h b/libfreerdp/core/gateway/ntlm.h index ce1dfb7a5..1d2b2d38e 100644 --- a/libfreerdp/core/gateway/ntlm.h +++ b/libfreerdp/core/gateway/ntlm.h @@ -37,7 +37,6 @@ typedef struct rdp_ntlm_http rdpNtlmHttp; #include #include #include -#include #include #include #include diff --git a/libfreerdp/core/gateway/rpc.h b/libfreerdp/core/gateway/rpc.h index bcde49589..1bfee5584 100644 --- a/libfreerdp/core/gateway/rpc.h +++ b/libfreerdp/core/gateway/rpc.h @@ -76,7 +76,6 @@ typedef struct _RPC_PDU #include #include #include -#include #include #include #include diff --git a/libfreerdp/core/transport.c b/libfreerdp/core/transport.c index f031cc5e1..a1e3fae72 100644 --- a/libfreerdp/core/transport.c +++ b/libfreerdp/core/transport.c @@ -31,7 +31,6 @@ #include #include -#include #include #include @@ -320,7 +319,7 @@ int transport_read_layer(rdpTransport* transport, UINT8* data, int bytes) { /* instead of sleeping, we should wait timeout on the socket but this only happens on initial connection */ - freerdp_usleep(transport->usleep_interval); + USleep(transport->usleep_interval); } } @@ -421,7 +420,7 @@ int transport_read(rdpTransport* transport, STREAM* s) if ((status == 0) && (transport->blocking)) { - freerdp_usleep(transport->usleep_interval); + USleep(transport->usleep_interval); continue; } @@ -487,7 +486,7 @@ int transport_write(rdpTransport* transport, STREAM* s) if (status == 0) { /* blocking while sending */ - freerdp_usleep(transport->usleep_interval); + USleep(transport->usleep_interval); /* when sending is blocked in nonblocking mode, the receiving buffer should be checked */ if (!transport->blocking) diff --git a/libfreerdp/utils/CMakeLists.txt b/libfreerdp/utils/CMakeLists.txt index d050f2c7d..8c367e241 100644 --- a/libfreerdp/utils/CMakeLists.txt +++ b/libfreerdp/utils/CMakeLists.txt @@ -29,7 +29,6 @@ set(${MODULE_PREFIX}_SRCS profiler.c rail.c signal.c - sleep.c stopwatch.c stream.c string.c diff --git a/libfreerdp/utils/sleep.c b/libfreerdp/utils/sleep.c deleted file mode 100644 index 1a74eaad6..000000000 --- a/libfreerdp/utils/sleep.c +++ /dev/null @@ -1,62 +0,0 @@ -/** - * FreeRDP: A Remote Desktop Protocol Implementation - * Sleep Utils - * - * Copyright 2011 Marc-Andre Moreau - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include - -#include - -#include - -#ifndef _WIN32 -#define _XOPEN_SOURCE 500 -#include -#endif - -void freerdp_sleep(UINT32 seconds) -{ -#ifndef _WIN32 - sleep(seconds); -#else - Sleep(seconds * 1000); -#endif -} - -void freerdp_usleep(UINT32 useconds) -{ -#ifndef _WIN32 - usleep(useconds); -#else - UINT64 t1; - UINT64 t2; - UINT64 freq; - - QueryPerformanceCounter((LARGE_INTEGER*) &t1); - QueryPerformanceCounter((LARGE_INTEGER*) &freq); - - do - { - QueryPerformanceCounter((LARGE_INTEGER*) &t2); - } - while ((t2 - t1) < useconds); -#endif -} diff --git a/libfreerdp/utils/thread.c b/libfreerdp/utils/thread.c index 3f78e21c9..df3f1fafd 100644 --- a/libfreerdp/utils/thread.c +++ b/libfreerdp/utils/thread.c @@ -27,6 +27,7 @@ #include #include +#include #include #ifdef _WIN32 @@ -35,7 +36,6 @@ #endif #endif -#include #include freerdp_thread* freerdp_thread_new(void) @@ -79,7 +79,7 @@ void freerdp_thread_stop(freerdp_thread* thread) while ((thread->status > 0) && (i < 1000)) { i++; - freerdp_usleep(100000); + USleep(100000); } } diff --git a/libfreerdp/utils/time.c b/libfreerdp/utils/time.c index 6e7885b0e..27cbfebf3 100644 --- a/libfreerdp/utils/time.c +++ b/libfreerdp/utils/time.c @@ -53,34 +53,3 @@ time_t freerdp_get_unix_time_from_windows_time(UINT64 windows_time) unix_time = (windows_time - 621355968000000000ULL) / 10000000; return unix_time; } - -time_t freerdp_get_unix_time_from_generalized_time(const char* generalized_time) -{ - int Y, m, d; - int H, M, S; - struct tm gt; - time_t unix_time = 0; - - /* - * GeneralizedTime: - * - * 12th November 1997 at 15:30:10,5 PM - * - * "19971112153010.5Z" - * "19971112173010.5+0200" - */ - - memset(>, 0, sizeof(struct tm)); - sscanf(generalized_time, "%4d%2d%2d%2d%2d%2d", &Y, &m, &d, &H, &M, &S); - - gt.tm_year = Y - 1900; /* Year since 1900 */ - gt.tm_mon = m; /* Months since January */ - gt.tm_mday = d; /* Day of the month */ - gt.tm_hour = H; /* Hour since midnight */ - gt.tm_min = M; /* Minutes after the hour */ - gt.tm_sec = S; /* Seconds after the minute */ - - unix_time = mktime(>); - - return unix_time; -} diff --git a/server/Mac/mfreerdp.c b/server/Mac/mfreerdp.c index 76de5f206..2056570e6 100644 --- a/server/Mac/mfreerdp.c +++ b/server/Mac/mfreerdp.c @@ -32,7 +32,6 @@ #include #include -#include #include #include "mf_audin.h" diff --git a/server/Sample/sfreerdp.c b/server/Sample/sfreerdp.c index 877543a2f..680be7d87 100644 --- a/server/Sample/sfreerdp.c +++ b/server/Sample/sfreerdp.c @@ -34,7 +34,6 @@ #include #include -#include #include #include "sf_audin.h" @@ -351,10 +350,10 @@ static BOOL test_sleep_tsdiff(UINT32 *old_sec, UINT32 *old_usec, UINT32 new_sec, } if (sec > 0) - freerdp_sleep(sec); + Sleep(sec * 1000); if (usec > 0) - freerdp_usleep(usec); + USleep(usec); return TRUE; } diff --git a/server/Windows/wf_peer.c b/server/Windows/wf_peer.c index 1df150553..8b883c4f2 100644 --- a/server/Windows/wf_peer.c +++ b/server/Windows/wf_peer.c @@ -26,7 +26,6 @@ #include #include -#include #include #include @@ -342,4 +341,4 @@ DWORD WINAPI wf_peer_main_loop(LPVOID lpParam) printf("Exiting Peer Main Loop Thread\n"); return 0; -} \ No newline at end of file +} diff --git a/server/X11/xf_encode.c b/server/X11/xf_encode.c index 8445ae845..125813558 100644 --- a/server/X11/xf_encode.c +++ b/server/X11/xf_encode.c @@ -26,7 +26,8 @@ #include #include -#include +#include +#include #include "xf_encode.h" @@ -100,7 +101,7 @@ void* xf_frame_rate_thread(void* param) event = xf_event_new(XF_EVENT_TYPE_FRAME_TICK); xf_event_push(xfp->event_queue, (xfEvent*) event); - freerdp_usleep(wait_interval); + USleep(wait_interval); } } diff --git a/server/X11/xf_peer.c b/server/X11/xf_peer.c index bc7d06a40..9bc54d335 100644 --- a/server/X11/xf_peer.c +++ b/server/X11/xf_peer.c @@ -33,12 +33,12 @@ #include #include +#include #include #include #include #include -#include #include extern char* xf_pcap_file; @@ -364,10 +364,10 @@ static BOOL xf_peer_sleep_tsdiff(UINT32 *old_sec, UINT32 *old_usec, UINT32 new_s } if (sec > 0) - freerdp_sleep(sec); + Sleep(sec * 1000); if (usec > 0) - freerdp_usleep(usec); + USleep(usec); return TRUE; } diff --git a/winpr/include/winpr/synch.h b/winpr/include/winpr/synch.h index d98b05bab..06fd2fb32 100644 --- a/winpr/include/winpr/synch.h +++ b/winpr/include/winpr/synch.h @@ -176,6 +176,9 @@ WINPR_API BOOL DeleteSynchronizationBarrier(LPSYNCHRONIZATION_BARRIER lpBarrier) WINPR_API VOID Sleep(DWORD dwMilliseconds); WINPR_API DWORD SleepEx(DWORD dwMilliseconds, BOOL bAlertable); +/* Portable usleep() */ +WINPR_API VOID USleep(DWORD dwMicroseconds); + /* Address */ WINPR_API VOID WakeByAddressAll(PVOID Address); diff --git a/winpr/libwinpr/synch/sleep.c b/winpr/libwinpr/synch/sleep.c index 38fbd7fed..9eee1ef8d 100644 --- a/winpr/libwinpr/synch/sleep.c +++ b/winpr/libwinpr/synch/sleep.c @@ -21,23 +21,48 @@ #include "config.h" #endif -#include +#include -/** - * Sleep - * SleepEx - */ +#include #ifndef _WIN32 +#include + +#ifdef HAVE_UNISTD_H +#define _XOPEN_SOURCE 500 +#include +#endif + VOID Sleep(DWORD dwMilliseconds) { - + usleep(dwMilliseconds * 1000); } DWORD SleepEx(DWORD dwMilliseconds, BOOL bAlertable) { + usleep(dwMilliseconds * 1000); return TRUE; } #endif + +VOID USleep(DWORD dwMicroseconds) +{ +#ifndef _WIN32 + usleep(dwMicroseconds); +#else + UINT64 t1; + UINT64 t2; + UINT64 freq; + + QueryPerformanceCounter((LARGE_INTEGER*) &t1); + QueryPerformanceCounter((LARGE_INTEGER*) &freq); + + do + { + QueryPerformanceCounter((LARGE_INTEGER*) &t2); + } + while ((t2 - t1) < dwMicroseconds); +#endif +}