static void* cliprdr_virtual_channel_client_thread(void* arg) { wStream* data; wMessage message; cliprdrPlugin* cliprdr = (cliprdrPlugin*) arg; while (1) { if (!MessageQueue_Wait(cliprdr->MsgPipe->In)) break; if (MessageQueue_Peek(cliprdr->MsgPipe->In, &message, TRUE)) { if (message.id == WMQ_QUIT) break; if (message.id == 0) { data = (wStream*) message.wParam; cliprdr_order_recv(cliprdr, data); } } } ExitThread(0); return NULL; }
static void* cliprdr_virtual_channel_client_thread(void* arg) { wStream* data; wMessage message; cliprdrPlugin* cliprdr = (cliprdrPlugin*) arg; UINT error = CHANNEL_RC_OK; while (1) { if (!MessageQueue_Wait(cliprdr->queue)) { WLog_ERR(TAG, "MessageQueue_Wait failed!"); error = ERROR_INTERNAL_ERROR; break; } if (!MessageQueue_Peek(cliprdr->queue, &message, TRUE)) { WLog_ERR(TAG, "MessageQueue_Peek failed!"); error = ERROR_INTERNAL_ERROR; break; } if (message.id == WMQ_QUIT) break; if (message.id == 0) { data = (wStream*) message.wParam; if ((error = cliprdr_order_recv(cliprdr, data))) { WLog_ERR(TAG, "cliprdr_order_recv failed with error %lu!", error); break; } } } if (error && cliprdr->context->rdpcontext) setChannelError(cliprdr->context->rdpcontext, error, "cliprdr_virtual_channel_client_thread reported an error"); ExitThread((DWORD)error); return NULL; }