Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
nx-libs
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
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
dimbor
nx-libs
Commits
19ba0747
Commit
19ba0747
authored
Oct 23, 2019
by
Ulrich Sibiller
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Handlers.c: reformat comments
parent
9b1e2993
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
76 additions
and
111 deletions
+76
-111
Handlers.c
nx-X11/programs/Xserver/hw/nxagent/Handlers.c
+76
-111
No files found.
nx-X11/programs/Xserver/hw/nxagent/Handlers.c
View file @
19ba0747
...
...
@@ -57,47 +57,42 @@
#undef DUMP
/*
* Log begin and end of the important
* handlers.
* Log begin and end of the important handlers.
*/
#undef BLOCKS
/*
* If not defined, flush immediately
* upon entering the block handler.
* If not defined, flush immediately upon entering the block handler.
*/
#define FLUSH_AFTER_MULTIPLE_READS
/*
* The soft limit should roughly match
*
the size of the Xlib I/O
buffer.
* The soft limit should roughly match
the size of the Xlib I/O
* buffer.
*/
#define BYTES_BEFORE_SOFT_TOKEN 2048
#define BYTES_BEFORE_HARD_TOKEN 65536
/*
* Maximum number of synchronization
* requests before waiting for the
* Maximum number of synchronization requests before waiting for the
* remote.
*/
#define TOKENS_PENDING_LIMIT 8
/*
* Limits are very unobtrusive. We don't
* want to interfere with the normal
* dispatching.
* Limits are very unobtrusive. We don't want to interfere with the
* normal dispatching.
*/
#define BYTES_BEFORE_YIELD 1048576
#define TIME_BEFORE_YIELD 500
/*
* Dynamically reduce the display buffer
* size after a congestion.
* Dynamically reduce the display buffer size after a congestion.
*/
#undef DYNAMIC_DISPLAY_BUFFER
...
...
@@ -116,16 +111,14 @@ extern void nxagentDumpInputDevicesState(void);
#endif
/*
* Used in the handling of the X desktop
* manager protocol.
* Used in the handling of the X desktop manager protocol.
*/
int
nxagentXdmcpUp
=
0
;
int
nxagentXdmcpAlertUp
=
0
;
/*
* Also used in the block, wakeup and
* sync handlers.
* Also used in the block, wakeup and sync handlers.
*/
int
nxagentBuffer
;
...
...
@@ -136,30 +129,28 @@ double nxagentBytesIn;
double
nxagentBytesOut
;
/*
* Total number of descriptors ready
*
as reported by the wakeup
handler.
* Total number of descriptors ready
as reported by the wakeup
* handler.
*/
int
nxagentReady
;
/*
* Timestamp of the last write to the
* remote display.
* Timestamp of the last write to the remote display.
*/
int
nxagentFlush
;
/*
* Arbitrate the bandwidth among our
* clients.
* Arbitrate the bandwidth among our clients.
*/
struct
_TokensRec
nxagentTokens
=
{
0
,
0
,
0
};
struct
_DispatchRec
nxagentDispatch
=
{
UNDEFINED
,
0
,
0
,
0
};
/*
* Called just before blocking, waiting
*
for our clients or the X
server.
* Called just before blocking, waiting
for our clients or the X
* server.
*/
extern
int
nxagentSkipImage
;
...
...
@@ -179,15 +170,13 @@ void nxagentBlockHandler(void * data, struct timeval **timeout, void * mask)
static
int
now
;
/*
* Pending bytes to write to the
* network.
* Pending bytes to write to the network.
*/
static
int
flushable
;
/*
* Set if we need to synchronize
* any drawable.
* Set if we need to synchronize any drawable.
*/
static
int
synchronize
;
...
...
@@ -242,8 +231,8 @@ void nxagentBlockHandler(void * data, struct timeval **timeout, void * mask)
#endif
/*
* Slow down the agent if the session is
*
not connected to a valid
display.
* Slow down the agent if the session is
not connected to a valid
* display.
*/
if
(
NXDisplayError
(
nxagentDisplay
)
==
1
&&
nxagentShadowCounter
==
0
&&
nxagentOption
(
SleepTime
)
>
0
)
...
...
@@ -263,8 +252,7 @@ void nxagentBlockHandler(void * data, struct timeval **timeout, void * mask)
#endif
/*
* Update the shadow display. This is
* only for test purposes.
* Update the shadow display. This is only for test purposes.
*/
#ifdef DUMP
...
...
@@ -276,17 +264,14 @@ void nxagentBlockHandler(void * data, struct timeval **timeout, void * mask)
#endif
/*
* We need this here because some window
* configuration changes can be generated
* by the X server outside the control of
* the DIX.
* We need this here because some window configuration changes can
* be generated by the X server outside the control of the DIX.
*/
nxagentFlushConfigureWindow
();
/*
* Check whether there is any drawable to
* synchronize.
* Check whether there is any drawable to synchronize.
*/
#ifdef TEST
...
...
@@ -300,8 +285,7 @@ void nxagentBlockHandler(void * data, struct timeval **timeout, void * mask)
nxagentCorruptedPixmaps
>
0
);
/*
* The synchronization function requires a mask as
* parameter:
* The synchronization function requires a mask as parameter:
*
* EVENT_BREAK Breaks if an user input, like
* a key press or a mouse move,
...
...
@@ -324,9 +308,8 @@ void nxagentBlockHandler(void * data, struct timeval **timeout, void * mask)
if
(
synchronize
==
1
)
{
/*
* We should not enter the synchronization
* loop if there is any user input pending,
* i.e. if we are in the middle of a scroll
* We should not enter the synchronization loop if there is any
* user input pending, i.e. if we are in the middle of a scroll
* operation.
*/
...
...
@@ -361,9 +344,8 @@ void nxagentBlockHandler(void * data, struct timeval **timeout, void * mask)
#endif
/*
* Check if we have more corrupted resources
* and whether the conditions are satisfied
* to continue with the synchronization.
* Check if we have more corrupted resources and whether the
* conditions are satisfied to continue with the synchronization.
*/
synchronize
=
(
nxagentCongestion
<=
4
&&
...
...
@@ -405,9 +387,9 @@ void nxagentBlockHandler(void * data, struct timeval **timeout, void * mask)
}
/*
* If the remote X server is blocking, reduce the
*
amount of data sent in a single display updat
e
*
by reducing the size of the
display buffer.
* If the remote X server is blocking, reduce the
amount of data
*
sent in a single display update by reducing the size of th
e
* display buffer.
*/
#ifdef DYNAMIC_DISPLAY_BUFFER
...
...
@@ -445,8 +427,8 @@ void nxagentBlockHandler(void * data, struct timeval **timeout, void * mask)
#endif
/* #ifdef DYNAMIC_DISPLAY_BUFFER */
/*
* Dispatch to the clients the events that
*
may have become
available.
* Dispatch to the clients the events that
may have become
* available.
*/
if
(
nxagentPendingEvents
(
nxagentDisplay
)
>
0
)
...
...
@@ -459,9 +441,8 @@ void nxagentBlockHandler(void * data, struct timeval **timeout, void * mask)
}
/*
* Check if there is any data remaining,
* either in the display buffer or in
* the NX transport.
* Check if there is any data remaining, either in the display
* buffer or in the NX transport.
*/
flushable
=
NXDisplayFlushable
(
nxagentDisplay
);
...
...
@@ -471,9 +452,8 @@ void nxagentBlockHandler(void * data, struct timeval **timeout, void * mask)
#ifdef FLUSH_AFTER_MULTIPLE_READS
/*
* Flush all the outstanding data if
* the wakeup handler didn't detect
* any activity.
* Flush all the outstanding data if the wakeup handler didn't
* detect any activity.
*/
if
(
nxagentReady
==
0
||
now
-
nxagentFlush
>=
...
...
@@ -487,8 +467,7 @@ void nxagentBlockHandler(void * data, struct timeval **timeout, void * mask)
NXFlushDisplay
(
nxagentDisplay
,
NXFlushLink
);
/*
* New events may have become available
* after the flush.
* New events may have become available after the flush.
*/
if
(
nxagentPendingEvents
(
nxagentDisplay
)
>
0
)
...
...
@@ -516,9 +495,8 @@ void nxagentBlockHandler(void * data, struct timeval **timeout, void * mask)
#else
/* #ifdef FLUSH_AFTER_MULTIPLE_READS */
/*
* We are entering the select. Tell the NX
* transport to write any produced data to
* the remote end.
* We are entering the select. Tell the NX transport to write any
* produced data to the remote end.
*/
NXFlushDisplay
(
nxagentDisplay
,
NXFlushLink
);
...
...
@@ -556,12 +534,11 @@ void nxagentBlockHandler(void * data, struct timeval **timeout, void * mask)
}
/*
* WaitForSomething() sets a zero timeout if there
* are clients with input, but doesn't stop the
* timer. The select is then interrupted to update
* the schedule time even if, what the dispatcher
* cares, is only the number of ticks at the time
* the client is scheduled in.
* WaitForSomething() sets a zero timeout if there are clients with
* input, but doesn't stop the timer. The select is then interrupted
* to update the schedule time even if, what the dispatcher cares,
* is only the number of ticks at the time the client is scheduled
* in.
*/
#ifdef DEBUG
...
...
@@ -641,8 +618,7 @@ void nxagentWakeupHandler(void * data, int count, void * mask)
else
if
(
nxagentQueuedEvents
(
nxagentDisplay
)
==
1
)
{
/*
* We may have left some events in
* the queue.
* We may have left some events in the queue.
*/
#ifdef TEST
...
...
@@ -674,9 +650,8 @@ void nxagentWakeupHandler(void * data, int count, void * mask)
#endif
/*
* If the XDM connection can't be established
* we'll need to create a dialog to notify the
* user and give him/her a chance to terminate
* If the XDM connection can't be established we'll need to create a
* dialog to notify the user and give him/her a chance to terminate
* the session.
*/
...
...
@@ -813,14 +788,12 @@ void nxagentShadowBlockHandler(void * data, struct timeval **timeout, void * mas
}
/*
* We are entering the select. Tell the NX
* transport to write any produced data to
* the remote end.
* We are entering the select. Tell the NX transport to write any
* produced data to the remote end.
*/
/*
FIXME: Must queue multiple writes and handle
the events by resembling the ordinary
block handler.
FIXME: Must queue multiple writes and handle the events by resembling
the ordinary block handler.
*/
NXFlushDisplay
(
nxagentDisplay
,
NXFlushLink
);
...
...
@@ -929,8 +902,7 @@ void nxagentShadowWakeupHandler(void * data, int count, void * mask)
else
if
(
nxagentQueuedEvents
(
nxagentDisplay
)
==
1
)
{
/*
* We may have left some events in
* the queue.
* We may have left some events in the queue.
*/
#ifdef TEST
...
...
@@ -1022,13 +994,11 @@ Bool nxagentCollectInputFocusPredicate(Display *display, XEvent *X, XPointer ptr
void
nxagentDispatchHandler
(
ClientPtr
client
,
int
in
,
int
out
)
{
/*
* This function is called by the dispatcher (with 0
* bytes out) after a new request has been processed.
* It is also called by the write handler (with 0
* bytes in) after more data has been written to the
* display. It may be optionally called in the block
* and wakeup handlers. In this case both in and out
* must be 0.
* This function is called by the dispatcher (with 0 bytes out)
* after a new request has been processed. It is also called by the
* write handler (with 0 bytes in) after more data has been written
* to the display. It may be optionally called in the block and
* wakeup handlers. In this case both in and out must be 0.
*/
if
(
out
>
0
)
...
...
@@ -1050,14 +1020,12 @@ void nxagentDispatchHandler(ClientPtr client, int in, int out)
#endif
/*
* Don't take care of the synchronization if
* the NX transport is running. The NX trans-
* port has its own token-based control flow.
* Don't take care of the synchronization if the NX transport is
* running. The NX transport has its own token-based control flow.
*
* We can't produce more output here because
* we are in the middle of the flush. We will
* take care of the sync requests when called
* by the dispatcher.
* We can't produce more output here because we are in the middle
* of the flush. We will take care of the sync requests when
* called by the dispatcher.
*/
if
(
nxagentOption
(
LinkType
)
==
LINK_TYPE_NONE
)
...
...
@@ -1079,8 +1047,8 @@ void nxagentDispatchHandler(ClientPtr client, int in, int out)
{
/*
* Pay attention to the next client if this
*
client produced
enough output.
* Pay attention to the next client if this
client produced
* enough output.
*/
if
(
nxagentBytesOut
-
nxagentDispatch
.
out
>
BYTES_BEFORE_YIELD
)
...
...
@@ -1142,12 +1110,11 @@ void nxagentDispatchHandler(ClientPtr client, int in, int out)
#endif
/*
* When using the dumb scheduler, before reading from
* another client, the dispatcher tries to drain all
* the input from the client being processed. This
* means that, if isItTimeToYield is never set and the
* client never produces any output, we'll stick into
* the inner dispatch loop forever.
* When using the dumb scheduler, before reading from another
* client, the dispatcher tries to drain all the input from the
* client being processed. This means that, if isItTimeToYield is
* never set and the client never produces any output, we'll stick
* into the inner dispatch loop forever.
*/
if
(
!
SmartScheduleSignalEnable
)
...
...
@@ -1228,10 +1195,9 @@ void nxagentDispatchHandler(ClientPtr client, int in, int out)
else
if
(
nxagentTokens
.
soft
>
BYTES_BEFORE_SOFT_TOKEN
)
{
/*
* Alternatively, the amounts of bytes
* accounted for each sync request may
* be decreased according to the number
* of pending replies already awaited.
* Alternatively, the amounts of bytes accounted for each sync
* request may be decreased according to the number of pending
* replies already awaited.
*
* else if (nxagentTokens.soft > (BYTES_BEFORE_SOFT_TOKEN / (nxagentTokens.pending + 1)))
*/
...
...
@@ -1239,9 +1205,8 @@ void nxagentDispatchHandler(ClientPtr client, int in, int out)
int
resource
;
/*
* Wait eventually for the number of
* synchronization requests to return
* below the limit.
* Wait eventually for the number of synchronization requests to
* return below the limit.
*/
#ifdef TEST
...
...
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