DWORD freerdp_get_event_handles(rdpContext* context, HANDLE* events, DWORD count) { DWORD nCount = 0; nCount += transport_get_event_handles(context->rdp->transport, events, count); if (nCount == 0) return 0; if (events && (nCount < count + 2)) { events[nCount++] = freerdp_channels_get_event_handle(context->instance); events[nCount++] = getChannelErrorEventHandle(context); events[nCount++] = context->abortEvent; } else return 0; if (context->settings->AsyncInput) { if (nCount >= count) return 0; events[nCount++] = freerdp_get_message_queue_event_handle( context->instance, FREERDP_INPUT_MESSAGE_QUEUE); } return nCount; }
UINT32 freerdp_get_event_handles(rdpContext* context, HANDLE* events) { UINT32 nCount = 0; nCount += transport_get_event_handles(context->rdp->transport, events); if (events) events[nCount] = freerdp_channels_get_event_handle(context->instance); nCount++; return nCount; }
void transport_get_fds(rdpTransport* transport, void** rfds, int* rcount) { DWORD index; DWORD nCount; HANDLE events[64]; nCount = transport_get_event_handles(transport, events, 64); *rcount = nCount; for (index = 0; index < nCount; index++) { rfds[index] = GetEventWaitObject(events[index]); } }
DWORD freerdp_get_event_handles(rdpContext* context, HANDLE* events, DWORD count) { DWORD nCount = 0; nCount += transport_get_event_handles(context->rdp->transport, events, count); if (nCount == 0) return 0; if (events && (nCount < count)) events[nCount++] = freerdp_channels_get_event_handle(context->instance); else return 0; return nCount; }
static DWORD freerdp_peer_get_event_handles(freerdp_peer* client, HANDLE* events, DWORD count) { return transport_get_event_handles(client->context->rdp->transport, events, count); }