diff options
Diffstat (limited to 'libvncserver/ultra.c')
-rw-r--r-- | libvncserver/ultra.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/libvncserver/ultra.c b/libvncserver/ultra.c index 1e51446..a802026 100644 --- a/libvncserver/ultra.c +++ b/libvncserver/ultra.c @@ -23,7 +23,7 @@ static char *lzoBeforeBuf = NULL; static int lzoAfterBufSize = 0; static char *lzoAfterBuf = NULL; -static int lzoAfterBufLen; +static int lzoAfterBufLen = 0; /* * rfbSendOneRectEncodingZlib - send a given rectangle using one Zlib @@ -32,6 +32,26 @@ static int lzoAfterBufLen; #define MAX_WRKMEM ((LZO1X_1_MEM_COMPRESS) + (sizeof(lzo_align_t) - 1)) / sizeof(lzo_align_t) +void rfbUltraCleanup(rfbScreenInfoPtr screen) +{ + if (lzoBeforeBufSize) { + free(lzoBeforeBuf); + lzoBeforeBufSize=0; + } + if (lzoAfterBufSize) { + free(lzoAfterBuf); + lzoAfterBufSize=0; + } +} + +void rfbFreeUltraData(rfbClientPtr cl) { + if (cl->compStreamInitedLZO) { + free(cl->lzoWrkMem); + cl->compStreamInitedLZO=FALSE; + } +} + + static rfbBool rfbSendOneRectEncodingUltra(rfbClientPtr cl, int x, @@ -125,6 +145,7 @@ rfbSendOneRectEncodingUltra(rfbClientPtr cl, memcpy(&cl->updateBuf[cl->ublen], (char *)&hdr, sz_rfbZlibHeader); cl->ublen += sz_rfbZlibHeader; + /* We might want to try sending the data directly... */ for (i = 0; i < lzoAfterBufLen;) { int bytesToCopy = UPDATE_BUF_SIZE - cl->ublen; |