From 7b90c44708b6b3096419af747e4a4f3470d2d4db Mon Sep 17 00:00:00 2001 From: dscho Date: Thu, 17 Jan 2002 09:33:17 +0000 Subject: correct BackChannel handling, compile cleanups --- font.c | 5 +++-- rfb.h | 3 +++ rfbproto.h | 1 + rfbserver.c | 35 +++++++++++++++++++++++------------ vncauth.c | 2 +- 5 files changed, 31 insertions(+), 15 deletions(-) diff --git a/font.c b/font.c index f61f09e..4bebe44 100644 --- a/font.c +++ b/font.c @@ -4,8 +4,8 @@ int rfbDrawChar(rfbScreenInfoPtr rfbScreen,rfbFontDataPtr font, int x,int y,unsigned char c,Pixel col) { int i,j,width,height; - unsigned char d; unsigned char* data=font->data+font->metaData[c*5]; + unsigned char d=*data; int rowstride=rfbScreen->paddedWidthInBytes; int bpp=rfbScreen->rfbServerFormat.bitsPerPixel/8; char *colour=(char*)&col; @@ -49,8 +49,8 @@ int rfbDrawCharWithClip(rfbScreenInfoPtr rfbScreen,rfbFontDataPtr font, Pixel col,Pixel bcol) { int i,j,width,height; - unsigned char d; unsigned char* data=font->data+font->metaData[c*5]; + unsigned char d; int rowstride=rfbScreen->paddedWidthInBytes; int bpp=rfbScreen->rfbServerFormat.bitsPerPixel/8,extra_bytes=0; char* colour=(char*)&col; @@ -73,6 +73,7 @@ int rfbDrawCharWithClip(rfbScreenInfoPtr rfbScreen,rfbFontDataPtr font, if(y2enableLastRectEncoding = TRUE; } break; +#ifdef BACKCHANNEL + case rfbEncodingBackChannel: + if (!cl->enableBackChannel) { + rfbLog("Enabling BackChannel protocol extension for " + "client %s\n", cl->host); + cl->enableBackChannel = TRUE; + } + break; +#endif default: if ( enc >= (CARD32)rfbEncodingCompressLevel0 && enc <= (CARD32)rfbEncodingCompressLevel9 ) { @@ -1470,18 +1479,20 @@ void rfbSendBackChannel(rfbScreenInfoPtr rfbScreen,char* str,int len) iterator = rfbGetClientIterator(rfbScreen); while ((cl = rfbClientIteratorNext(iterator)) != NULL) { - sct.type = rfbBackChannel; - sct.length = Swap32IfLE(len); - if (WriteExact(cl, (char *)&sct, - sz_rfbServerCutTextMsg) < 0) { - rfbLogPerror("rfbSendServerCutText: write"); - rfbCloseClient(cl); - continue; - } - if (WriteExact(cl, str, len) < 0) { - rfbLogPerror("rfbSendServerCutText: write"); - rfbCloseClient(cl); - } + if (cl->enableBackChannel) { + sct.type = rfbBackChannel; + sct.length = Swap32IfLE(len); + if (WriteExact(cl, (char *)&sct, + sz_rfbBackChannelMsg) < 0) { + rfbLogPerror("rfbSendBackChannel: write"); + rfbCloseClient(cl); + continue; + } + if (WriteExact(cl, str, len) < 0) { + rfbLogPerror("rfbSendBackChannel: write"); + rfbCloseClient(cl); + } + } } rfbReleaseClientIterator(iterator); } diff --git a/vncauth.c b/vncauth.c index 1014291..ef27e35 100644 --- a/vncauth.c +++ b/vncauth.c @@ -26,8 +26,8 @@ #include #include #include -#ifdef WIN32 #include +#ifdef WIN32 #define srandom srand #define random rand #else -- cgit v1.2.1