aboutsummaryrefslogtreecommitdiff
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.
* | Merge branch 'uli42-pr/fix_fullscreen_memleak' into 3.6.xMihai Moldovan2019-10-101-19/+14
|\ \ | | | | | | | | | Attributes GH PR #849: https://github.com/ArcticaProject/nx-libs/pull/849
| * | 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.
* | Merge branch 'uli42-pr/fix_segfault' into 3.6.xMihai Moldovan2019-10-101-0/+3
|\ \ | | | | | | | | | | | | | | | Attributes GH PR #848: https://github.com/ArcticaProject/nx-libs/pull/848 Fixes: ArcticaProject/nx-libs#847
| * | 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
* | Merge branch 'uli42-pr/clipboard_overhaul' into 3.6.xMike Gabriel2019-09-296-597/+821
|\ \ | | | | | | | | | Attributes GH PR #846: https://github.com/ArcticaProject/nx-libs/pull/846
| * | 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.
* | Merge branch 'uli42-pr/various2' into 3.6.xMike Gabriel2019-09-2943-2121/+1082
|\ \ | | | | | | | | | Attributes GH PR #827: https://github.com/ArcticaProject/nx-libs/pull/827
| * | nxcompshad: delete trailing whitespaceUlrich Sibiller2019-09-292-8/+8
| | |
| * | nxcompshad: fix logging segfaultUlrich Sibiller2019-09-292-20/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | One cannot simply pass down a va_list to another function that expects variable arguments ("..."). The prototype of the called functions must expect a va_list argument instead. This fixes segfaults that happen e.g. after compiling X11.cpp with TEST and effectively reverts 59e829f3647005a6c93662adfbcea36e27a993d8.
| * | 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
| | |