From f3306e9e83cd4ddb05328230630198e7c1824383 Mon Sep 17 00:00:00 2001 From: dscho Date: Sun, 9 Dec 2001 21:40:46 +0000 Subject: [PATCH] Makefile cleanup, some special options for OSX --- Makefile | 8 +++++--- mac.c | 43 +++++++++++++++++++++++++++++++++++++------ 2 files changed, 42 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index c3a9ae1..3ee328d 100644 --- a/Makefile +++ b/Makefile @@ -9,8 +9,8 @@ VNCSERVERLIB=-L. -lvncserver -L/usr/local/lib -lz -ljpeg # The code for 3 Bytes/Pixel is not very efficient! FLAG24 = -DALLOW24BPP -OPTFLAGS=-g # -Wall -#OPTFLAGS=-O2 -Wall +#OPTFLAGS=-g # -Wall +OPTFLAGS=-O2 -Wall CFLAGS=$(OPTFLAGS) $(PTHREADDEF) $(FLAG24) $(INCLUDES) RANLIB=ranlib @@ -59,7 +59,9 @@ OSXvnc-server: mac.o libvncserver.a x11vnc: x11vnc.o libvncserver.a $(CC) -o x11vnc x11vnc.o libvncserver.a -lz -ljpeg $(XLIBS) -# $(CC) -o x11vnc x11vnc.o libvncserver.a /usr/lib/libz.a /usr/lib/libjpeg.a $(XLIBS) + +x11vnc_static: x11vnc.o libvncserver.a + $(CC) -o x11vnc_static x11vnc.o libvncserver.a /usr/lib/libz.a /usr/lib/libjpeg.a $(XLIBS) #$(LIBS) $(XLIBS) storepasswd: storepasswd.o d3des.o vncauth.o diff --git a/mac.c b/mac.c index 0f1332b..c91bc61 100644 --- a/mac.c +++ b/mac.c @@ -37,6 +37,10 @@ rfbScreenInfoPtr rfbScreen; +/* some variables to enable special behaviour */ +int startTime = -1, maxSecsToConnect = 0; +Bool disconnectAfterFirstClient = True; + /* Where do I get the "official" list of Mac key codes? Ripped these out of a Mac II emulator called Basilisk II that I found on the net. */ @@ -283,18 +287,45 @@ ScreenInit(int argc, char**argv) static void refreshCallback(CGRectCount count, const CGRect *rectArray, void *ignore) { - int i; + int i; - for (i = 0; i < count; i++) - rfbMarkRectAsModified(rfbScreen, - rectArray[i].origin.x,rectArray[i].origin.y, - rectArray[i].origin.x + rectArray[i].size.width, - rectArray[i].origin.y + rectArray[i].size.height); + if(startTime>0 && time()>startTime+maxSecsToConnect) + exit(0); + + for (i = 0; i < count; i++) + rfbMarkRectAsModified(rfbScreen, + rectArray[i].origin.x,rectArray[i].origin.y, + rectArray[i].origin.x + rectArray[i].size.width, + rectArray[i].origin.y + rectArray[i].size.height); +} + +void clientGone(rfbClientPtr cl) +{ + exit(0); +} + +void newClient(rfbClientPtr cl) +{ + if(startTime>0 && time()>startTime+maxSecsToConnect) + exit(0); + + if(disconnectAfterFirstClient) + cl->clientGoneHook = clientGone; } int main(int argc,char *argv[]) { + for(i=argc-1;i>0;i--) + if(inewClientHook = newClient; + /* enter background event loop */ rfbRunEventLoop(rfbScreen,40,TRUE);