add hook to allow for custom client messages

pull/1/head
dscho 20 years ago
parent 4b89306d17
commit e78a41c69c

@ -498,6 +498,11 @@ enum rfbNewClientAction rfbDefaultNewClientHook(rfbClientPtr cl)
return RFB_CLIENT_ACCEPT;
}
rfbBool rfbDefaultProcessCustomClientMessage(rfbClientPtr cl,uint8_t type)
{
return FALSE;
}
/*
* Update server's pixel format in screenInfo structure. This
* function is called from rfbGetScreen() and rfbNewFramebuffer().
@ -641,6 +646,7 @@ rfbScreenInfoPtr rfbGetScreen(int* argc,char** argv,
screen->setTranslateFunction = rfbSetTranslateFunction;
screen->newClientHook = rfbDefaultNewClientHook;
screen->displayHook = 0;
screen->processCustomClientMessage = rfbDefaultProcessCustomClientMessage;
/* initialize client list and iterator mutex */
rfbClientListInit(screen);

@ -1039,6 +1039,9 @@ rfbProcessClientNormalMessage(cl)
default:
if(cl->screen->processCustomClientMessage(cl,msg.type))
return;
rfbLog("rfbProcessClientNormalMessage: unknown message type %d\n",
msg.type);
rfbLog(" ... closing connection\n");

@ -125,6 +125,7 @@ typedef rfbBool (*rfbSetTranslateFunctionProcPtr)(struct _rfbClientRec* cl);
typedef rfbBool (*rfbPasswordCheckProcPtr)(struct _rfbClientRec* cl,const char* encryptedPassWord,int len);
typedef enum rfbNewClientAction (*rfbNewClientHookPtr)(struct _rfbClientRec* cl);
typedef void (*rfbDisplayHookPtr)(struct _rfbClientRec* cl);
typedef rfbBool (*rfbProcessCustomClientMessageProcPtr)(struct _rfbClientRec* cl,uint8_t type);
typedef struct {
uint32_t count;
@ -291,6 +292,10 @@ typedef struct _rfbScreenInfo
* an update should be sent. This should make working on a slow
* link more interactive. */
int progressiveSliceHeight;
/* if LibVNCServer doesn't know the normal message, it calls this
* hook. If the hook handles the message, it returns TRUE. */
rfbProcessCustomClientMessageProcPtr processCustomClientMessage;
} rfbScreenInfo, *rfbScreenInfoPtr;

Loading…
Cancel
Save