aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/programs
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'uli42-pr/fix_rebuild' into 3.6.xMihai Moldovan2019-10-191-1/+1
|\ | | | | | | Attributes GH PR #845: https://github.com/ArcticaProject/nx-libs/pull/845
| * nxagent/Imakefile: remove ../../exports/libUlrich Sibiller2019-10-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | Screen.c: cleanup code a bitUlrich Sibiller2019-10-101-16/+14
| |
* | Screen.c: fix a memleakUlrich Sibiller2019-10-101-5/+2
| | | | | | | | | | | | | | Remove some code that is no longer needed because the code requiring it has been removed some time ago (commit 643e13bf3de6704f634d60342b738e0002f057b9). Fixes a small memleak that turned up after switching to fullscreen once.
* | Fix segfault in argument parsingUlrich Sibiller2019-10-031-0/+3
| | | | | | | | | | | | | | | | Using arguments that need a parameter without providing one would lead a segfault due to calling strcmp() will NULL. Triggered by running "nxagent -ac :1 -options nx/nx,fullscreen" or similar, Fixes ArcticaProject/nx-libs#847
* | Clipboard.c: rename nxagentNotifySelection to ↵Ulrich Sibiller2019-09-293-6/+7
| | | | | | | | | | | | nxagentHandleSelectionNotifyFromXServer Use a more descriptive name.
* | Clipboard.c: fix nested clipboard handlingUlrich Sibiller2019-09-291-1/+8
| | | | | | | | Fixes ArcticaProject/nx-libs#632
* | Clipboard.c: add some more FIXMEsUlrich Sibiller2019-09-291-0/+20
| |
* | Clipboard.c: drop old commented codeUlrich Sibiller2019-09-291-16/+0
| |
* | Clipboard.c: fix: translate target on transferUlrich Sibiller2019-09-291-0/+23
| |
* | Clipboard.c: flush the display during transfer phaseUlrich Sibiller2019-09-291-0/+6
| | | | | | | | This avoids delays, timeouts and missing copy/paste actions.
* | Clipboard.c: remove superflous returnUlrich Sibiller2019-09-291-2/+0
| |
* | Clipboard.c: drop unneeded return codeUlrich Sibiller2019-09-291-8/+10
| |
* | Clipboard.c: add loads of commentsUlrich Sibiller2019-09-291-32/+195
| |
* | Clipboard.c: rework debug printsUlrich Sibiller2019-09-291-57/+167
| | | | | | | | add new debug output, extend existing, drop meaningless
* | Clipboard.c: translate internal to external atomUlrich Sibiller2019-09-293-5/+22
| | | | | | | | | | | | | | | | serverClientCutProperty is the external equivalent of the internal clientCutProperty. We need it on the server side, too, because we use the property on the serverWindow on the real X server. We could (mis)use serverCutProperty here but this might introduce race conditions when both sides request selections simultaneously.
* | Clipboard.c: remove unneccessary returnUlrich Sibiller2019-09-291-2/+0
| |
* | Clipboard.c: whitespace fixesUlrich Sibiller2019-09-291-14/+14
| |
* | Clipboard.c: improve readability by using an if clauseUlrich Sibiller2019-09-291-2/+3
| |
* | Clipboard.c: introduce nxagentInitSelectionOwnerUlrich Sibiller2019-09-291-11/+11
| |
* | Clipboard.c: scope improvementsUlrich Sibiller2019-09-291-11/+8
| |
* | Clipboard.c: Refactor nxagentCollectPropertyEventUlrich Sibiller2019-09-291-83/+77
| |
* | Clipboard.c: cleanup in nxagentRequestSelectionUlrich Sibiller2019-09-291-16/+13
| |
* | Clipboard.c: use designated initializers where appropriateUlrich Sibiller2019-09-291-41/+24
| |
* | Clipboard.c: factor out nxagentReplyRequestSelectionUlrich Sibiller2019-09-291-27/+38
| |
* | Clipboard.c: TIMESTAMP is a special server targetUlrich Sibiller2019-09-291-0/+7
| | | | | | | | | | This is not a functional change, it only helps in clearer debugging output.
* | Clipboard.c: introduce macros CLINDEX and WINDOWIDUlrich Sibiller2019-09-291-22/+24
| |
* | Clipboard.c: simplify nxagentGetClipboardWindowUlrich Sibiller2019-09-291-12/+3
| | | | | | | | | | | | | | The second parameter was always NULL, so remove it. Also remove some debugging output which distracts while debugging as the function is called from ProcChangeProperty for _every_ property, also non-clipboard related ones.
* | Clipboard.c: drop serverCLIPBOARDUlrich Sibiller2019-09-291-5/+1
| | | | | | | | we reference lastSelectionOwner[nxagentClipboardSelection].selection everywhere.
* | Clipboard.c: clientAccum is only used for debugging, add DEBUG ifdefsUlrich Sibiller2019-09-291-5/+7
| |
* | Clipboard.c: rename some variablesUlrich Sibiller2019-09-291-10/+10
| | | | | | | | | | | | | | nxagentClipboardAtom -> serverCLIPBOARD nxagentTimestampAtom -> serverTIMESTAMP This is to match the names of the other server atom variables.
* | Clipboard.c: introduce nxagentFind*Index functionsUlrich Sibiller2019-09-294-50/+33
| | | | | | | | | | At some places we were using NumCurrentSelections. We replace that by nxagentMaxSelections because they always have the identical value.
* | Clipboard.c: introduce nxagent{Clear,Store}SelectionOwnerUlrich Sibiller2019-09-291-13/+22
| |
* | Clipboard.c: Fix: report timestamps as XA_INTEGERUlrich Sibiller2019-09-291-2/+2
| | | | | | | | Just as everyone else does. ICCCM is not really clear about this.
* | Clipboard.c: improve TARGETS request handlingUlrich Sibiller2019-09-291-11/+10
| |
* | Clipboard.c: merge endTransfer and nxagentSendSelectionNotifyUlrich Sibiller2019-09-291-25/+12
| | | | | | | | endTransfer is the only caller
* | Clipboard.c: introduce SendSelectionNotifyEventToClient helperUlrich Sibiller2019-09-291-62/+32
| |
* | Clipboard.c: introduce SendEventToClient helperUlrich Sibiller2019-09-291-15/+12
| |
* | Clipboard.c: introduce SendSelectionNotifyEventToServerUlrich Sibiller2019-09-291-82/+50
| | | | | | | | fixup! Clipboard.c: introduce XSendNotificationEventHelper
* | Clipboard.c: introduce central function to abort the transferUlrich Sibiller2019-09-291-40/+36
| |
* | Clipboard.c: do not send notify when pointer is NULLUlrich Sibiller2019-09-291-4/+9
| | | | | | | | There was only one place where this was checked but we check it always.
* | GC.c: introduce helper macros for GC managementUlrich Sibiller2019-09-291-245/+79
| |
* | Events.c: drop unused functionUlrich Sibiller2019-09-291-5/+0
| |
* | Holder.c: remove superflous returnUlrich Sibiller2019-09-291-2/+0
| |
* | Keyboard.c: condense keycode conversion tableUlrich Sibiller2019-09-291-255/+51
| |
* | Display.c: fix formatUlrich Sibiller2019-09-291-5/+5
| |
* | Font.c: add FIXMEUlrich Sibiller2019-09-291-0/+1
| |
* | Image.c: fix indentationUlrich Sibiller2019-09-291-15/+15
| |
* | Events.c: add nxagentSwitchEventsAllScreens helperUlrich Sibiller2019-09-291-35/+19
| |
* | Trap.h: shorten fileUlrich Sibiller2019-09-291-39/+15
| | | | | | | | by reformatting comments and removing blank lines.