On Thu, May 17, 2018 at 2:13 PM, Oleksandr Shneyder
<o.shney...@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
_______________________________________________
x2go-dev mailing list
x2go-dev@lists.x2go.org
https://lists.x2go.org/listinfo/x2go-dev

Reply via email to