49
49
#include <netinet/in.h>
52
#ifdef LIBVNCSERVER_HAVE_LIBPTHREAD
55
#define LOCK(mutex) (rfbLog("%s:%d LOCK(%s,0x%x)\n",__FILE__,__LINE__,#mutex,&(mutex)), pthread_mutex_lock(&(mutex)))
56
#define UNLOCK(mutex) (rfbLog("%s:%d UNLOCK(%s,0x%x)\n",__FILE__,__LINE__,#mutex,&(mutex)), pthread_mutex_unlock(&(mutex)))
57
#define MUTEX(mutex) pthread_mutex_t (mutex)
58
#define INIT_MUTEX(mutex) (rfbLog("%s:%d INIT_MUTEX(%s,0x%x)\n",__FILE__,__LINE__,#mutex,&(mutex)), pthread_mutex_init(&(mutex),NULL))
59
#define TINI_MUTEX(mutex) (rfbLog("%s:%d TINI_MUTEX(%s)\n",__FILE__,__LINE__,#mutex), pthread_mutex_destroy(&(mutex)))
60
#define TSIGNAL(cond) (rfbLog("%s:%d TSIGNAL(%s)\n",__FILE__,__LINE__,#cond), pthread_cond_signal(&(cond)))
61
#define WAIT(cond,mutex) (rfbLog("%s:%d WAIT(%s,%s)\n",__FILE__,__LINE__,#cond,#mutex), pthread_cond_wait(&(cond),&(mutex)))
62
#define COND(cond) pthread_cond_t (cond)
63
#define INIT_COND(cond) (rfbLog("%s:%d INIT_COND(%s)\n",__FILE__,__LINE__,#cond), pthread_cond_init(&(cond),NULL))
64
#define TINI_COND(cond) (rfbLog("%s:%d TINI_COND(%s)\n",__FILE__,__LINE__,#cond), pthread_cond_destroy(&(cond)))
65
#define IF_PTHREADS(x) x
67
#define LOCK(mutex) pthread_mutex_lock(&(mutex));
68
#define UNLOCK(mutex) pthread_mutex_unlock(&(mutex));
69
#define MUTEX(mutex) pthread_mutex_t (mutex)
70
#define INIT_MUTEX(mutex) pthread_mutex_init(&(mutex),NULL)
71
#define TINI_MUTEX(mutex) pthread_mutex_destroy(&(mutex))
72
#define TSIGNAL(cond) pthread_cond_signal(&(cond))
73
#define WAIT(cond,mutex) pthread_cond_wait(&(cond),&(mutex))
74
#define COND(cond) pthread_cond_t (cond)
75
#define INIT_COND(cond) pthread_cond_init(&(cond),NULL)
76
#define TINI_COND(cond) pthread_cond_destroy(&(cond))
77
#define IF_PTHREADS(x) x
80
52
#define LOCK(mutex)
81
53
#define UNLOCK(mutex)
83
#define INIT_MUTEX(mutex)
84
#define TINI_MUTEX(mutex)
86
#define WAIT(cond,mutex) this_is_unsupported
88
#define INIT_COND(cond)
89
#define TINI_COND(cond)
90
#define IF_PTHREADS(x)
93
55
/* end of stuff for autoconf */
95
/* if you use pthreads, but don't define LIBVNCSERVER_HAVE_LIBPTHREAD, the structs
96
get all mixed up. So this gives a linker error reminding you to compile
97
the library and your application (at least the parts including rfb.h)
98
with the same support for pthreads. */
100
#ifdef LIBVNCSERVER_HAVE_LIBPTHREAD
102
#define rfbInitServer rfbInitServerWithPthreadsAndZRLE
104
#define rfbInitServer rfbInitServerWithPthreadsButWithoutZRLE
108
#define rfbInitServer rfbInitServerWithoutPthreadsButWithZRLE
110
#define rfbInitServer rfbInitServerWithoutPthreadsAndZRLE
115
57
struct _rfbClientRec;
116
58
struct _rfbScreenInfo;
468
387
extern int rfbMaxClientWait;
470
389
extern void rfbInitSockets(rfbScreenInfoPtr rfbScreen);
390
extern void rfbSetAutoPort(rfbScreenInfoPtr rfbScreen, rfbBool autoPort);
391
extern void rfbSetPort(rfbScreenInfoPtr rfbScreen, int Port);
392
extern void rfbSetLocalOnly(rfbScreenInfoPtr rfbScreen, rfbBool localOnly);
471
393
extern void rfbCloseClient(rfbClientPtr cl);
472
394
extern int ReadExact(rfbClientPtr cl, char *buf, int len);
473
395
extern int ReadExactTimeout(rfbClientPtr cl, char *buf, int len,int timeout);
474
396
extern int WriteExact(rfbClientPtr cl, const char *buf, int len);
475
397
extern void rfbProcessNewConnection(rfbScreenInfoPtr rfbScreen);
476
398
extern void rfbCheckFds(rfbScreenInfoPtr rfbScreen,long usec);
477
extern int rfbConnect(rfbScreenInfoPtr rfbScreen, char* host, int port);
478
extern int ConnectToTcpAddr(char* host, int port);
479
extern int ListenOnTCPPort(int port);
399
extern int ListenOnTCPPort(int port, rfbBool localOnly);
481
401
/* rfbserver.c */
665
582
extern void rfbNewFramebuffer(rfbScreenInfoPtr rfbScreen,char *framebuffer,
666
583
int width,int height);
585
extern void rfbSetDesktopName(rfbScreenInfoPtr rfbScreen, const char *name);
668
587
extern void rfbScreenCleanup(rfbScreenInfoPtr screenInfo);
670
/* functions to accept/refuse a client that has been put on hold
671
by a NewClientHookPtr function. Must not be called in other
673
extern void rfbStartOnHoldClient(rfbClientPtr cl);
674
extern void rfbRefuseOnHoldClient(rfbClientPtr cl);
676
589
/* call one of these two functions to service the vnc clients.
677
590
usec are the microseconds the select on the fds waits.
678
591
if you are using the event loop, set this to some value > 0, so the