- 10 Oct, 2019 1 commit
-
-
Ulrich Sibiller authored
nxagent links system libraries that link against libX11. Unfortunately, nxagent (and libXcompshad) require a modified libX11 version, nicknamed libNX_X11, for proper functioning. Fortunately, this one can act as a drop-in replacement for the system libX11. So we’ll hack our way out: add a DT_NEEDED entry for libX11 by linking against the system library when building nxagent and link the other system libraries later and set DT_RUNPATH to a special directory containing symlinks from libNX_X11 to libX11. This tricks the loader into pulling in the "fake" libX11 version without checking its SONAME and thus satisfying the DT_NEEDED entry early on - specifically also for the system libraries. Ex.: readelf -a /usr/bin/nxagent | grep NEEDED 0x0000000000000001 (NEEDED) Shared library: [libX11.so.6] ... 0x0000000000000001 (NEEDED) Shared library: [libNX_X11.so.6] ... If, however, you run the build a second time, it will find the newly created libX11 links in ../../exports/lib (used as an additional library search path) instead of the system libX11. The results in a binary looking like this: 0x0000000000000001 (NEEDED) Shared library: [libNX_X11.so.6] ... With such a setup, the whole magic falls apart and system libraries will suddenly pull in the actual system libX11 file. We initially believed a compiler call such as: ${CC} [--unrelated-options ...] [-Lunrelated_library_path ...] -lX11 [more options like -l and -L] -L../../exports/lib -lother_libraries to do "the right thing" and link against the system libX11 (or, at worst, a libX11 found in the library directory search list preceding the link call) and use ../../exports/lib only for later linking operations, since the order of options matters. However, this turned out to be blatantly wrong: while the order of -L arguments does matter for building the search path, the whole search path including elements from *ALL* -L arguments (and the system paths) will always be used when linking libraries. Hence, (counter-intuitively to us) both these calls will be equivalent: ${CC} [--unrelated-options ...] -la -Loverride_liba -lb [-Lunrelated_library_path ...] -lc ${CC} [--unrelated-options ...] -Loverride_liba [-Lunrelated_library_path ...] -la -lb -lc By removing LDPRELIBS from NXAGENTSYSLIBS, ../../exports/lib is no longer used during building/linking and the binaries are built reproducibly. We never intended to use this directory at link time anyway.
-
- 27 Aug, 2019 39 commits
-
-
Mike Gabriel authored
-
Mike Gabriel authored
-
Mike Gabriel authored
-
Mike Gabriel authored
-
Mike Gabriel authored
Attributes GH PR #835: https://github.com/ArcticaProject/nx-libs/pull/835
-
Ulrich Sibiller authored
We should do something similar for all subsystems over time...
-
Ulrich Sibiller authored
Especially switchin to/from fullscreen with active AutoGrab was problematic. Works much smoother now.
-
Mike Gabriel authored
-
Ulrich Sibiller authored
This also make re-autograbbing after switch back from AllScreens work.
-
Ulrich Sibiller authored
-
Ulrich Sibiller authored
-
Ulrich Sibiller authored
-
Ulrich Sibiller authored
-
Ulrich Sibiller authored
-
Ulrich Sibiller authored
You can now toggle between autograb mode by pressing CTRL-ALT-G (default, can be adjusted in keystrokes.cfg). Fixes ArcticaProject/nx-libs#384.
-
Mike Gabriel authored
Attributes GH PR #834: https://github.com/ArcticaProject/nx-libs/pull/834
-
Ulrich Sibiller authored
... not on reconnect. After the reconnect RRCloseScreen was called twice which caused a double free. This was introduced with 3b06ad51 Fixes ArcticaProject/nx-libs#833
-
Mike Gabriel authored
Attributes GH PR #826: https://github.com/ArcticaProject/nx-libs/pull/826
-
Ulrich Sibiller authored
it is only used there, no need for a global variable
-
Ulrich Sibiller authored
was only used once
-
Ulrich Sibiller authored
It is only relevant there.
-
Ulrich Sibiller authored
There were some locations referenceing a variable that was only availabe with NXAGENT_ONSTART set
-
Ulrich Sibiller authored
There was only one (commented) section using it.
-
Ulrich Sibiller authored
This better reflects its purpose: Tell listeners we are ready.
-
Ulrich Sibiller authored
They belong there...
-
Ulrich Sibiller authored
-
Ulrich Sibiller authored
Make them defines. Also determine the screen depth dynamically.
-
Ulrich Sibiller authored
We either use a solid black or a white background and no backround pixmap. So nxagentRootTileWindow is always empty and we can drop all stuff around it. remove nxagentSplashCount, too, since it is no longer checked anywhere.
-
Ulrich Sibiller authored
-
Ulrich Sibiller authored
-
Ulrich Sibiller authored
nobody was checking it.
-
Ulrich Sibiller authored
The splash window is only shown in x2go mode. In nxagent mode the splash window was also shown, but empty (and thus invisible). And the code waited for the splash window to disappear. Fix this by skipping _all_ the splash stuff in nxagent mode.
-
Ulrich Sibiller authored
Before there was no way of getting a white background despite having the approriate code. Backport of this commit: commit cb0a565d2b2cf8823abbd77b4426cc2237731dc1 Author: Daniel Stone <daniel@fooishbar.org> Date: Fri Aug 18 17:04:48 2006 +0300 dix: add whiteroot flag Add a -wr option to use a white root window, and use a BackPixel rather than BackPixmap for both white and black root windows. Fixes ArcticaProject/nx-libs#832
-
Ulrich Sibiller authored
-
Ulrich Sibiller authored
Fixes ArcticaProject/nx-libs#733
-
Ulrich Sibiller authored
no more need to pass down a struct, we now only pass the milliseconds and let the function do the rest.
-
Ulrich Sibiller authored
The effect of this was that special keystrokes where detected and passed to the nxagent. E.g. pressing ctrl-alt-f for Fullscreen also produced an "f" in the current input window inside the nxagent.
-
Ulrich Sibiller authored
-
Ulrich Sibiller authored
-