aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Sibiller <uli42@gmx.de>2020-01-18 22:09:44 +0100
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2020-05-07 14:57:15 +0200
commit92ac0d27737cf94e72208817cfd261a412a0e428 (patch)
tree7c86a6a7656f477a572209c9a3a3d246341c05e5
parentd282724c4abda9e59a029c2c485d7d046ff647db (diff)
downloadnx-libs-92ac0d27737cf94e72208817cfd261a412a0e428.tar.gz
nx-libs-92ac0d27737cf94e72208817cfd261a412a0e428.tar.bz2
nx-libs-92ac0d27737cf94e72208817cfd261a412a0e428.zip
WaitFor.c Implement the intended NX_WAKEUP functionality
NX_WAKEUP had been non-effective and its effect had been tied to NX_TRANS_WAKEUP.
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Imakefile4
-rw-r--r--nx-X11/programs/Xserver/os/Imakefile2
-rw-r--r--nx-X11/programs/Xserver/os/WaitFor.c20
3 files changed, 14 insertions, 12 deletions
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Imakefile b/nx-X11/programs/Xserver/hw/nxagent/Imakefile
index 128dc3764..6e412a0bb 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Imakefile
+++ b/nx-X11/programs/Xserver/hw/nxagent/Imakefile
@@ -202,8 +202,8 @@ INCLUDES = \
# NXAGENT_ONSTART communicate about startup phase to the original nxclient by NoMachine via selections
# NXAGENT_WAKEUP=<milliseconds> Specifies a timeout that makes WaitForSomething() return earlier than normal which
# enables nxagent to close the splash window at the right time and/or improve connection
-# handling for the xdmcp option. This value has no effect because the code uses
-# NX_TRANS_WAKEUP in os/WaitFor.c instead.
+# handling for the xdmcp option.
+# This only has an effect if NX_TRANS_WAKEUP is also set for os/WaitFor.c
# NXAGENT_ARTSD enable special handling of MCOPGLOBALS property used by artsd.
# NXAGENT_RENDER_CLEANUP cleanup padding bits/bytes of glyphs to possibly increase compression rate
#
diff --git a/nx-X11/programs/Xserver/os/Imakefile b/nx-X11/programs/Xserver/os/Imakefile
index da39c57ba..1b1c2d4fe 100644
--- a/nx-X11/programs/Xserver/os/Imakefile
+++ b/nx-X11/programs/Xserver/os/Imakefile
@@ -42,7 +42,7 @@ NX_DEFINES = -DNX_TRANS_SOCKET \
-DNX_TRANS_FOPEN \
-DNX_TRANS_SLEEP \
-DNX_TRANS_EXIT \
- -DNX_TRANS_WAKEUP=1000 \
+ -DNX_TRANS_WAKEUP \
-DNXAGENT_SERVER \
$(NULL)
diff --git a/nx-X11/programs/Xserver/os/WaitFor.c b/nx-X11/programs/Xserver/os/WaitFor.c
index c76f8619c..9e887c726 100644
--- a/nx-X11/programs/Xserver/os/WaitFor.c
+++ b/nx-X11/programs/Xserver/os/WaitFor.c
@@ -237,13 +237,15 @@ WaitForSomething(int *pClientsReady)
/*
* If caller has marked the first element of pClientsReady[],
- * bail out of select after a short (NX_TRANS_WAKEUP)
- * timeout. We need this to let the NX agent remove the splash
- * screen when the timeout is expired. A better option would
- * be to use the existing screen-saver timeout but it can be
- * modified by clients, so we would need a special
- * handling. This hack is trivial and keeps WaitForSomething()
- * backward compatible with the existing servers.
+ * bail out of select after the timeout given in the second
+ * element. We need this to let the NX agent remove the splash
+ * screen when the timeout is expired even if there's no
+ * client. Otherwise WaitForSomething would block. A better
+ * option would be to use the existing screen-saver timeout
+ * but it can be modified by clients, so we would need a
+ * special handling. This hack is trivial and keeps
+ * WaitForSomething() backward compatible with the existing
+ * servers.
*/
if (pClientsReady[0] == -1)
@@ -257,7 +259,7 @@ WaitForSomething(int *pClientsReady)
timeoutInMillis = GetTimeInMillis();
- if (timeoutInMillis - startTimeInMillis >= NX_TRANS_WAKEUP)
+ if (timeoutInMillis - startTimeInMillis >= pClientsReady[1])
{
#ifdef NX_TRANS_DEBUG
fprintf(stderr, "WaitForSomething: Returning 0 because of wakeup timeout.\n");
@@ -265,7 +267,7 @@ WaitForSomething(int *pClientsReady)
return 0;
}
- timeoutInMillis = NX_TRANS_WAKEUP - (timeoutInMillis - startTimeInMillis);
+ timeoutInMillis = pClientsReady[1] - (timeoutInMillis - startTimeInMillis);
#ifdef NX_TRANS_DEBUG
fprintf(stderr, "WaitForSomething: Milliseconds to next wakeup are %ld.\n",