From 1fd42ce98cd082309f72467bee73a910c9662fc9 Mon Sep 17 00:00:00 2001 From: dscho Date: Fri, 8 Aug 2003 11:36:21 +0000 Subject: [PATCH] make --without-jpeg, --without-zlib work --- libvncclient/rfbproto.c | 26 +++++++++++++++++++++++++- libvncclient/tight.c | 4 ++++ libvncclient/zlib.c | 4 ++++ main.c | 4 ++++ rfbserver.c | 2 ++ 5 files changed, 39 insertions(+), 1 deletion(-) diff --git a/libvncclient/rfbproto.c b/libvncclient/rfbproto.c index 8bad811..7ea14ae 100644 --- a/libvncclient/rfbproto.c +++ b/libvncclient/rfbproto.c @@ -133,9 +133,11 @@ static rfbBool HandleCoRRE32(rfbClient* client, int rx, int ry, int rw, int rh); static rfbBool HandleHextile8(rfbClient* client, int rx, int ry, int rw, int rh); static rfbBool HandleHextile16(rfbClient* client, int rx, int ry, int rw, int rh); static rfbBool HandleHextile32(rfbClient* client, int rx, int ry, int rw, int rh); +#ifdef LIBVNCSERVER_HAVE_LIBZ static rfbBool HandleZlib8(rfbClient* client, int rx, int ry, int rw, int rh); static rfbBool HandleZlib16(rfbClient* client, int rx, int ry, int rw, int rh); static rfbBool HandleZlib32(rfbClient* client, int rx, int ry, int rw, int rh); +#ifdef LIBVNCSERVER_HAVE_LIBJPEG static rfbBool HandleTight8(rfbClient* client, int rx, int ry, int rw, int rh); static rfbBool HandleTight16(rfbClient* client, int rx, int ry, int rw, int rh); static rfbBool HandleTight32(rfbClient* client, int rx, int ry, int rw, int rh); @@ -148,6 +150,8 @@ static void JpegSkipInputData(j_decompress_ptr cinfo, long num_bytes); static void JpegTermSource(j_decompress_ptr cinfo); static void JpegSetSrcManager(j_decompress_ptr cinfo, uint8_t *compressedData, int compressedLen); +#endif +#endif /* The zlib encoding requires expansion/decompression/deflation of the compressed data in the "buffer" above into another, result buffer. @@ -155,13 +159,17 @@ static void JpegSetSrcManager(j_decompress_ptr cinfo, uint8_t *compressedData, based on the bitsPerPixel, height and width of the rectangle. We allocate this buffer one time to be the full size of the buffer. */ +#ifdef LIBVNCSERVER_HAVE_LIBZ static int raw_buffer_size = -1; static char *raw_buffer; static z_stream decompStream; static rfbBool decompStreamInited = FALSE; +#endif + +#ifdef LIBVNCSERVER_HAVE_LIBJPEG /* * Variables for the ``tight'' encoding implementation. */ @@ -186,7 +194,7 @@ static uint8_t tightPrevRow[2048*3*sizeof(uint16_t)]; /* JPEG decoder state. */ static rfbBool jpegError; - +#endif /* * ConnectToRFBServer. @@ -408,6 +416,7 @@ SetFormatAndEncodings(rfbClient* client) encs[se->nEncodings++] = rfbClientSwap32IfLE(rfbEncodingRaw); } else if (strncasecmp(encStr,"copyrect",encStrLen) == 0) { encs[se->nEncodings++] = rfbClientSwap32IfLE(rfbEncodingCopyRect); +#ifdef LIBVNCSERVER_HAVE_LIBJPEG } else if (strncasecmp(encStr,"tight",encStrLen) == 0) { encs[se->nEncodings++] = rfbClientSwap32IfLE(rfbEncodingTight); requestLastRectEncoding = TRUE; @@ -415,12 +424,15 @@ SetFormatAndEncodings(rfbClient* client) requestCompressLevel = TRUE; if (client->appData.enableJPEG) requestQualityLevel = TRUE; +#endif } else if (strncasecmp(encStr,"hextile",encStrLen) == 0) { encs[se->nEncodings++] = rfbClientSwap32IfLE(rfbEncodingHextile); +#ifdef LIBVNCSERVER_HAVE_LIBZ } else if (strncasecmp(encStr,"zlib",encStrLen) == 0) { encs[se->nEncodings++] = rfbClientSwap32IfLE(rfbEncodingZlib); if (client->appData.compressLevel >= 0 && client->appData.compressLevel <= 9) requestCompressLevel = TRUE; +#endif } else if (strncasecmp(encStr,"corre",encStrLen) == 0) { encs[se->nEncodings++] = rfbClientSwap32IfLE(rfbEncodingCoRRE); } else if (strncasecmp(encStr,"rre",encStrLen) == 0) { @@ -472,9 +484,13 @@ SetFormatAndEncodings(rfbClient* client) } encs[se->nEncodings++] = rfbClientSwap32IfLE(rfbEncodingCopyRect); +#ifdef LIBVNCSERVER_HAVE_LIBJPEG encs[se->nEncodings++] = rfbClientSwap32IfLE(rfbEncodingTight); +#endif encs[se->nEncodings++] = rfbClientSwap32IfLE(rfbEncodingHextile); +#ifdef LIBVNCSERVER_HAVE_LIBZ encs[se->nEncodings++] = rfbClientSwap32IfLE(rfbEncodingZlib); +#endif encs[se->nEncodings++] = rfbClientSwap32IfLE(rfbEncodingCoRRE); encs[se->nEncodings++] = rfbClientSwap32IfLE(rfbEncodingRRE); @@ -813,6 +829,7 @@ HandleRFBServerMessage(rfbClient* client) break; } +#ifdef LIBVNCSERVER_HAVE_LIBZ case rfbEncodingZlib: { switch (client->format.bitsPerPixel) { @@ -832,6 +849,7 @@ HandleRFBServerMessage(rfbClient* client) break; } +#ifdef LIBVNCSERVER_HAVE_LIBJPEG case rfbEncodingTight: { switch (client->format.bitsPerPixel) { @@ -850,6 +868,8 @@ HandleRFBServerMessage(rfbClient* client) } break; } +#endif +#endif default: rfbClientLog("Unknown rect encoding %d\n", @@ -989,6 +1009,8 @@ PrintPixelFormat(format) } } +#ifdef LIBVNCSERVER_HAVE_LIBJPEG + static long ReadCompactLen (rfbClient* client) { @@ -1072,6 +1094,8 @@ JpegSetSrcManager(j_decompress_ptr cinfo, uint8_t *compressedData, cinfo->src = &jpegSrcManager; } +#endif + /* avoid name clashes with LibVNCServer */ #define vncEncryptBytes rfbEncryptBytes diff --git a/libvncclient/tight.c b/libvncclient/tight.c index 77919f4..18d5639 100644 --- a/libvncclient/tight.c +++ b/libvncclient/tight.c @@ -17,6 +17,8 @@ * USA. */ +#ifdef LIBVNCSERVER_HAVE_LIBJPEG + /* * tight.c - handle ``tight'' encoding. * @@ -604,3 +606,5 @@ DecompressJpegRectBPP(rfbClient* client, int x, int y, int w, int h) #endif +#endif + diff --git a/libvncclient/zlib.c b/libvncclient/zlib.c index 23e30db..0479263 100644 --- a/libvncclient/zlib.c +++ b/libvncclient/zlib.c @@ -18,6 +18,8 @@ * USA. */ +#ifdef LIBVNCSERVER_HAVE_LIBZ + /* * zlib.c - handle zlib encoding. * @@ -156,3 +158,5 @@ HandleZlibBPP (rfbClient* client, int rx, int ry, int rw, int rh) } #undef CARDBPP + +#endif diff --git a/main.c b/main.c index a1ae93a..04309e8 100644 --- a/main.c +++ b/main.c @@ -719,7 +719,9 @@ void rfbNewFramebuffer(rfbScreenInfoPtr rfbScreen, char *framebuffer, rfbReleaseClientIterator(iterator); } +#ifdef LIBVNCSERVER_HAVE_LIBJPEG extern void TightCleanup(); +#endif void rfbScreenCleanup(rfbScreenInfoPtr rfbScreen) { @@ -740,7 +742,9 @@ void rfbScreenCleanup(rfbScreenInfoPtr rfbScreen) if(rfbScreen->cursor) rfbFreeCursor(rfbScreen->cursor); free(rfbScreen); +#ifdef LIBVNCSERVER_HAVE_LIBJPEG TightCleanup(); +#endif } void rfbInitServer(rfbScreenInfoPtr rfbScreen) diff --git a/rfbserver.c b/rfbserver.c index 2644ee7..d841c20 100644 --- a/rfbserver.c +++ b/rfbserver.c @@ -1215,8 +1215,10 @@ rfbSendFramebufferUpdate(cl, givenUpdateRegion) fu->type = rfbFramebufferUpdate; if (nUpdateRegionRects != 0xFFFF) { if(cl->screen->maxRectsPerUpdate>0 +#ifdef LIBVNCSERVER_HAVE_LIBJPEG /* Tight encoding counts the rectangles differently */ && cl->preferredEncoding != rfbEncodingTight +#endif && nUpdateRegionRects>cl->screen->maxRectsPerUpdate) { sraRegion* newUpdateRegion = sraRgnBBox(updateRegion); sraRgnDestroy(updateRegion);