summaryrefslogtreecommitdiffstats
path: root/mac.c
diff options
context:
space:
mode:
authordscho <dscho>2001-12-09 21:40:46 +0000
committerdscho <dscho>2001-12-09 21:40:46 +0000
commitf3306e9e83cd4ddb05328230630198e7c1824383 (patch)
treeb716e06efeeb2e4b95b252404dbc605fd3457241 /mac.c
parent8d8429b4f818a83f1de8121d1adb393ae3724f87 (diff)
downloadlibtdevnc-f3306e9e83cd4ddb05328230630198e7c1824383.tar.gz
libtdevnc-f3306e9e83cd4ddb05328230630198e7c1824383.zip
Makefile cleanup, some special options for OSX
Diffstat (limited to 'mac.c')
-rw-r--r--mac.c43
1 files changed, 37 insertions, 6 deletions
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(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);