Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
L
libvncserver
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
rasky
libvncserver
Commits
fad78817
Commit
fad78817
authored
Oct 10, 2001
by
dscho
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
pthreads corrections
parent
631d3be5
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
48 additions
and
35 deletions
+48
-35
Makefile
Makefile
+2
-2
cursor.c
cursor.c
+5
-1
main.c
main.c
+7
-5
rfb.h
rfb.h
+25
-20
rfbserver.c
rfbserver.c
+1
-0
sockets.c
sockets.c
+8
-7
No files found.
Makefile
View file @
fad78817
...
...
@@ -2,8 +2,8 @@ INCLUDES=-I.
VNCSERVERLIB
=
-L
.
-lvncserver
-L
/usr/local/lib
-lz
-ljpeg
# Uncomment these two lines to enable use of PThreads
#
PTHREADDEF = -DHAVE_PTHREADS
#
PTHREADLIB = -lpthread
PTHREADDEF
=
-DHAVE_PTHREADS
PTHREADLIB
=
-lpthread
# Comment the following line to disable the use of 3 Bytes/Pixel.
# The code for 3 Bytes/Pixel is not very efficient!
...
...
cursor.c
View file @
fad78817
...
...
@@ -452,7 +452,11 @@ void rfbPrintXCursor(rfbCursorPtr cursor)
extern
void
rfbSetCursor
(
rfbScreenInfoPtr
rfbScreen
,
rfbCursorPtr
c
,
Bool
freeOld
)
{
LOCK
(
rfbScreen
->
cursorMutex
);
rfbUndrawCursor
(
rfbScreen
);
while
(
rfbScreen
->
cursorIsDrawn
)
{
UNLOCK
(
rfbScreen
->
cursorMutex
);
rfbUndrawCursor
(
rfbScreen
);
LOCK
(
rfbScreen
->
cursorMutex
);
}
if
(
freeOld
&&
rfbScreen
->
cursor
)
rfbFreeCursor
(
rfbScreen
->
cursor
);
...
...
main.c
View file @
fad78817
...
...
@@ -85,17 +85,15 @@ void rfbScheduleCopyRegion(rfbScreenInfoPtr rfbScreen,sraRegionPtr copyRegion,in
/* while(!sraRgnEmpty(cl->copyRegion)) */
{
#ifdef HAVE_PTHREADS
if
(
cl
->
screen
->
backgroundLoop
)
{
SIGNAL
(
cl
->
updateCond
);
UNLOCK
(
cl
->
updateMutex
);
LOCK
(
cl
->
updateMutex
);
}
else
if
(
!
cl
->
screen
->
backgroundLoop
)
#endif
{
sraRegionPtr
updateRegion
=
sraRgnCreateRgn
(
cl
->
modifiedRegion
);
sraRgnOr
(
updateRegion
,
cl
->
copyRegion
);
UNLOCK
(
cl
->
updateMutex
);
rfbSendFramebufferUpdate
(
cl
,
updateRegion
);
sraRgnDestroy
(
updateRegion
);
continue
;
}
}
}
else
{
...
...
@@ -525,7 +523,11 @@ void rfbScreenCleanup(rfbScreenInfoPtr rfbScreen)
free
(
rfbScreen
);
}
#ifdef HAVE_PTHREADS
void
rfbInitServerWithPthreads
(
rfbScreenInfoPtr
rfbScreen
)
#else
void
rfbInitServer
(
rfbScreenInfoPtr
rfbScreen
)
#endif
{
#ifdef WIN32
WSADATA
trash
;
...
...
rfb.h
View file @
fad78817
...
...
@@ -172,7 +172,7 @@ typedef struct {
#undef MUTEX
#define MUTEX(mutex) char dummy##mutex
#undef COND
#define COND(con
t
) char dummy##cond
#define COND(con
d
) char dummy##cond
#endif
/*
...
...
@@ -280,11 +280,6 @@ typedef struct
char
*
underCursorBuffer
;
Bool
dontConvertRichCursorToXCursor
;
struct
rfbCursor
*
cursor
;
MUTEX
(
cursorMutex
);
#ifdef HAVE_PTHREADS
Bool
backgroundLoop
;
#endif
/* the following members have to be supplied by the serving process */
char
*
frameBuffer
;
...
...
@@ -300,6 +295,11 @@ typedef struct
/* displayHook is called just before a frame buffer update */
DisplayHookPtr
displayHook
;
MUTEX
(
cursorMutex
);
#ifdef HAVE_PTHREADS
Bool
backgroundLoop
;
#endif
}
rfbScreenInfo
,
*
rfbScreenInfoPtr
;
...
...
@@ -398,20 +398,6 @@ typedef struct rfbClientRec {
int
copyDX
,
copyDY
;
/* the translation by which the copy happens */
#ifdef HAVE_PTHREADS
/* whenever a client is referenced, the refCount has to be incremented
and afterwards decremented.
Use the functions rfbIncrClientRef(cl) and rfbDecrClientRef(cl);
*/
int
refCount
;
MUTEX
(
refCountMutex
);
COND
(
deleteCond
);
MUTEX
(
outputMutex
);
MUTEX
(
updateMutex
);
COND
(
updateCond
);
#endif
sraRegionPtr
modifiedRegion
;
/* As part of the FramebufferUpdateRequest, a client can express interest
...
...
@@ -488,6 +474,20 @@ typedef struct rfbClientRec {
struct
rfbClientRec
*
prev
;
struct
rfbClientRec
*
next
;
#ifdef HAVE_PTHREADS
/* whenever a client is referenced, the refCount has to be incremented
and afterwards decremented.
Use the functions rfbIncrClientRef(cl) and rfbDecrClientRef(cl);
*/
int
refCount
;
MUTEX
(
refCountMutex
);
COND
(
deleteCond
);
MUTEX
(
outputMutex
);
MUTEX
(
updateMutex
);
COND
(
updateCond
);
#endif
}
rfbClientRec
,
*
rfbClientPtr
;
...
...
@@ -742,6 +742,11 @@ void doNothingWithClient(rfbClientPtr cl);
extern
rfbScreenInfoPtr
rfbGetScreen
(
int
argc
,
char
**
argv
,
int
width
,
int
height
,
int
bitsPerSample
,
int
samplesPerPixel
,
int
bytesPerPixel
);
#ifdef HAVE_PTHREADS
#define rfbInitServer rfbInitServerWithPthreads
#else
#define rfbInitServer rfbInitServerWithoutPthreads
#endif
extern
void
rfbInitServer
(
rfbScreenInfoPtr
rfbScreen
);
extern
void
rfbScreenCleanup
(
rfbScreenInfoPtr
screenInfo
);
...
...
rfbserver.c
View file @
fad78817
...
...
@@ -137,6 +137,7 @@ rfbNewClientConnection(rfbScreen,sock)
if
(
cl
!=
NULL
)
newConnection
(
cl
,
(
KEYBOARD_DEVICE
|
POINTER_DEVICE
),
1
,
1
,
1
);
#endif
FD_SET
(
sock
,
&
(
rfbScreen
->
allFds
));
}
...
...
sockets.c
View file @
fad78817
...
...
@@ -111,16 +111,18 @@ rfbInitSockets(rfbScreenInfoPtr rfbScreen)
return
;
}
rfbLog
(
"Listening for VNC connections on TCP port %d
\n
"
,
rfbScreen
->
rfbPort
);
if
(
rfbScreen
->
rfbPort
>
0
)
{
rfbLog
(
"Listening for VNC connections on TCP port %d
\n
"
,
rfbScreen
->
rfbPort
);
if
((
rfbScreen
->
rfbListenSock
=
ListenOnTCPPort
(
rfbScreen
->
rfbPort
))
<
0
)
{
if
((
rfbScreen
->
rfbListenSock
=
ListenOnTCPPort
(
rfbScreen
->
rfbPort
))
<
0
)
{
rfbLogPerror
(
"ListenOnTCPPort"
);
exit
(
1
);
}
}
FD_ZERO
(
&
(
rfbScreen
->
allFds
));
FD_SET
(
rfbScreen
->
rfbListenSock
,
&
(
rfbScreen
->
allFds
));
rfbScreen
->
maxFd
=
rfbScreen
->
rfbListenSock
;
FD_ZERO
(
&
(
rfbScreen
->
allFds
));
FD_SET
(
rfbScreen
->
rfbListenSock
,
&
(
rfbScreen
->
allFds
));
rfbScreen
->
maxFd
=
rfbScreen
->
rfbListenSock
;
}
if
(
rfbScreen
->
udpPort
!=
0
)
{
rfbLog
(
"rfbInitSockets: listening for input on UDP port %d
\n
"
,
rfbScreen
->
udpPort
);
...
...
@@ -159,7 +161,6 @@ rfbCheckFds(rfbScreenInfoPtr rfbScreen,long usec)
if
(
!
rfbScreen
->
inetdInitDone
&&
rfbScreen
->
inetdSock
!=
-
1
)
{
rfbNewClientConnection
(
rfbScreen
,
rfbScreen
->
inetdSock
);
rfbScreen
->
inetdInitDone
=
TRUE
;
FD_SET
(
rfbScreen
->
inetdSock
,
&
(
rfbScreen
->
allFds
));
}
memcpy
((
char
*
)
&
fds
,
(
char
*
)
&
(
rfbScreen
->
allFds
),
sizeof
(
fd_set
));
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment