From 62ae6bb7bef5a2f2a20cd2e39521e58e9874f189 Mon Sep 17 00:00:00 2001 From: Alexander Dorokhine Date: Fri, 30 Oct 2009 12:29:02 +0100 Subject: [PATCH] libvncclient: Add FinishedFrameBufferUpdate callback When working on a program which searches the display for some image, one does not want to search again without getting an FB update. Add a callback to make this possible. --- libvncclient/rfbproto.c | 3 +++ libvncclient/vncviewer.c | 1 + rfb/rfbclient.h | 2 ++ 3 files changed, 6 insertions(+) diff --git a/libvncclient/rfbproto.c b/libvncclient/rfbproto.c index 21e5088..3b5c9c2 100644 --- a/libvncclient/rfbproto.c +++ b/libvncclient/rfbproto.c @@ -1553,6 +1553,9 @@ HandleRFBServerMessage(rfbClient* client) if (!SendIncrementalFramebufferUpdateRequest(client)) return FALSE; + if (client->FinishedFrameBufferUpdate) + client->FinishedFrameBufferUpdate(client); + break; } diff --git a/libvncclient/vncviewer.c b/libvncclient/vncviewer.c index a5f2f89..7e678fb 100644 --- a/libvncclient/vncviewer.c +++ b/libvncclient/vncviewer.c @@ -173,6 +173,7 @@ rfbClient* rfbGetClient(int bitsPerSample,int samplesPerPixel, client->SoftCursorLockArea = DummyRect; client->SoftCursorUnlockScreen = Dummy; client->GotFrameBufferUpdate = DummyRect; + client->FinishedFrameBufferUpdate = NULL; client->GetPassword = ReadPassword; client->MallocFrameBuffer = MallocFrameBuffer; client->Bell = Dummy; diff --git a/rfb/rfbclient.h b/rfb/rfbclient.h index 07da7df..40c1775 100644 --- a/rfb/rfbclient.h +++ b/rfb/rfbclient.h @@ -107,6 +107,7 @@ typedef rfbBool (*HandleCursorPosProc)(struct _rfbClient* client, int x, int y); typedef void (*SoftCursorLockAreaProc)(struct _rfbClient* client, int x, int y, int w, int h); typedef void (*SoftCursorUnlockScreenProc)(struct _rfbClient* client); typedef void (*GotFrameBufferUpdateProc)(struct _rfbClient* client, int x, int y, int w, int h); +typedef void (*FinishedFrameBufferUpdateProc)(struct _rfbClient* client); typedef char* (*GetPasswordProc)(struct _rfbClient* client); typedef rfbBool (*MallocFrameBufferProc)(struct _rfbClient* client); typedef void (*GotXCutTextProc)(struct _rfbClient* client, const char *text, int textlen); @@ -228,6 +229,7 @@ typedef struct _rfbClient { SoftCursorLockAreaProc SoftCursorLockArea; SoftCursorUnlockScreenProc SoftCursorUnlockScreen; GotFrameBufferUpdateProc GotFrameBufferUpdate; + FinishedFrameBufferUpdateProc FinishedFrameBufferUpdate; /* the pointer returned by GetPassword will be freed after use! */ GetPasswordProc GetPassword; MallocFrameBufferProc MallocFrameBuffer;