Skip to content

Commit 3257de8

Browse files
author
Volodymyr Samokhatko
committed
libvncserver: post SetEncodings hook
1 parent eb83123 commit 3257de8

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

include/rfb/rfb.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ enum rfbProtocolExtensionHookType {
207207
RFB_PROTOCOL_EXTENSION_HOOK_CLOSE,
208208
RFB_PROTOCOL_EXTENSION_HOOK_USAGE,
209209
RFB_PROTOCOL_EXTENSION_HOOK_PROCESS_ARGUMENT,
210+
RFB_PROTOCOL_EXTENSION_HOOK_POST_SET_ENCODINGS,
210211
RFB_PROTOCOL_EXTENSION_HOOK_PRE_FBU,
211212
RFB_PROTOCOL_EXTENSION_HOOK_POST_FBU,
212213
};
@@ -250,6 +251,9 @@ _Static_assert(sizeof(rfbProtocolExtensionHookGeneric) == sizeof(rfbProtocolExte
250251
typedef int (*rfbProtocolExtensionHookProcessArgument)(int argc, char *argv[]);
251252
_Static_assert(sizeof(rfbProtocolExtensionHookGeneric) == sizeof(rfbProtocolExtensionHookProcessArgument), "extension hook size doesn't match");
252253

254+
typedef void (*rfbProtocolExtensionHookPostSetEncodings)(struct _rfbClientRec* client);
255+
_Static_assert(sizeof(rfbProtocolExtensionHookGeneric) == sizeof(rfbProtocolExtensionHookPostSetEncodings), "extension hook size doesn't match");
256+
253257
/** returns TRUE if proceed with the framebuffer update (PostFbu is called in any case). */
254258
typedef rfbBool (*rfbProtocolExtensionHookPreFbu)(struct _rfbClientRec* client, void* data);
255259
_Static_assert(sizeof(rfbProtocolExtensionHookGeneric) == sizeof(rfbProtocolExtensionHookPreFbu), "extension hook size doesn't match");
@@ -271,6 +275,7 @@ typedef struct _rfbProtocolExtensionElement {
271275
rfbProtocolExtensionHookUsage usage;
272276
rfbProtocolExtensionHookProcessArgument processArgument;
273277

278+
rfbProtocolExtensionHookPostSetEncodings postSetEncodings;
274279
rfbProtocolExtensionHookPreFbu preFbu;
275280
rfbProtocolExtensionHookPostFbu postFbu;
276281
} hook;

src/libvncserver/rfbserver.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2647,6 +2647,18 @@ rfbProcessClientNormalMessage(rfbClientPtr cl)
26472647
cl->enableCursorPosUpdates = FALSE;
26482648
}
26492649

2650+
rfbProtocolExtension2 *extension2 = rfbGetExtension2Iterator();
2651+
for (; extension2; extension2 = extension2->next) {
2652+
rfbProtocolExtensionElement* el = extension2->elements;
2653+
for (; el && el < extension2->elements + extension2->elementsCount; ++el) {
2654+
if (el->type == RFB_PROTOCOL_EXTENSION_HOOK_POST_SET_ENCODINGS) {
2655+
el->hook.postSetEncodings(cl);
2656+
break;
2657+
}
2658+
}
2659+
}
2660+
rfbReleaseExtension2Iterator();
2661+
26502662
return;
26512663
}
26522664

0 commit comments

Comments
 (0)