aboutsummaryrefslogtreecommitdiff
path: root/nx-X11
Commit message (Collapse)AuthorAgeFilesLines
* fb: fix fast-path blt detectionUlrich Sibiller2018-12-191-27/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Backport of this commit: commit a2880699e8f1f576e1a48ebf25e8982463323f84 Author: Keith Packard <keithp@keithp.com> Date: Tue Mar 25 08:21:16 2014 -0700 fb: fix fast-path blt detection The width parameter is used to disable the blit fast-path (memcpy) when source and destination rows overlap in memory. This check was added in [0]. Unfortunately, the calculation to determine if source and destination lines overlapped was incorrect: (1) it converts width from pixels to bytes, but width is actually in bits, not pixels. (2) it adds this byte offset to dst/srcLine, which implicitly converts the offset from bytes to sizeof(FbBits). Fix both of these by converting addresses to byte pointers and width to bytes and doing comparisons on the resulting byte address. For example: A 32-bpp 1366 pixel-wide row will have width = 1366 * 32 = 43712 bits bpp = 32 (bpp >> 3) = 4 width * (bpp >> 3) = 174848 FbBits (FbBits *)width => 699392 bytes So, "careful" was true if the destination line was within 699392 bytes, instead of just within its 1366 * 4 = 5464 byte row. This bug causes us to take the slow path for large non-overlapping rows that are "close" in memory. As a data point, XGetImage(1366x768) on my ARM chromebook was taking ~140 ms, but with this fixed, it now takes about 60 ms. XGetImage() -> exaGetImage() -> fbGetImage -> fbBlt() [0] commit e32cc0b4c85c78cd8743a6e1680dcc79054b57ce Author: Adam Jackson <ajax@redhat.com> Date: Thu Apr 21 16:37:11 2011 -0400 fb: Fix memcpy abuse The memcpy fast path implicitly assumes that the copy walks left-to-right. That's not something memcpy guarantees, and newer glibc on some processors will indeed break that assumption. Since we walk a line at a time, check the source and destination against the width of the blit to determine whether we can be sloppy enough to allow memcpy. (Having done this, we can remove the check for !reverse as well.) v3: Convert to byte units This first checks to make sure the blt is byte aligned, converts all of the data to byte units and then compares for byte address range overlap between source and dest. Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Daniel Kurtz <djkurtz@chromium.org>
* fb: Fix memcpy abuseUlrich Sibiller2018-12-191-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes ArcticaProject/nx-libs#750 Backport of this commit: commit e32cc0b4c85c78cd8743a6e1680dcc79054b57ce Author: Adam Jackson <ajax@redhat.com> Date: Thu Apr 21 16:37:11 2011 -0400 fb: Fix memcpy abuse The memcpy fast path implicitly assumes that the copy walks left-to-right. That's not something memcpy guarantees, and newer glibc on some processors will indeed break that assumption. Since we walk a line at a time, check the source and destination against the width of the blit to determine whether we can be sloppy enough to allow memcpy. (Having done this, we can remove the check for !reverse as well.) On an Intel Core i7-2630QM with an NVIDIA GeForce GTX 460M running in NoAccel, the broken code and various fixes for -copywinwin{10,100,500} gives (edited to fit in 80 columns): 1: Disable the fastpath entirely 2: Replace memcpy with memmove 3: This fix 4: The code before this fix 1 2 3 4 Operation ------ --------------- --------------- --------------- ------------ 258000 269000 ( 1.04) 544000 ( 2.11) 552000 ( 2.14) Copy 10x10 21300 23000 ( 1.08) 43700 ( 2.05) 47100 ( 2.21) Copy 100x100 960 962 ( 1.00) 1990 ( 2.09) 1990 ( 2.07) Copy 500x500 So it's a modest performance hit, but correctness demands it, and it's probably worth keeping the 2x speedup from having the fast path in the first place. Signed-off-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Keith Packard <keithp@keithp.com>
* Fix uninitialized bytesUlrich Sibiller2018-12-181-1/+1
| | | | | | | | | | | | | | | | | | | | Fixes this valgrind finding ==16977== Warning: invalid file descriptor -1 in syscall close() ==16977== Conditional jump or move depends on uninitialised value(s) ==16977== at 0x544B6B: XkbSendNewKeyboardNotify (xkbEvents.c:62) ==16977== by 0x540481: ProcXkbGetKbdByName (xkb.c:5330) ==16977== by 0x4341C5: Dispatch (NXdispatch.c:482) ==16977== by 0x40EB02: main (main.c:353) ==16977== Uninitialised value was created by a heap allocation ==16977== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==16977== by 0x431BD7: NextAvailableClient (dispatch.c:3719) ==16977== by 0x47B297: AllocNewConnection (connection.c:821) ==16977== by 0x47B297: EstablishNewConnections (connection.c:910) ==16977== by 0x463DFE: ProcessWorkQueue (dixutils.c:541) ==16977== by 0x47635E: WaitForSomething (WaitFor.c:213) ==16977== by 0x434089: Dispatch (NXdispatch.c:360) ==16977== by 0x40EB02: main (main.c:353)
* xkb: Initialize pad bytes sent in replies of geometry requests.Ulrich Sibiller2018-12-181-3/+9
| | | | | | | | | | | | | | | | | | Backport of commit dc9ce695a69ca0787f58f8d160212a7a41acb703 Author: Rami Ylimäki <rami.ylimaki@vincit.fi> Date: Wed Mar 9 15:45:40 2011 +0200 xkb: Initialize pad bytes sent in replies of geometry requests. Valgrind complains about uninitialized data being written to clients. Reviewed-by: Erkki Seppälä <erkki.seppala@vincit.fi> Signed-off-by: Rami Ylimäki <rami.ylimaki@vincit.fi> Reviewed-by: Daniel Stone <daniel@fooishbar.org> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Fix crash due to uninitialized VModMap fields.Ulrich Sibiller2018-12-171-2/+4
| | | | | | | | | | | | | | | | | | | | | | Backport of commit 81b3b0cce088866dc3cda099d7c8d6655849fd43 Author: Tomas Janousek <tomi@nomi.cz> Date: Wed May 20 15:03:01 2009 +0200 Bug #6428, #16458, #21464: Fix crash due to uninitialized VModMap fields. In ProcXkbGetKbdByName, mrep.firstVModMapKey, .nVModMapKeys and .totalVModMapKeys were not initialized, contained random values and caused accesses to unallocated and later modified memory, causing XkbSizeVirtualModMap and XkbWriteVirtualModMap to see different number of nonzero values, resulting in writes past the end of an array in XkbSendMap. This patch initializes those values sensibly and reverts commits 5c0a2088 and 6dd4fc46, which have been plain non-sense. Signed-off-by: Tomas Janousek <tomi@nomi.cz> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* release 3.5.99.173.5.99.17Mike Gabriel2018-11-201-1/+1
|
* nx-X11/config/cf/nxcompile.def: Rephrase header comment slightly.Mike Gabriel2018-11-111-1/+1
|
* imake: adapt output to automake output as seen in lib/srcUlrich Sibiller2018-11-111-1/+1
|
* imake: also silence makedependUlrich Sibiller2018-11-111-4/+9
|
* silence imake compilationUlrich Sibiller2018-11-112-1/+26
| | | | | Suppress printing the rm and the cc call for every file. Only print the compiler call in case of error.
* Makefile: Rework handling auto-determined values for imakeUlrich Sibiller2018-11-101-0/+2
| | | | | create a new def file nxconfig.def and be fine. The settings in that file will be respected by all subsequent imake calls anywhere in the tree.
* Lift Xext to xorg 1.4.2Ulrich Sibiller2018-11-0921-264/+349
|
* adapt code-versions.txtUlrich Sibiller2018-11-091-1/+1
|
* Convert existing Xprintf style calls to asprintf styleUlrich Sibiller2018-11-092-21/+37
| | | | | | | | | | | | | | | | This commit + some more adaption in ddxLoad.c which where no longer present when Alan did the patch. However, our code still has them: Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Sat Nov 27 20:09:04 2010 -0800 Convert existing Xprintf style calls to asprintf style Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com> Reviewed-by: Mikhail Gusarov <dottedmag@dottedmag.net> Backported-to-NX-by: Ulrich Sibiller <uli42@gmx.de>
* xkb: Don't check for NULL before calling freeUlrich Sibiller2018-11-091-4/+2
| | | | | | | | | | | Author: Pauli Nieminen <ext-pauli.nieminen@nokia.com> Date: Thu Jul 22 11:34:54 2010 +0300 xkb: Don't check for NULL before calling free Signed-off-by: Pauli Nieminen <ext-pauli.nieminen@nokia.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Backported-to-NX-by: Ulrich Sibiller <uli42@gmx.de>
* xkb: Fix memory leak if opening file failsUlrich Sibiller2018-11-091-0/+2
| | | | | | | | | | | | | Author: Pauli Nieminen <ext-pauli.nieminen@nokia.com> Date: Thu Jul 22 11:33:33 2010 +0300 xkb: Fix memory leak if opening file fails If fopen fails pointer in buf would be overwriten with a new pointer. Signed-off-by: Pauli Nieminen <ext-pauli.nieminen@nokia.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Backported-to-NX-by: Ulrich Sibiller <uli42@gmx.de>
* Make: Automatically determine xkb dirUlrich Sibiller2018-11-092-1/+9
|
* XKB: Fix size_syms calculation bugUlrich Sibiller2018-11-091-1/+1
| | | | | | | | | | | | | | | Backported from Xorg: commit f292de2ef13dc994a38029cee9e2642576893332 Author: Daniel Stone <daniel@fooishbar.org> Date: Wed Mar 21 02:04:12 2007 +0200 XKB: Fix size_syms calculation bug Apparently it needed to be nSyms*15/10, not *12/10; make it match the other allocation code. Backported-to-nx-by: Ulrich Sibiller <uli42@gmx.de>
* Event.c: improve DEBUG outputUlrich Sibiller2018-11-091-3/+15
|
* XKB: Remove unused DDX functionsUlrich Sibiller2018-11-095-103/+5
| | | | | | | | | | | | | | | commit 7c4c00649cae855e141ec9a3667bfe399e3156d0 Author: Daniel Stone <daniel@fooishbar.org> Date: Thu Jan 1 05:25:52 2009 +1100 XKB: Remove unused DDX functions They were complete no-ops anyway. Signed-off-by: Daniel Stone <daniel@fooishbar.org> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Backported-to-nx-by: Ulrich Sibiller <uli42@gmx.de>
* XKB: Fix logic errorUlrich Sibiller2018-11-091-1/+1
| | | | | | | | | | | | | | | commit 6aef4e96affcc26b9415c6bc9c9bebb5af05a1a7 Author: Daniel Stone <daniel@fooishbar.org> Date: Sat Jan 17 13:42:46 2009 +0200 XKB: Fix logic error Use logical or instead of bitwise or. Signed-off-by: Daniel Stone <daniel@fooishbar.org> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Backported-to-nx-by: Ulrich Sibiller <uli42@gmx.de>
* XKB: Fix garbage initializationUlrich Sibiller2018-11-091-1/+1
| | | | | | | | | | | | | | | | | | commit 8311cd5f89ca6781842bb24671b8122cdf8be148 Author: Jeremy Huddleston <jeremyhu@freedesktop.org> Date: Tue Mar 23 10:37:36 2010 -0700 XKB: Fix garbage initialization XkbEnableDisableControls set extra garbage bits on the xkbControlsNotify changedControls mask because it was uninitialized on the stack. Found by clang Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Backported-to-nx-by: Ulrich Sibiller <uli42@gmx.de>
* ProcXkbGetKbdByName: fix use of uninitialised bytes valgrind error.Ulrich Sibiller2018-11-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We have fixed that (independendly) before, but missed one line. Backported-to-nx-by: Ulrich Sibiller <uli42@gmx.de> commit 85f9017393c9bb19553e9afcf554673a44a09993 Author: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Date: Tue Feb 8 11:10:10 2011 +0200 ProcXkbGetXkbByName: fix use of uninitialised bytes valgrind error. ==9999== Syscall param writev(vector[...]) points to uninitialised byte(s) ==9999== at 0x4AB5154: writev (writev.c:51) ==9999== by 0x7C7C3: _XSERVTransWritev (Xtrans.c:912) ==9999== by 0x61C8B: FlushClient (io.c:924) ==9999== by 0x62423: WriteToClient (io.c:846) ==9999== by 0xCE39B: XkbSendMap (xkb.c:1408) ==9999== by 0xD247B: ProcXkbGetKbdByName (xkb.c:5814) ==9999== by 0x4AB53: Dispatch (dispatch.c:432) ==9999== by 0x205BF: main (main.c:291) ==9999== Address 0x557eb68 is 40 bytes inside a block of size 4,096 alloc'd ==9999== at 0x48334A4: calloc (vg_replace_malloc.c:467) ==9999== by 0x62567: WriteToClient (io.c:1065) ==9999== by 0x452EB: ProcEstablishConnection (dispatch.c:3685) ==9999== by 0x4AB53: Dispatch (dispatch.c:432) ==9999== by 0x205BF: main (main.c:291) ==9999== Uninitialised value was created by a stack allocation ==9999== at 0xD1910: ProcXkbGetKbdByName (xkb.c:5559) Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Oliver McFadden <oliver.mcfadden@nokia.com> Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com>
* XkbSendNames: fix use of uninitialised bytes valgrind error.Ulrich Sibiller2018-11-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Backported-to-nx-by: Ulrich Sibiller <uli42@gmx.de> commit 8a34d7a8532c7ca013e67307f3baf200167abb92 Author: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com> Date: Tue Feb 8 11:10:11 2011 +0200 XkbSendNames: fix use of uninitialised bytes valgrind error. ==537== Syscall param writev(vector[...]) points to uninitialised byte(s) ==537== at 0x4AB7154: writev (writev.c:51) ==537== by 0x8935B: _XSERVTransWritev (Xtrans.c:912) ==537== by 0x6C55F: FlushClient (io.c:924) ==537== by 0x6CCF3: WriteToClient (io.c:846) ==537== by 0xD51D3: XkbSendNames (xkb.c:3765) ==537== by 0xD8183: ProcXkbGetKbdByName (xkb.c:5825) ==537== by 0x27B7B: Dispatch (dispatch.c:432) ==537== by 0x205B7: main (main.c:291) ==537== Address 0x55899f2 is 154 bytes inside a block of size 1,896 alloc'd ==537== at 0x4834C48: malloc (vg_replace_malloc.c:236) ==537== by 0xD47AF: XkbSendNames (xkb.c:3642) ==537== by 0xD8183: ProcXkbGetKbdByName (xkb.c:5825) ==537== by 0x27B7B: Dispatch (dispatch.c:432) ==537== by 0x205B7: main (main.c:291) ==537== Uninitialised value was created by a heap allocation ==537== at 0x4834C48: malloc (vg_replace_malloc.c:236) ==537== by 0xD47AF: XkbSendNames (xkb.c:3642) ==537== by 0xD8183: ProcXkbGetKbdByName (xkb.c:5825) ==537== by 0x27B7B: Dispatch (dispatch.c:432) ==537== by 0x205B7: main (main.c:291) Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Oliver McFadden <oliver.mcfadden@nokia.com> Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan-de-oliveira@nokia.com>
* Keyboard.c: simplify even more: free stuff at one placeUlrich Sibiller2018-11-091-16/+8
|
* Keyboard.c: fix keyboard=query logicUlrich Sibiller2018-11-091-1/+1
| | | | an empty nxagentKeyboard variable is no reason to fall back to no-XKB mode
* Keyboard.c: greatly simplify the code in nxagentKeyboardProcUlrich Sibiller2018-11-091-31/+13
| | | | most of the code was existing twice
* Keyboard.c: guard XkbFreeKeyboard callsUlrich Sibiller2018-11-091-5/+10
| | | | manpage does not tell us if NULL is valid
* Keyboard.c: simplify over-specific ifUlrich Sibiller2018-11-091-2/+1
|
* Keyboard.c: simplify RLMVO string handlingUlrich Sibiller2018-11-091-37/+9
|
* Keyboard.c: always ask for remote XKBUlrich Sibiller2018-11-091-12/+12
|
* Lift xkb to XORG-1.3.0.0 stateUlrich Sibiller2018-11-092-3/+4
|
* XKB: provide XKB defines via ImakefileUlrich Sibiller2018-11-091-1/+1
|
* Keyboard.c: do not define own RLMVO defaultsUlrich Sibiller2018-11-091-94/+5
| | | | use the ones from xkb
* no more own XkbBaseDirectory handlingUlrich Sibiller2018-11-092-361/+1
| | | | Just use the existing xkb code
* Keyboard.c: remove unused definesUlrich Sibiller2018-11-091-6/+0
| | | | Defines regarding XKB-BASE_DIRECTORY are used only xkb.
* Keyboard.c: remove unnecessary includesUlrich Sibiller2018-11-091-7/+0
|
* Keyboard.c: Remove (now) unused definesUlrich Sibiller2018-11-091-6/+0
|
* Lift xkb to XORG-1.2.0 stateUlrich Sibiller2018-11-0923-377/+2979
|
* Check nxagentXkbInfo.EventBase before useUlrich Sibiller2018-11-091-1/+7
|
* Lift Xi to 1.3.0.0 (identical to 1.2.0)Ulrich Sibiller2018-11-0138-45/+25
|
* Window.c: use C99 designated initializers at some placesUlrich Sibiller2018-10-271-37/+30
|
* Window.c: add FIXMEUlrich Sibiller2018-10-271-0/+4
|
* Window.c: save some lines by declaring loop variables in the loopUlrich Sibiller2018-10-271-48/+21
|
* Window.c: indent ifdefs for better readabilityUlrich Sibiller2018-10-271-46/+43
|
* Window.c: silence compiler warningsUlrich Sibiller2018-10-271-2/+8
|
* Window.c: some code simplificationsUlrich Sibiller2018-10-271-63/+26
|
* Window.c: whitespace cleanupUlrich Sibiller2018-10-271-136/+34
|
* Window.c: scope improvementsUlrich Sibiller2018-10-271-40/+27
|
* Window.c: reformat/add braces for readabilityUlrich Sibiller2018-10-271-42/+110
|