From a3803aefd86c6f58ff61c00be3fc40b24c3a804b Mon Sep 17 00:00:00 2001 From: C-o-r-E Date: Wed, 14 Nov 2012 10:36:58 -0500 Subject: [PATCH] mfreerdp-server: started using grand central dispatch --- server/Mac/mfreerdp.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/server/Mac/mfreerdp.c b/server/Mac/mfreerdp.c index f90811d..57f587c 100644 --- a/server/Mac/mfreerdp.c +++ b/server/Mac/mfreerdp.c @@ -53,11 +53,15 @@ #include #include +#include //refactor these int info_last_sec = 0; int info_last_nsec = 0; +dispatch_source_t info_timer; +dispatch_queue_t info_queue; + mfEventQueue* info_event_queue; BOOL mf_peer_get_fds(freerdp_peer* client, void** rfds, int* rcount) @@ -121,6 +125,7 @@ void mf_peer_rfx_update(freerdp_peer* client) { //limit rate + /* clock_serv_t cclock; mach_timespec_t mts; host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock); @@ -133,7 +138,7 @@ void mf_peer_rfx_update(freerdp_peer* client) info_last_nsec = mts.tv_nsec; info_last_sec = mts.tv_sec; } - + */ //capture entire screen @@ -193,6 +198,21 @@ static void mf_peer_init(freerdp_peer* client) freerdp_peer_context_new(client); info_event_queue = mf_event_queue_new(); + + info_queue = dispatch_queue_create("testing.101", DISPATCH_QUEUE_SERIAL); + info_timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, info_queue); + + if(info_timer) + { + //printf("created timer\n"); + dispatch_source_set_timer(info_timer, DISPATCH_TIME_NOW, 1ull * NSEC_PER_SEC, 100ull * NSEC_PER_MSEC); + dispatch_source_set_event_handler(info_timer, ^{ + printf("dispatch\n"); + mfEvent* event = mf_event_new(MF_EVENT_TYPE_FRAME_TICK); + mf_event_push(info_event_queue, (mfEvent*) event);} + ); + dispatch_resume(info_timer); + } } BOOL mf_peer_post_connect(freerdp_peer* client) -- 2.7.4