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

@ -1039,6 +1039,9 @@ rfbProcessClientNormalMessage(cl)
default: default:
if(cl->screen->processCustomClientMessage(cl,msg.type))
return;
rfbLog("rfbProcessClientNormalMessage: unknown message type %d\n", rfbLog("rfbProcessClientNormalMessage: unknown message type %d\n",
msg.type); msg.type);
rfbLog(" ... closing connection\n"); 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 rfbBool (*rfbPasswordCheckProcPtr)(struct _rfbClientRec* cl,const char* encryptedPassWord,int len);
typedef enum rfbNewClientAction (*rfbNewClientHookPtr)(struct _rfbClientRec* cl); typedef enum rfbNewClientAction (*rfbNewClientHookPtr)(struct _rfbClientRec* cl);
typedef void (*rfbDisplayHookPtr)(struct _rfbClientRec* cl); typedef void (*rfbDisplayHookPtr)(struct _rfbClientRec* cl);
typedef rfbBool (*rfbProcessCustomClientMessageProcPtr)(struct _rfbClientRec* cl,uint8_t type);
typedef struct { typedef struct {
uint32_t count; uint32_t count;
@ -291,6 +292,10 @@ typedef struct _rfbScreenInfo
* an update should be sent. This should make working on a slow * an update should be sent. This should make working on a slow
* link more interactive. */ * link more interactive. */
int progressiveSliceHeight; 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; } rfbScreenInfo, *rfbScreenInfoPtr;

Loading…
Cancel
Save