1. 11 Jun, 2019 1 commit
    • Ulrich Sibiller's avatar
      os: fix BigReq ignoring when another request is pending · a736122f
      Ulrich Sibiller authored
      Not sure how it came to this situation, but the following commit is
      partly contained in our version of the code. Some lines had not been
      removed, tough...
      
        commit c80c41767eb101e9dbd8393d8cca7764b4e248a4
        Author: Aaron Plattner <aplattner@nvidia.com>
        Date:   Mon Oct 25 22:01:32 2010 -0700
      
          os: Fix BigReq ignoring when another request is pending
      
          Commit cf88363db0ebb42df7cc286b85d30d7898aea840 fixed the handling of
          BigReq requests that are way too large and handles the case where the
          read() syscall returns a short read.  However, it neglected to handle
          the case where it returns a long read, which happens when the client
          has another request in the queue after the bogus large one.
      
          Handle the long read case by subtracting the smaller of 'needed' and
          'gotnow' from oci->ignoreBytes.  If needed < gotnow, simply subtract
          the two, leaving gotnow equal to the number of extra bytes read.
          Since the code immediately following the (oci->ignoreBytes > 0) block
          tries to handle the next request, advance oci->bufptr immediately
          instead of setting oci->lenLastReq and letting the next call to
          ReadRequestFromClient do it.
      
          Fixes the XTS pChangeKeyboardMapping-3 test.
      
                   CASES TESTS  PASS UNSUP UNTST NOTIU  WARN   FIP  FAIL UNRES  UNIN ABORT
          -Xproto    122   389   367     2    19     0     0     0     1     0     0     0
          +Xproto    122   389   368     2    19     0     0     0     0     0     0     0
      Signed-off-by: 's avatarAaron Plattner <aplattner@nvidia.com>
      Reviewed-by: 's avatarAdam Jackson <ajax@redhat.com>
      Signed-off-by: 's avatarKeith Packard <keithp@keithp.com>
      a736122f
  2. 06 Oct, 2018 1 commit
    • Ulrich Sibiller's avatar
      nxagent: Fix an excessive request size limitation that broke big-requests. · da9d1a52
      Ulrich Sibiller authored
      Fixes ArcticaProject/nx-libs#301, #631
      
      Backport from xorg-xserver:
      
        commit ca82d4bddf235c9b68d51d68636bab40eafb9889
        Author: Eric Anholt <eric@anholt.net>
        Date:   Fri Aug 31 13:00:23 2007 -0700
      
          Bug #7186: Fix an excessive request size limitation that broke big-requests.
      
          MAXBUFSIZE appears to be a leftover of some previous time.  Instead, just
          use maxBigRequestSize when bigreqs are available (limiting buffers to ~16MB).
          When bigreqs are not available, needed won't be larger than the maximum
          size of a non-bigreqs request (256kB).
      da9d1a52
  3. 03 Jul, 2018 1 commit
    • Ulrich Sibiller's avatar
      os/io.c: fix unitialised bytes · e5975a70
      Ulrich Sibiller authored
      ... by implementing some kind of recalloc (mix of realloc and calloc).
      
      Fixes this valgrind finding:
      
      ==7061== Syscall param writev(vector[...]) points to uninitialised byte(s)
      ==7061==    at 0x781EFE0: __writev_nocancel (syscall-template.S:84)
      ==7061==    by 0x488974: _XSERVTransSocketWritev (Xtranssock.c:2914)
      ==7061==    by 0x47DBD3: FlushClient (io.c:1080)
      ==7061==    by 0x47DBD3: FlushAllOutput.part.0 (io.c:817)
      ==7061==    by 0x477304: WaitForSomething (WaitFor.c:246)
      ==7061==    by 0x434369: Dispatch (NXdispatch.c:360)
      ==7061==    by 0x40EB92: main (main.c:353)
      ==7061==  Address 0x102106f3 is 50,211 bytes inside a block of size 54,308 alloc'd
      ==7061==    at 0x4C2FD5F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
      ==7061==    by 0x47F08F: FlushClient (io.c:1123)
      ==7061==    by 0x47F307: WriteToClient (io.c:991)
      ==7061==    by 0x42903C: doListFontsAndAliases (NXdixfonts.c:660)
      ==7061==    by 0x42B7D6: ListFonts (NXdixfonts.c:735)
      ==7061==    by 0x433A6D: ProcListFonts (NXdispatch.c:989)
      ==7061==    by 0x4344A5: Dispatch (NXdispatch.c:482)
      ==7061==    by 0x40EB92: main (main.c:353)
      ==7061==  Uninitialised value was created by a heap allocation
      ==7061==    at 0x4C2FD5F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
      ==7061==    by 0x47F08F: FlushClient (io.c:1123)
      ==7061==    by 0x47F307: WriteToClient (io.c:991)
      ==7061==    by 0x42903C: doListFontsAndAliases (NXdixfonts.c:660)
      ==7061==    by 0x42B7D6: ListFonts (NXdixfonts.c:735)
      ==7061==    by 0x433A6D: ProcListFonts (NXdispatch.c:989)
      ==7061==    by 0x4344A5: Dispatch (NXdispatch.c:482)
      ==7061==    by 0x40EB92: main (main.c:353)
      ==7061==
      e5975a70
  4. 21 Mar, 2017 1 commit
    • Mike Gabriel's avatar
      dix/os: backport various signal handling and smart scheduler changes from X.org · 366067b7
      Mike Gabriel authored
       Backported from X.org:
      
       commit 6178b1c91cfc9e860914acc6f0be2f2d2e07a124
       Author: Adam Jackson <ajax@redhat.com>
       Date:   Tue Jun 7 15:52:11 2016 -0400
      
          dix: Use OsSignal() not signal()
      
          As the man page for the latter states:
      
              The effects of signal() in a multithreaded process are unspecified.
      
          We already have an interface to call sigaction() instead, use it.
      Signed-off-by: 's avatarAdam Jackson <ajax@redhat.com>
      Reviewed-by: 's avatarKeith Packard <keithp@keithp.com>
      
       commit e10ba9e4b52269b2ac75c4802dce4ca47d169657
       Author: Keith Packard <keithp@keithp.com>
       Date:   Wed Nov 11 22:02:01 2015 -0800
      
          Remove non-smart scheduler. Don't require setitimer.
      
          This allows the server to call GetTimeInMillis() after each request is
          processed to avoid needing setitimer. -dumbSched now turns off the
          setitimer.
      Reviewed-by: 's avatarAdam Jackson <ajax@redhat.com>
      Signed-off-by: 's avatarKeith Packard <keithp@keithp.com>
      
       commit 1f915e8b524dd02011158aa038935970684c7630
       Author: Daniel Drake <drake@endlessm.com>
       Date:   Wed May 20 13:16:12 2015 -0600
      
          Keep SIGALRM restart flag after Popen
      
          Commit 94ab7455 added SA_RESTART to the SIGALRM handler.  However, the
          Popen code tears down and recreates the SIGALRM handler via OsSignal(),
          and this flag is dropped at this time.
      
          Clean the code to use just a single codepath for creating this signal
          handler, always applying SA_RESTART.
      
          [ajax: Fixed commit id]
      Reviewed-by: 's avatarAdam Jackson <ajax@redhat.com>
      Signed-off-by: 's avatarDaniel Drake <drake@endlessm.com>
      
       commit 94ab7455abc213fc96760e29ab2e943ec682fb22
       Author: Daniel Drake <drake@endlessm.com>
       Date:   Tue May 12 16:39:22 2015 -0600
      
          Allow system call restarts upon signal interruption
      
          The X server frequently deals with SIGIO and SIGALRM interruptions.
          If process execution is inside certain blocking system calls
          when these signals arrive, e.g. with the kernel blocked on
          a contended semaphore, the system calls will be interrupted.
      
          Some system calls are automatically restartable (the kernel re-executes
          them with the same parameters once the signal handler returns) but
          only if the signal handler allows it.
      
          Set SA_RESTART on the signal handlers to enable this convenient
          behaviour.
      Reviewed-by: 's avatarAdam Jackson <ajax@redhat.com>
      Signed-off-by: 's avatarDaniel Drake <drake@endlessm.com>
      
       commit a6c71ce5d2d2fe89e07a2ef5041c915acc3dc686
       Author: Tiago Vignatti <tiago.vignatti@nokia.com>
       Date:   Mon Mar 28 19:21:28 2011 +0300
      
          os: fix memory and fd leaks in Popen
      Signed-off-by: 's avatarTiago Vignatti <tiago.vignatti@nokia.com>
      Reviewed-by: 's avatarPeter Hutterer <peter.hutterer@who-t.net>
      Reviewed-by: 's avatarNicolas Peninguy <nico@lostgeeks.org>
      
       commit c9051b684b524549eab6d5b88ee3e195a6f6fbe8
       Author: Alan Coopersmith <alan.coopersmith@sun.com>
       Date:   Wed Nov 5 18:25:57 2008 -0800
      
          Use OsSignal in Popen/Pclose to avoid SysV signal() stupidity
      
       commit 0e9ef65fa583bf2393dd0fda82df6f092387b425
       Author: Keith Packard <keithp@koto.keithp.com>
       Date:   Wed Nov 7 16:33:10 2007 -0800
      
          Don't frob timers unless SmartSchedule is running
      
       commit 2338d5c9914e2a43c3a4f7ee0f4355ad0a1ad9e7
       Author: Arjan van de Ven <arjan@linux.intel.com>
       Date:   Sun Oct 28 09:37:52 2007 +0100
      
          reduce wakeups from smart scheduler
      
          The smart scheduler itimer currently always fires after each request
          (which in turn causes the CPU to wake out of idle, burning precious
          power). Rather than doing this, just stop the timer before going into
          the select() portion of the WaitFor loop. It's a cheap system call, and
          it will only get called if there's no more commands batched up from the
          active fd.
      
          This change also allows some of the functions to be simplified;
          setitimer() will only fail if it's passed invalid data, and we don't do
          that... so make it void and remove all the conditional code that deals
          with failure.
      
          The change also allows us to remove a few variables that were used for
          housekeeping between the signal handler and the main loop.
      Signed-off-by: 's avatarKeith Packard <keithp@koto.keithp.com>
      
       **Note**: The above change also required ABI changes in hw/nxagent/.
      
       commit abe0a51f3f790f8c055289465e130177c4b647cc
       Author: Ben Byer <bbyer@bbyer.apple.com>
       Date:   Fri Sep 21 17:07:36 2007 -0700
      
          So, like, checking return codes of system calls (signal, etc) is good.
          Also, only restore an old signal handler if one was actually set
          (prevents the server from dying on OS X).
      
       commit 6da39c67905500ab2db00a45cda4a9f756cdde96
       Author: Eric Anholt <eric@anholt.net>
       Date:   Wed Sep 12 13:23:13 2007 +0000
      
          Fix build on FreeBSD after Popen changes.
      
       commit a5b8053606d6e786cdcf6734f271acc05f9cc588
       Author: Adam Jackson <ajax@benzedrine.nwnk.net>
       Date:   Tue Sep 11 11:37:06 2007 -0400
      
          Ignore - not just block - SIGALRM around Popen()/Pclose().
      
          Because our "popen" implementation uses stdio, and because nobody's stdio
          library is capable of surviving signals, we need to make absolutely sure
          that we hide the SIGALRM from the smart scheduler.  Otherwise, when you
          open a menu in openoffice, and it recompiles XKB to deal with the
          accelerators, and you popen xkbcomp because we suck, then the scheduler
          will tell you you're taking forever doing something stupid, and the
          wait() code will get confused, and input will hang and your CPU usage
          slams to 100%.  Down, not across.
      Backported-to-NX-by: 's avatarMike Gabriel <mike.gabriel@das-netzwerkteam.de>
      366067b7
  5. 20 Mar, 2017 4 commits
    • Alan Coopersmith's avatar
      Set padding bytes to 0 in WriteToClient · f9123570
      Alan Coopersmith authored
       commit bed610fcae41ddfe21fa9acde599b17d1d15f5d1
       Author: Alan Coopersmith <alan.coopersmith@oracle.com>
       Date:   Mon Jul 9 19:12:44 2012 -0700
      
          Set padding bytes to 0 in WriteToClient
      
          Clear them out when needed instead of leaving whatever values were
          present in previously sent messages.
      Signed-off-by: 's avatarAlan Coopersmith <alan.coopersmith@oracle.com>
      Reviewed-by: 's avatarKeith Packard <keithp@keithp.com>
      Tested-by: 's avatarDaniel Stone <daniel@fooishbar.org>
      Backported-to-NX-by: 's avatarMike Gabriel <mike.gabriel@das-netzwerkteam.de>
      f9123570
    • Aaron Plattner's avatar
      os: Return BadLength instead of disconnecting BigReq clients (#4565) · 2ecd2a00
      Aaron Plattner authored
       Backported from X.org:
      
       commit 67c66606c760c263d7a4c2d1bba43ed6225a4e7c
       Author: Robert Morell <rmorell@nvidia.com>
       Date:   Thu May 9 13:09:02 2013 -0700
      
          os: Reset input buffer's 'ignoreBytes' field
      
          If a client sends a request larger than maxBigRequestSize, the server is
          supposed to ignore it.
      
          Before commit cf88363d, the server would simply disconnect the client.  After
          that commit, it attempts to gracefully ignore the request by remembering how
          long the client specified the request to be, and ignoring that many bytes.
          However, if a client sends a BigReq header with a large size and disconnects
          before actually sending the rest of the specified request, the server will
          reuse the ConnectionInput buffer without resetting the ignoreBytes field.  This
          makes the server ignore new X clients' requests.
      
          This fixes that behavior by resetting the ignoreBytes field when putting the
          ConnectionInput buffer back on the FreeInputs list.
      Signed-off-by: 's avatarRobert Morell <rmorell@nvidia.com>
      Reviewed-by: 's avatarPeter Hutterer <peter.hutterer@who-t.net>
      Signed-off-by: 's avatarPeter Hutterer <peter.hutterer@who-t.net>
      
       commit c80c41767eb101e9dbd8393d8cca7764b4e248a4
       Author: Aaron Plattner <aplattner@nvidia.com>
       Date:   Mon Oct 25 22:01:32 2010 -0700
      
          os: Fix BigReq ignoring when another request is pending
      
          Commit cf88363db0ebb42df7cc286b85d30d7898aea840 fixed the handling of
          BigReq requests that are way too large and handles the case where the
          read() syscall returns a short read.  However, it neglected to handle
          the case where it returns a long read, which happens when the client
          has another request in the queue after the bogus large one.
      
          Handle the long read case by subtracting the smaller of 'needed' and
          'gotnow' from oci->ignoreBytes.  If needed < gotnow, simply subtract
          the two, leaving gotnow equal to the number of extra bytes read.
          Since the code immediately following the (oci->ignoreBytes > 0) block
          tries to handle the next request, advance oci->bufptr immediately
          instead of setting oci->lenLastReq and letting the next call to
          ReadRequestFromClient do it.
      
          Fixes the XTS pChangeKeyboardMapping-3 test.
      
                   CASES TESTS  PASS UNSUP UNTST NOTIU  WARN   FIP  FAIL UNRES  UNIN ABORT
          -Xproto    122   389   367     2    19     0     0     0     1     0     0     0
          +Xproto    122   389   368     2    19     0     0     0     0     0     0     0
      Signed-off-by: 's avatarAaron Plattner <aplattner@nvidia.com>
      Reviewed-by: 's avatarAdam Jackson <ajax@redhat.com>
      Signed-off-by: 's avatarKeith Packard <keithp@keithp.com>
      
       commit cf88363db0ebb42df7cc286b85d30d7898aea840
       Author: Aaron Plattner <aplattner@nvidia.com>
       Date:   Fri Aug 27 10:20:29 2010 -0700
      
          os: Return BadLength instead of disconnecting BigReq clients (#4565)
      
          If a client sends a big request that's too big (i.e. bigger than
          maxBigRequestSize << 2 bytes), the server just disconnects it.  This makes the
          client receive SIGPIPE the next time it tries to send something.
      
          The X Test Suite sends requests that are too big when the test specifies the
          TOO_LONG test type.  When the client receives SIGPIPE, XTS marks it as
          UNRESOLVED, which counts as a failure.
      
          Instead, remember how long the request is supposed to be and then return that
          size.  Dispatch() checks the length and sends BadLength to the client.  Then,
          whenever oci->ignoreBytes is nonzero, ignore the data read instead of trying to
          process it as a request.
      Signed-off-by: 's avatarAaron Plattner <aplattner@nvidia.com>
      Reviewed-by: 's avatarKeith Packard <keithp@keithp.com>
      Signed-off-by: 's avatarKeith Packard <keithp@keithp.com>
      Backported-to-NX-by: 's avatarMike Gabriel <mike.gabriel@das-netzwerkteam.de>
      2ecd2a00
    • Peter Harris's avatar
      Fix overflow of ConnectionOutput->size and ->count · cbc2d300
      Peter Harris authored
       commit 4b0d0df34f10a88c10cb23dd50087b59f5c4fece
       Author: Peter Harris <pharris@opentext.com>
       Date:   Mon Nov 17 14:31:24 2014 -0500
      
          Fix overflow of ConnectionOutput->size and ->count
      
          When (long) is larger than (int), and when realloc succeeds with sizes
          larger than INT_MAX, ConnectionOutput->size and ConnectionOutput->count
          overflow and become negative.
      
          When ConnectionOutput->count is negative, InsertIOV does not actually
          insert an IOV, and FlushClient goes into an infinite loop of writev(fd,
          iov, 0) [an empty list].
      
          Avoid this situation by killing the client when it has more than INT_MAX
          unread bytes of data.
      Signed-off-by: 's avatarPeter Harris <pharris@opentext.com>
      Reviewed-by: 's avatarKeith Packard <keithp@keithp.com>
      Signed-off-by: 's avatarKeith Packard <keithp@keithp.com>
      Backported-to-NX-by: 's avatarMike Gabriel <mike.gabriel@das-netzwerkteam.de>
      cbc2d300
    • Michel Dänzer's avatar
      dix: Pass ClientPtr to FlushCallback · 65b6a62b
      Michel Dänzer authored
       Backported X.org commits:
      
       commit b380f3ac51f40ffefcde7d3db5c4c149f274246d
       Author: Michel Dänzer <michel.daenzer@amd.com>
       Date:   Tue Aug 2 17:53:01 2016 +0900
      
          dix: Pass ClientPtr to FlushCallback
      
          This change has two effects:
      
          1. Only calls FlushCallbacks when we're actually flushing data to a
             client. The unnecessary FlushCallback calls could cause significant
             performance degradation with compositing, which is significantly
             reduced even without any driver changes.
      
          2. By passing the ClientPtr to FlushCallbacks, drivers can completely
             eliminate unnecessary flushing of GPU commands by keeping track of
             whether we're flushing any XDamageNotify events to the client for
             which the corresponding rendering commands haven't been flushed to
             the GPU yet.
      Reviewed-by: 's avatarAdam Jackson <ajax@redha.com>
      Signed-off-by: 's avatarMichel Dänzer <michel.daenzer@amd.com>
      
       commit c65f610e12f9df168d5639534ed3c2bd40afffc8
       Author: Kristian Høgsberg <krh@bitplanet.net>
       Date:   Thu Jul 29 18:52:35 2010 -0400
      
          Always call the flush callback chain when we flush client buffers
      
          We were missing the callback in a couple of places.  Drivers may use
          the flush callback to submit batched up rendering before events (for
          example, damage events) are sent out, to ensure that the rendering
          has been queued when the client receives the event.
      Signed-off-by: 's avatarKristian Høgsberg <krh@bitplanet.net>
      Reviewed-by: 's avatarKeith Packard <keithp@keithp.com>
      Backported-to-NX-by: 's avatarMike Gabriel <mike.gabriel@das-netzwerkteam.de>
      65b6a62b
  6. 19 Mar, 2017 2 commits
    • Keith Packard's avatar
      Xserver/os/io.c: Bail out early from FlushClient if nothing needs to be written. · af7c3750
      Keith Packard authored
       Found in X.org commit:
      
       commit d5bf6f95f31037bd49b11348b500c3c13b7e0c99
       Author: Keith Packard <keithp@keithp.com>
       Date:   Thu Oct 4 14:42:37 2012 -0700
      
          Fix FlushClient to write extraBuf when provided (regression fix)
      
          In commit:
      
              commit 092c57ab173c8b71056f6feb3b9d04d063a46579
              Author: Adam Jackson <ajax@redhat.com>
              Date:   Fri Jun 17 14:03:01 2011 -0400
      
                  os: Hide the Connection{In,Out}put implementation details
      Reviewed-by: 's avatarDaniel Stone <daniel@fooishbar.org>
      Signed-off-by: 's avatarAdam Jackson <ajax@redhat.com>
      
          the check for an empty output buffer was moved from one calling
          location into the FlushClient implementation itself. However, this
          neglected the possibility that additional data, in the form of
          'extraBuf' would be passed to FlushClient from other code paths. If the
          output buffer happened to be empty at that time, the extra data would
          never be written to the client.
      
          This is fixed by checking the total data to be written, which includes
          both pending and extra data, instead of just the pending data.
      Signed-off-by: 's avatarKeith Packard <keithp@keithp.com>
      Reviewed-by: 's avatarJulien Cristau <jcristau@debian.org>
      Backported-to-NX-by: 's avatarMike Gabriel <mike.gabriel@das-netzwerkteam.de>
      af7c3750
    • Chris Wilson's avatar
      os: Immediately queue initial WriteToClient · 645b757d
      Chris Wilson authored
       Backported from X.org:
      
       commit 9bf46610a9d20962854016032de4567974e87957
       Author: Chris Wilson <chris@chris-wilson.co.uk>
       Date:   Fri Jun 21 22:58:31 2013 +0100
      
          os: Immediately queue initial WriteToClient
      
          If we immediately put the WriteToClient() buffer into the socket's write
          queue, not only do we benefit from sending the response back to client
          earlier, but we also avoid the overhead of copying the data into our own
          staging buffer and causing extra work in the next select(). The write is
          effectively free as typically we may only send one reply per client per
          select() call, so the cost of the FlushClient() is the same.
      
          shmget10:   26400 -> 110000
          getimage10: 25000 -> 108000
      
          shmget500:   3160 -> 13500
          getimage500: 1000 -> 1010
      
          The knock-on effect is that on a mostly idle composited desktop, the CPU
          overhead is dominated by the memmove in WriteToClient, which is in turn
          eliminated by this patch.
      Reviewed-by: 's avatarAdam Jackson <ajax@redhat.com>
      Signed-off-by: 's avatarChris Wilson <chris@chris-wilson.co.uk>
      Backported-to-NX-by: 's avatarMike Gabriel <mike.gabriel@das-netzwerkteam.de>
      645b757d
  7. 17 Mar, 2017 1 commit
  8. 01 Mar, 2017 3 commits
  9. 15 Feb, 2017 1 commit
  10. 08 Feb, 2017 2 commits
  11. 06 Oct, 2016 1 commit
  12. 05 Jul, 2016 4 commits
  13. 04 Jul, 2016 1 commit
    • Mike Gabriel's avatar
      Use internal temp variable for swap macros. Make swaps/swapl type safe… · 286d8326
      Mike Gabriel authored
      Use internal temp variable for swap macros. Make swaps/swapl type safe (introducing wrong_size check at build time).
      
       While working on this changeset, various spots got discovered where
       swapl or swaps was used on a wrong type, where byte swapping calls had
       been forgotten or done on the wrong variable.
      
       This backport at least includes changes from the following X.org
       commits, listed in non-chronological order:
      
       commit 2c7c520cfe0df30f4bc3adba59d9c62582823bf8
       Author: Matt Turner <mattst88@gmail.com>
       Date:   Thu Aug 4 15:35:41 2011 -0400
      
          Use internal temp variable for swap macros
      
          Also, fix whitespace, mainly around
              swaps(&rep.sequenceNumber)
      Reviewed-by: 's avatarPeter Harris <pharris@opentext.com>
      Signed-off-by: 's avatarMatt Turner <mattst88@gmail.com>
      
       commit 9edcae78c46286baff42e74bfe26f6ae4d00fe01
       Author: Matt Turner <mattst88@gmail.com>
       Date:   Wed Sep 21 17:14:16 2011 -0400
      
          Use correct swap{l,s} (or none at all for CARD8)
      
          Swapping the wrong size was never caught because swap{l,s} are macros.
      
          It's clear in the case of Xext/xres.c, that the author believed
          client_major/minor to be CARD16 from looking at the code in the first
          hunk.
      
          v2: dmx.c fixes from Keith.
      Reviewed-by: 's avatarPeter Harris <pharris@opentext.com>
      Signed-off-by: 's avatarMatt Turner <mattst88@gmail.com>
      
       commit dab064fa5e0b1f5c67222562ad5367005832cba1
       Author: Andrea Canciani <ranma42@gmail.com>
       Date:   Tue Nov 2 20:10:32 2010 +0100
      
          render: Fix byteswapping of gradient stops
      
          The function swapStops repeatedly swaps the color components as
          CARD16, but incorrectly steps over them as if they were CARD32.
      
          This causes half of the stops not to be swapped at all and some
          unrelated data be swapped instead.
      Signed-off-by: 's avatarAndrea Canciani <ranma42@gmail.com>
      Reviewed-by: 's avatarSoren Sandmann <sandmann@daimi.au.dk>
      Reviewed-by: 's avatarJulien Cristau <jcristau@debian.org>
      Signed-off-by: 's avatarKeith Packard <keithp@keithp.com>
      
       commit 54770c980cd2b91a8377f975a58ed69def5cfa42
       Author: Matt Turner <mattst88@gmail.com>
       Date:   Tue Aug 16 16:59:07 2011 -0400
      
          Cast char* buffers to swap functions
      Reviewed-by: 's avatarPeter Harris <pharris@opentext.com>
      Signed-off-by: 's avatarMatt Turner <mattst88@gmail.com>
      
       commit 6844bd2e63490870bab3c469eec6030354ef2865
       Author: Alan Coopersmith <alan.coopersmith@sun.com>
       Date:   Wed Jan 9 19:52:00 2008 -0800
      
          More Xv extension byte swapping fixes
      
       commit e46f6ddeccd082b2d507a1e8b57ea30e6b0a2c83
       Author: Michel Dänzer <michel@tungstengraphics.com>
       Date:   Wed Jan 16 14:24:22 2008 +0100
      
          Yet another Xv extension byte swapping fix.
      286d8326
  14. 02 Jul, 2016 3 commits
  15. 01 Jun, 2016 1 commit
  16. 28 Dec, 2015 2 commits
    • Mike Gabriel's avatar
      Clear header file namespace separation (<X11/...> vs. <nx-X11/...>). · 433d8186
      Mike Gabriel authored
       In the process of building nxagent against more and more system-wide installed
       X.org libraries, we come to the limit of including structs from this (bundled
       nx-X11) and that (system-wide X.Org) library.
      
       This commit introduces a clear namespace separation of headers provided by
       nx-X11 and headers provided by X.Org. This approach is only temporary as we
       want to drop all nx-X11 bundled libraries from nx-libs.
      
       However, for a while we need to make this separation clear and also ship
       some reduced fake X.Org headers that avoid pulling in libX* and libNX_X*
       symbols at the same time.
      
       This patch has been tested on Debian jessie and unstable and requires no
       overall testing on various distros and distro versions, as we finally will
       drop all libNX_X* libraries and build against X.org's client libs.
      
       For now, this hack eases our development / cleanup process.
      433d8186
    • Keith Packard's avatar
      Replace 'pointer' type with 'void *' · 68dd0b52
      Keith Packard authored
       This lets us stop using the 'pointer' typedef in Xdefs.h as 'pointer'
       is used throughout the X server for other things, and having duplicate
       names generates compiler warnings.
      Signed-off-by: 's avatarKeith Packard <keithp@keithp.com>
      Reviewed-by: 's avatarEric Anholt <eric@anholt.net>
       Rebased against NX: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
      68dd0b52
  17. 10 Oct, 2011 1 commit