diff options
author | dscho <dscho> | 2001-12-09 21:40:46 +0000 |
---|---|---|
committer | dscho <dscho> | 2001-12-09 21:40:46 +0000 |
commit | f3306e9e83cd4ddb05328230630198e7c1824383 (patch) | |
tree | b716e06efeeb2e4b95b252404dbc605fd3457241 | |
parent | 8d8429b4f818a83f1de8121d1adb393ae3724f87 (diff) | |
download | libtdevnc-f3306e9e83cd4ddb05328230630198e7c1824383.tar.gz libtdevnc-f3306e9e83cd4ddb05328230630198e7c1824383.zip |
Makefile cleanup, some special options for OSX
-rw-r--r-- | Makefile | 8 | ||||
-rw-r--r-- | mac.c | 43 |
2 files changed, 42 insertions, 9 deletions
@@ -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 @@ -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(i<argc-1 && strcmp(argv[i],"-wait4client")==0) { + maxSecsToConnect = atoi(argv[i+1])/1000; + startTime = time(); + } else if(strcmp(argv[i],"-runforever")==0) { + disconnectAfterFirstClient = FALSE; + } + ScreenInit(argc,argv); + rfbScreen->newClientHook = newClient; + /* enter background event loop */ rfbRunEventLoop(rfbScreen,40,TRUE); |