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 /mac.c | |
parent | 8d8429b4f818a83f1de8121d1adb393ae3724f87 (diff) | |
download | libtdevnc-f3306e9e83cd4ddb05328230630198e7c1824383.tar.gz libtdevnc-f3306e9e83cd4ddb05328230630198e7c1824383.zip |
Makefile cleanup, some special options for OSX
Diffstat (limited to 'mac.c')
-rw-r--r-- | mac.c | 43 |
1 files changed, 37 insertions, 6 deletions
@@ -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); |