1a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#!/usr/bin/perl 2a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat# 3a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat# This script has been (or is hereby) released into the public domain by 4a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat# its author, Karl J. Runge <runge@karlrunge.com>. This applies worldwide. 5a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat# 6a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat# In case this is not legally possible: Karl J. Runge grants anyone the 7a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat# right to use this work for any purpose, without any conditions, unless 8a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat# such conditions are required by law. 9a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat 10a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehatwhile (<>) { 11a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat if (/^#include.*"rfb.h"/) { 12a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat print <<END; 13a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#include <rfb/rfb.h> 14a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define Bool rfbBool 15a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define CARD32 uint32_t 16a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define CARD16 uint16_t 17a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define CARD8 uint8_t 18a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define xalloc malloc 19a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define xrealloc realloc 20a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define rfbTightNoZlib 0x0A 21a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define tightSubsampLevel correMaxWidth 22a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat 23a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if LIBVNCSERVER_HAVE_LIBPTHREAD && LIBVNCSERVER_HAVE_TLS 24a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define TLS __thread 25a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else 26a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define TLS 27a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif 28a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat 29a430b2b5ca4f0967836f5820e8f03adc17fc0a24San MehatEND 30a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat next; 31a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat } 32a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat foreach $func (qw(FindBestSolidArea ExtendSolidArea CheckSolidTile CheckSolidTile##bpp CheckSolidTile8 CheckSolidTile16 CheckSolidTile32 Pack24)) { 33a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat if (/static.*\b\Q$func\E\b/ && !exists $did_static{$func}) { 34a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat $_ =~ s/\b\Q$func\E\b(\s*)\(/$func$1(rfbClientPtr cl, /; 35a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat $did_static{$func} = 1; 36a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat } elsif (/\b\Q$func\E\b\s*\(/) { 37a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat $_ =~ s/\b\Q$func\E\b(\s*)\(/$func$1(cl, /; 38a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat } 39a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat } 40a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat 41a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat# if (/^\s*subsampLevel\s*=\s*cl/) { 42a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat# $_ = "//$_"; 43a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat# print "subsampLevel = 0;\n"; 44a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat# } 45a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat 46a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat# $_ =~ s/cl->tightQualityLevel;/cl->tightQualityLevel * 10;/; 47a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat 48a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat if (/^static\s+(Bool|int|CARD32|PALETTE|char|unsigned|tjhandle)\s+[^()]*;\s*$/) { 49a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat $_ =~ s/^static/static TLS /; 50a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat } 51a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat 52a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat $_ =~ s/rfbScreen.pfbMemory/cl->scaledScreen->frameBuffer/g; 53a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat $_ =~ s/rfbScreen.paddedWidthInBytes/cl->scaledScreen->paddedWidthInBytes/g; 54a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat $_ =~ s/rfbScreen.bitsPerPixel/cl->scaledScreen->bitsPerPixel/g; 55a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat $_ =~ s/rfbServerFormat/cl->screen->serverFormat/g; 56a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat 57a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat if (/^(FindBestSolidArea|ExtendSolidArea|static void Pack24|CheckSolidTile)\(cl/) { 58a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat $_ .= "rfbClientPtr cl;\n"; 59a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat } 60a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat if (/^(CheckSolidTile##bpp)\(cl/) { 61a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat $_ .= "rfbClientPtr cl; \\\n"; 62a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat } 63a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat $_ =~ s/\bublen\b/cl->ublen/; 64a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat $_ =~ s/\bupdateBuf\b/cl->updateBuf/; 65a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat 66a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat if (/cl->(rfbRectanglesSent|rfbBytesSent)/) { 67a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat $_ = "//$_"; 68a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat } 69a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat print; 70a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat} 71a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat 72a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehatprint <<END; 73a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat 74a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehatvoid rfbTightCleanup(rfbScreenInfoPtr screen) { 75a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat} 76a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat 77a430b2b5ca4f0967836f5820e8f03adc17fc0a24San MehatEND 78a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat 79a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat 80