From 0c87a5dd6540d0fefe7e105f2b5e155d2db8c14d Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Tue, 27 Jan 2026 15:59:06 +0100 Subject: [PATCH] [channels,rdpei] add RDPINPUT_CONTACT_FLAG_UP When iterating over the list of contacts add a RDPINPUT_CONTACT_FLAG_UP contact to the list of events to send. --- channels/rdpei/client/rdpei_main.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/channels/rdpei/client/rdpei_main.c b/channels/rdpei/client/rdpei_main.c index 1df852f09..5479d29a5 100644 --- a/channels/rdpei/client/rdpei_main.c +++ b/channels/rdpei/client/rdpei_main.c @@ -1014,6 +1014,7 @@ UINT rdpei_send_frame(RdpeiClientContext* context, RDPINPUT_TOUCH_FRAME* frame) */ static UINT rdpei_add_contact(RdpeiClientContext* context, const RDPINPUT_CONTACT_DATA* contact) { + UINT error = CHANNEL_RC_OK; if (!context || !contact || !context->handle) return ERROR_INTERNAL_ERROR; @@ -1023,14 +1024,23 @@ static UINT rdpei_add_contact(RdpeiClientContext* context, const RDPINPUT_CONTAC RDPINPUT_CONTACT_POINT* contactPoint = &rdpei->contactPoints[contact->contactId]; if (contactPoint->dirty && contactPoint->data.contactFlags != contact->contactFlags) - rdpei_add_frame(context); + { + const INT32 externalId = contactPoint->externalId; + error = rdpei_add_frame(context); + if (!contactPoint->active) + { + contactPoint->active = TRUE; + contactPoint->externalId = externalId; + contactPoint->contactId = contact->contactId; + } + } contactPoint->data = *contact; contactPoint->dirty = TRUE; (void)SetEvent(rdpei->event); LeaveCriticalSection(&rdpei->lock); - return CHANNEL_RC_OK; + return error; } static UINT rdpei_touch_process(RdpeiClientContext* context, INT32 externalId, UINT32 contactFlags,