[X2Go-Dev] Different behavior of X2Go Client from Desktop and TCE
Ulrich Sibiller
uli42 at gmx.de
Thu May 17 14:33:08 CEST 2018
On Thu, May 17, 2018 at 2:13 PM, Oleksandr Shneyder
<o.shneyder at phoca-gmbh.de> wrote:
> Nope, it looks for me, that nxproxy window get information about screens
> from WM. If WM is not started, nxproxy get just the window geometry.
> With started WM we have correct display information on server side.
> Xinerama starts to work with WM even if X2Go Session already running. I
> made some experiments like:
>
> 1. Starting tce without WM.
> 2. Connect to TC with ssh.
> 3. Open X2Go Session. At this moment Xinerama in X2Go session not
> working. I have one big screen over two monitors.
What exactly do you mean by "open x2go session"?
> 4. Starting WM on the TC. At this moment Xinerama starts to work in the
> running X2Go session immediately.
>
> It worked in TCE for me in 100% of cases. Independent when I'm starting
> WM - before X2Go Client, after X2Go Client or even when X2Go Session
> already running. I'll implement this solution in classic TCE and will
> let my customers test it.
I'd prefer understanding what's going on first. nxagent is running
if (nxagentGrabServerInfo.grabstate == SERVER_GRABBED &&
nxagentGrabServerInfo.client != NULL)
{
/*
* If any client grabbed the server it won't expect screen
* configuration changes until it releases the grab. That could
* lead to an X error because available modes are changed
* in the meantime.
*/
#ifdef TEST
fprintf(stderr, "nxagentChangeScreenConfig: Cancel with grabbed
server (grab held by [%p]).\n", (void *)
nxagentGrabServerInfo.client);
#endif
return 0;
}
pScreen = screenInfo.screens[screen] -> root -> drawable.pScreen;
#ifdef TEST
fprintf(stderr, "nxagentChangeScreenConfig: Changing config to %d x
%d (%dmm x %dmm).\n", width, height, mmWidth, mmHeight);
#endif
r = nxagentResizeScreen(pScreen, width, height, mmWidth, mmHeight);
if (r != 0)
{
if (nxagentOption(Xinerama) && (noRRXineramaExtension == FALSE))
{
nxagentAdjustRandRXinerama(pScreen);
}
else
{
#ifdef DEBUG
fprintf(stderr, "%s: Xinerama is disabled\n", __func__);
#endif
nxagentAdjustCustomMode(pScreen);
}
}
And XineramaQueryScreens ins finally called in
nxagentAdjustRandRXinerama. BUT: If nxagentAdjustRandRXinerama FAILS
to get that data it will NOT fall back to the version you see but to
reporting ONE screen (called NX1, IIRC). So all this fails somewhere
else.
Can you run an nxagent that has #define TEST and #define DEBUG
enabledin in Screen.c?
Uli
More information about the x2go-dev
mailing list