aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Sibiller <uli42@gmx.de>2020-06-02 21:48:41 +0200
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2020-06-29 22:03:46 +0200
commitbf0861aa0363f55dd95295dca3ccd6ff96acea87 (patch)
tree8c4229fdaaa73b9bf50cb699e77701ffb4404282
parent4213bf46c117e5186aa404172c5439d92a5ace7f (diff)
downloadnx-libs-bf0861aa0363f55dd95295dca3ccd6ff96acea87.tar.gz
nx-libs-bf0861aa0363f55dd95295dca3ccd6ff96acea87.tar.bz2
nx-libs-bf0861aa0363f55dd95295dca3ccd6ff96acea87.zip
nxagent: clarify sleep time units
No functional changes, just clarification/explanation of the existing code. Fixes ArcticaProject/nx-libs#926
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Args.c2
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Handlers.c16
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Image.c14
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Options.c2
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Options.h8
5 files changed, 27 insertions, 15 deletions
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Args.c b/nx-X11/programs/Xserver/hw/nxagent/Args.c
index 39fa6c5e2..1ae1b570b 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Args.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c
@@ -1365,7 +1365,7 @@ static void nxagentParseSingleOption(char *name, char *value)
validateString(value), validateString(name), sleep_parse);
}
- nxagentChangeOption(SleepTime, sleep_parse);
+ nxagentChangeOption(SleepTimeMillis, sleep_parse);
return;
}
else if (!strcmp(name, "tolerancechecks"))
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Handlers.c b/nx-X11/programs/Xserver/hw/nxagent/Handlers.c
index 411dfe933..9f0a3c9d9 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Handlers.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Handlers.c
@@ -235,18 +235,18 @@ void nxagentBlockHandler(void * data, struct timeval **timeout, void * mask)
* display.
*/
- if (NXDisplayError(nxagentDisplay) == 1 && nxagentShadowCounter == 0 && nxagentOption(SleepTime) > 0)
+ if (NXDisplayError(nxagentDisplay) == 1 && nxagentShadowCounter == 0 && nxagentOption(SleepTimeMillis) > 0)
{
#ifdef TEST
fprintf(stderr, "nxagentBlockHandler: sleeping for %d milliseconds for slowdown.\n",
- nxagentOption(SleepTime));
+ nxagentOption(SleepTimeMillis));
#endif
- usleep(nxagentOption(SleepTime) * 1000);
+ usleep(nxagentOption(SleepTimeMillis) * 1000);
now = GetTimeInMillis();
}
#ifdef TEST
- else if (0 == nxagentOption(SleepTime)) {
+ else if (0 == nxagentOption(SleepTimeMillis)) {
fprintf(stderr, "nxagentBlockHandler: not sleeping for slowdown.\n");
}
#endif
@@ -708,16 +708,16 @@ void nxagentShadowBlockHandler(void * data, struct timeval **timeout, void * mas
nxagentHandleConnectionChanges();
}
- if (nxagentSessionState == SESSION_DOWN && nxagentOption(SleepTime) > 0)
+ if (nxagentSessionState == SESSION_DOWN && nxagentOption(SleepTimeMillis) > 0)
{
#ifdef TEST
fprintf(stderr, "nxagentShadowBlockHandler: sleeping for %d milliseconds for slowdown.\n",
- nxagentOption(SleepTime));
+ nxagentOption(SleepTimeMillis));
#endif
- usleep(nxagentOption(SleepTime) * 1000);
+ usleep(nxagentOption(SleepTimeMillis) * 1000);
}
#ifdef TEST
- else if (0 == nxagentOption(SleepTime)) {
+ else if (0 == nxagentOption(SleepTimeMillis)) {
fprintf(stderr, "nxagentShadowBlockHandler: not sleeping for slowdown.\n");
}
#endif
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Image.c b/nx-X11/programs/Xserver/hw/nxagent/Image.c
index 9369aeb1e..db174a9de 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Image.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Image.c
@@ -492,9 +492,19 @@ void nxagentPutImage(DrawablePtr pDrawable, GCPtr pGC, int depth,
if (nxagentShadowCounter == 0 &&
NXDisplayError(nxagentDisplay) == 1 &&
- nxagentOption(SleepTime) > 0)
+ nxagentOption(SleepTimeMillis) > 0)
{
- int us = nxagentOption(SleepTime) * 4 * (length / 1024);
+ /*
+ * The original NX code had 250us (microseconds) * length/1024
+ * here and 50ms (milliseconds) elsewhere. Later ONE combined
+ * configurable sleep parameter was introduced, having a default
+ * of 50ms (that's milliseconds, not microseconds!), which is
+ * factor 200. For unknown reasons the factor was changed to 250
+ * at the same time. Ensure the value is somewhere between 10ms
+ * and 1s.
+ */
+
+ int us = nxagentOption(SleepTimeMillis) * 1000 * (length / 1024) / 250;
us = (us < 10000 ? 10000 : (us > 1000000 ? 1000000 : us));
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Options.c b/nx-X11/programs/Xserver/hw/nxagent/Options.c
index 4d5fa3e16..0da504f06 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Options.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Options.c
@@ -157,7 +157,7 @@ void nxagentInitOptions(void)
nxagentOptions.Xinerama = 1;
- nxagentOptions.SleepTime = DEFAULT_SLEEP_TIME;
+ nxagentOptions.SleepTimeMillis = DEFAULT_SLEEP_TIME_MILLIS;
nxagentOptions.ReconnectTolerance = DEFAULT_TOLERANCE;
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Options.h b/nx-X11/programs/Xserver/hw/nxagent/Options.h
index 166508ac3..e56860f04 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Options.h
+++ b/nx-X11/programs/Xserver/hw/nxagent/Options.h
@@ -36,7 +36,9 @@
#define UNDEFINED -1
#define COPY_UNLIMITED -1
-#define DEFAULT_SLEEP_TIME 50
+
+/* in milliseconds */
+#define DEFAULT_SLEEP_TIME_MILLIS 50
extern unsigned int nxagentPrintGeometryFlags;
@@ -366,9 +368,9 @@ typedef struct _AgentOptions
int Xinerama;
/*
- * Sleep delay in microseconds.
+ * Sleep delay in milliseconds.
*/
- unsigned int SleepTime;
+ unsigned int SleepTimeMillis;
/*
* Tolerance - tightens or loosens reconnect checks.