summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordscho <dscho>2003-08-08 11:36:21 +0000
committerdscho <dscho>2003-08-08 11:36:21 +0000
commit1fd42ce98cd082309f72467bee73a910c9662fc9 (patch)
treecfd4cc6d9037397a41f1e8579dd54d7c91d49a35
parentf9e179613f072e15cc7433bc96e38005c854b29f (diff)
downloadlibtdevnc-1fd42ce98cd082309f72467bee73a910c9662fc9.tar.gz
libtdevnc-1fd42ce98cd082309f72467bee73a910c9662fc9.zip
make --without-jpeg, --without-zlib work
-rw-r--r--libvncclient/rfbproto.c26
-rw-r--r--libvncclient/tight.c4
-rw-r--r--libvncclient/zlib.c4
-rw-r--r--main.c4
-rw-r--r--rfbserver.c2
5 files changed, 39 insertions, 1 deletions
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);