[X2Go-Commits] [nx-libs] 79/429: Handlers.c: ensure regular yields if suspended
git-admin at x2go.org
git-admin at x2go.org
Mon Oct 18 09:36:09 CEST 2021
This is an automated email from the git hooks/post-receive script.
x2go pushed a commit to branch 3.6.x
in repository nx-libs.
commit e7d5ba4e5a5394633dbd3ce5a3fd5314309bc641
Author: Ulrich Sibiller <uli42 at gmx.de>
Date: Wed Dec 30 14:36:23 2020 +0100
Handlers.c: ensure regular yields if suspended
Fixes ArcticaProject/nx-libs#903
---
nx-X11/programs/Xserver/hw/nxagent/Handlers.c | 23 ++++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Handlers.c b/nx-X11/programs/Xserver/hw/nxagent/Handlers.c
index 9f0a3c9d9..62974b9c1 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Handlers.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Handlers.c
@@ -1070,7 +1070,28 @@ void nxagentDispatchHandler(ClientPtr client, int in, int out)
* into the inner dispatch loop forever.
*/
- if (!SmartScheduleSignalEnable)
+ /*
+ * The behaviour described in the comment above also happens with the
+ * smart scheduler if all of the following conditions are met:
+ * - the agent is suspended
+ * - SleepTimeMillis is set (the default is sufficient to trigger this)
+ * - a client is doing a lot of image operations
+ * - nxagentShadowCounter is 0
+ * In that case the agent will slow down the image operations by calling
+ * an intermediate sleep resulting in the client's request queue never
+ * being empty. Which in turn leads to the drain loop described above.
+ * isItTimeToYield will then never be set. The (dramatic) result of this
+ * is that nxagent will not process any signals and therefore cannot be
+ * resumed anymore!
+ * For this reason we do not limit below code to the dumb scheduler but also
+ * run it if above conditions are met - ensuring regular yields.
+ * See issue #903
+ */
+
+ if (!SmartScheduleSignalEnable ||
+ (nxagentShadowCounter == 0 &&
+ NXDisplayError(nxagentDisplay) == 1 &&
+ nxagentOption(SleepTimeMillis) > 0))
{
if (client -> index != nxagentDispatch.client)
{
--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
More information about the x2go-commits
mailing list