Hi Ulrich, yes, if you moving window between two physical displays, without resizing it, x2goagent doesn't know, that display configuration is changed, because geometry of the x2goagent stays same. So I resized a window to refresh a display configurations. regards, Alex Am 18.05.2015 um 13:28 schrieb Ulrich Sibiller: > On Mon, May 18, 2015 at 11:23 AM, Oleksandr Shneyder > wrote: >> ok, let's wait till this feature is available in nxagent and I'll put >> support for it in x2go client. > > > Ok. But can you please explain the reason for that off-by-one window > size code I found (see below)? > >>>>> On Do 14 Mai 2015 23:32:03 CEST, Ulrich Sibiller wrote: >>>>> >>>>>> while testing my xinerama re-implementation I noticed that x2goclient >>>>>> reports a wrong width sometimes when simply moving the window without >>>>>> changing the size. The reported size differs by one pixel (too much >>>>>> or too little). When running x2goclient --debug you can see this: >>>>>> >>>>>> x2go-DEBUG-../src/onmainwindow.cpp:10160> "New proxy geometry: (x: >>>>>> 329, y: 214, w: 1440, h: 900" >>>>>> x2go-DEBUG-../src/onmainwindow.cpp:10160> "New proxy geometry: (x: >>>>>> 365, y: 213, w: 1440, h: 900" >>>>>> x2go-DEBUG-../src/onmainwindow.cpp:10160> "New proxy geometry: (x: >>>>>> 825, y: 190, w: 1440, h: 900" >>>>>> x2go-DEBUG-../src/sshprocess.cpp:189> executing remote command via >>>>>> SshProcess object (24): "export DISPLAY=:50;printf '\''1095 0 345 >>>>>> 900\n0 0 1095 900'\'' > >>>>>> $HOME/.x2go/C-uli-50-1431636769_stDKDE_dp24/xinerama.conf" >>>>>> >>>>>> -> here the 345 should have been a 344. >>>>>> >>>>>> Interestingly my patched x2goagent (that completely ignores >>>>>> xinerama.conf) sees that value. So I conclude that x2goclient is >>>>>> manipulating the nxproxy window size by one pixel itself. Disabling >>>>>> xinerama in the session's configuration fixes the problem. >>>>>> >>>>>> That off-by-one behaviour is caused by this code in onmainwindow.cpp: >>>>>> >>>>>> void ONMainWindow::slotXineramaConfigured() >>>>>> { >>>>>> if (resumingSession.fullscreen) >>>>>> return; >>>>>> if (xinSizeInc == -1) >>>>>> xinSizeInc=1; >>>>>> else >>>>>> xinSizeInc=-1; >>>>>> #ifdef Q_OS_LINUX >>>>>> >>>>>> lastDisplayGeometry.setWidth(lastDisplayGeometry.width()+xinSizeInc); >>>>>> XSync(QX11Info::display(),false); >>>>>> XResizeWindow(QX11Info::display(), proxyWinId, >>>>>> >>>>>> lastDisplayGeometry.width(),lastDisplayGeometry.height()); >>>>>> XSync(QX11Info::display(),false); >>>>>> #endif >>>>>> #ifdef Q_OS_WIN >>>>>> QRect geom; >>>>>> wapiWindowRect ( (HWND) proxyWinId, geom ); >>>>>> wapiMoveWindow( (HWND) proxyWinId, geom.x(), geom.y(), >>>>>> geom.width()+xinSizeInc, geom.height(),true); >>>>>> lastDisplayGeometry=proxyWinGeometry(); >>>>>> #endif >>>>>> xineramaTimer->start(500); >>>>>> } >>>>>> >>>>>> If I set xinSizeInc to zero in all cases the off-by-one behaviour is >>>>>> completely gone. Why does xinSizeInc exist at all? > > Uli > -- ----------------------------------------------------------- Oleksandr Shneyder | Email: o.shneyder@phoca-gmbh.de phoca GmbH | Tel. : 0911 - 14870374 0 Ludwig-Feuerbach-str. 18 | Fax. : 0911 - 14870374 9 D-90489 Nürnberg | Mobil: 0163 - 49 64 461 Geschäftsführung: Dipl.-Inf. Oleksandr Shneyder Amtsgericht München | http://www.phoca-gmbh.de HRB 196 658 | http://www.x2go.org USt-IdNr.: DE281977973 -----------------------------------------------------------