1. 02 Mar, 2019 2 commits
  2. 03 Feb, 2019 1 commit
    • Kevin Brace's avatar
      Add 24-bit color support to exaGetPixmapFirstPixel · af63efe4
      Kevin Brace authored
      It appears that people who developed EXA forgot that there used to be
      graphics devices that used 24-bits (3 bytes) instead of 32-bits (4 bytes)
      in order to display one pixel. The lack of 24-bit color support inside
      exaGetPixmapFirstPixel causes SiS 6326 to crash when running Xfce since
      SiS 6326 does not support 32-bit color.
      Signed-off-by: Kevin Brace's avatarKevin Brace <kevinbrace@gmx.com>
  3. 12 Feb, 2018 11 commits
    • Mario Kleiner's avatar
      glx: Only assign 8 bpc fbconfigs for composite visuals. · 56547b19
      Mario Kleiner authored
      Commit 91c42093 ("glx: Duplicate relevant fbconfigs for
      compositing visuals") adds many new depth 32 fbconfigs as
      composite visuals. On a X-Screen running at depth 24, this
      also adds bgra 10-10-10-2 fbconigs, as they also have
      config.rgbBits == 32, but these are not displayable on a
      depth 24 screen, leading to visually corrupted desktops
      under some compositors, e.g., fdo bug 104597 "Compton
      weird colors" when running compton with
      "compton --backend glx".
      Be more conservative for now and only select fbconfigs with
      8 bpc red, green, blue components for composite visuals.
      Fixes: 91c42093 ("glx: Duplicate relevant fbconfigs for
                            compositing visuals")
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104597
      Signed-off-by: Mario Kleiner's avatarMario Kleiner <mario.kleiner.de@gmail.com>
      Reviewed-by: default avatarThomas Hellstrom <thellstrom@vmware.com>
      Reviewed-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      (cherry picked from commit bebcc847)
    • Lyude Paul's avatar
      xwayland: Don't process cursor warping without an xwl_seat · e96bd477
      Lyude Paul authored
      Unfortunately, on my machine Xwayland immediately crashes when I try to
      start it. gdb backtrace:
       #0  0x00007ffff74f0e79 in wl_proxy_marshal () from target:/lib64/libwayland-client.so.0
       #1  0x0000000000413172 in zwp_confined_pointer_v1_destroy (zwp_confined_pointer_v1=0x700000000)
           at hw/xwayland/Xwayland@exe/pointer-constraints-unstable-v1-client-protocol.h:612
       #2  0x0000000000418bc0 in xwl_seat_destroy_confined_pointer (xwl_seat=0x8ba2a0)
           at /home/lyudess/Projects/xserver/hw/xwayland/xwayland-input.c:2839
       #3  0x0000000000418c09 in xwl_seat_unconfine_pointer (xwl_seat=0x8ba2a0)
           at /home/lyudess/Projects/xserver/hw/xwayland/xwayland-input.c:2849
       #4  0x0000000000410d97 in xwl_cursor_confined_to (device=0xa5a000, screen=0x8b9d80, window=0x9bdb70)
           at /home/lyudess/Projects/xserver/hw/xwayland/xwayland.c:328
       #5  0x00000000004a8571 in ConfineCursorToWindow (pDev=0xa5a000, pWin=0x9bdb70, generateEvents=1,
           confineToScreen=0) at /home/lyudess/Projects/xserver/dix/events.c:900
       #6  0x00000000004a94b7 in ScreenRestructured (pScreen=0x8b9d80)
           at /home/lyudess/Projects/xserver/dix/events.c:1387
       #7  0x0000000000502386 in RRScreenSizeNotify (pScreen=0x8b9d80)
           at /home/lyudess/Projects/xserver/randr/rrscreen.c:160
       #8  0x000000000041a83c in update_screen_size (xwl_output=0x8e7670, width=3840, height=2160)
           at /home/lyudess/Projects/xserver/hw/xwayland/xwayland-output.c:203
       #9  0x000000000041a9f0 in apply_output_change (xwl_output=0x8e7670)
           at /home/lyudess/Projects/xserver/hw/xwayland/xwayland-output.c:252
       #10 0x000000000041aaeb in xdg_output_handle_done (data=0x8e7670, xdg_output=0x8e7580)
           at /home/lyudess/Projects/xserver/hw/xwayland/xwayland-output.c:307
       #11 0x00007ffff50e9d1e in ffi_call_unix64 () at ../src/x86/unix64.S:76
       #12 0x00007ffff50e968f in ffi_call (cif=<optimized out>, fn=<optimized out>, rvalue=<optimized out>,
           avalue=<optimized out>) at ../src/x86/ffi64.c:525
       #13 0x00007ffff74f3d8b in wl_closure_invoke () from target:/lib64/libwayland-client.so.0
       #14 0x00007ffff74f0928 in dispatch_event.isra () from target:/lib64/libwayland-client.so.0
       #15 0x00007ffff74f1be4 in wl_display_dispatch_queue_pending () from target:/lib64/libwayland-client.so.0
       #16 0x00007ffff74f200b in wl_display_roundtrip_queue () from target:/lib64/libwayland-client.so.0
       #17 0x0000000000418cad in InitInput (argc=12, argv=0x7fffffffd9c8)
           at /home/lyudess/Projects/xserver/hw/xwayland/xwayland-input.c:2867
       #18 0x00000000004a20e3 in dix_main (argc=12, argv=0x7fffffffd9c8, envp=0x7fffffffda30)
           at /home/lyudess/Projects/xserver/dix/main.c:250
       #19 0x0000000000420cb2 in main (argc=12, argv=0x7fffffffd9c8, envp=0x7fffffffda30)
          at /home/lyudess/Projects/xserver/dix/stubmain.c:34
      This appears to be the result of xwl_cursor_confined_to() and
      xwl_screen_get_default_seat(). While not against protocol, mutter ends
      up sending xdg_output before wl_seat. xwl_screen_get_default_seat()
      makes the naïve assumption that we always have a valid seat, we end up
      returning a pointer to the empty list itself instead of an actual seat
      and causing ourselves to segfault.
      So, actually return NULL in xwl_screen_get_default_seat() if the seat
      list is empty, and skip any pointer confinement processing in
      xwl_cursor_confined_to() when we don't have a seat setup yet.
      Signed-off-by: Lyude Paul's avatarLyude Paul <lyude@redhat.com>
      Reviewed-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      (cherry picked from commit 98edb9a3)
    • Alex Goins's avatar
      randr: Fix rotation check in ProcRRSetScreenSize() · 61d3f568
      Alex Goins authored
      ProcRRSetScreenSize() does bounds checking to ensure that none of the CRTCs have
      a viewport that extends beyond the new screen size. In doing so, it accounts for
      if the CRTC is rotated 90 or 270 degrees, swapping width and height.
      However, it does so by testing if crtc->rotation is equal to RR_Rotate_90 or
      RR_Rotate_270. crtc->rotation is a bit mask, and it includes reflection as well
      as rotation. If a CRTC is reflected as well as rotated, it will incorrectly fail
      this test, resulting in incorrect dimensions being used to verify the validity
      of the new screen size. In some cases, this can cause valid uses of
      ProcRRSetScreenSize() to fail with BadMatch.
      This patch fixes the issue by testing that the bits RR_Rotate_90 or
      RR_Rotate_270 are set, rather than testing for equality.
      Signed-off-by: Alex Goins's avatarAlex Goins <agoins@nvidia.com>
      Reviewed-by: Michel Dänzer's avatarMichel Dänzer <michel.daenzer@amd.com>
      (cherry picked from commit 6b26a7bd)
    • Jeff Smith's avatar
      glamor: tidy up some gradient color formulas · cb908a78
      Jeff Smith authored
      - Avoid some needlessly complex equations for calculating the color at a
        point in a gradient field.
      - Avoid calculating certain values multiple times.
      - Use similar variable names across the two versions of the get_color
        function where practical.
      Signed-off-by: default avatarJeff Smith <whydoubt@gmail.com>
      Reviewed-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      (cherry picked from commit ff410c56)
    • Jeff Smith's avatar
      glamor: remove unused variables in linear gradient shader · b41bb814
      Jeff Smith authored
      Signed-off-by: default avatarJeff Smith <whydoubt@gmail.com>
      Reviewed-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      (cherry picked from commit 3bd17dff)
    • Jeff Smith's avatar
      glamor: fix no-reflect case for gradients · c715645c
      Jeff Smith authored
      When compositing a no-reflect gradient, 'before' the gradient is empty,
      but 'after' the gradient is padded with the final color.  Both sides are
      supposed to be empty.
      This is fixed by moving the virtual stops to match the first and last
      client-supplied stops for no-reflect gradients, then causing everything
      'before' the initial virtual stop and 'after' the final virtual stop to
      emit rgba(0,0,0,0).  This does not impact gradients using the other
      reflect modes.
      Signed-off-by: default avatarJeff Smith <whydoubt@gmail.com>
      Reviewed-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      (cherry picked from commit 5815c7b5)
    • Jeff Smith's avatar
      glamor: fix repeat-reflect case in linear gradient shader · 38e6fb75
      Jeff Smith authored
      If _pt_distance is negative, it causes the final distance to be negative
      in the repeat-reflect case.  Moving the scaling by _pt_distance earlier
      avoids this problem, and simplifies some equations as a bonus.
      Bugzilla: https://bugs.freedesktop.org/98508
      Signed-off-by: default avatarJeff Smith <whydoubt@gmail.com>
      Reviewed-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      (cherry picked from commit 3e377e23)
    • Olivier Fourdan's avatar
      xwayland: remove dirty window unconditionally on unrealize · f6cd99ed
      Olivier Fourdan authored
      This is a rare occurrence of a crash in Xwayland for which I don't have
      the reproducing steps, just a core file.
      The backtrace looks as follow:
        #0  raise () from /usr/lib64/libc.so.6
        #1  abort () from /usr/lib64/libc.so.6
        #2  OsAbort () at utils.c:1361
        #3  AbortServer () at log.c:877
        #4  FatalError () at log.c:1015
        #5  OsSigHandler () at osinit.c:154
        #6  <signal handler called>
        #7  xwl_glamor_pixmap_get_wl_buffer () at xwayland-glamor.c:162
        #8  xwl_screen_post_damage () at xwayland.c:514
        #9  block_handler () at xwayland.c:665
        #10 BlockHandler () at dixutils.c:388
        #11 WaitForSomething () at WaitFor.c:219
        #12 Dispatch () at dispatch.c:422
        #13 dix_main () at main.c:287
      The crash is caused by dereferencing “xwl_pixmap->buffer” in
      xwl_glamor_pixmap_get_wl_buffer() because “xwl_pixmap” is NULL.
      Reason for this is because the corresponding pixmap is from the root
      window and xwayland is rootless by default.
      This can happen if the window was mapped, redirected, damaged and
      unredirected immediately, before the damage is processed by Xwayland.
      Make sure to remove the dirty window from the damage list on unrealize
      to prevent this from happening.
      Credit goes to Adam Jackson <ajax@nwnk.net> and Daniel Stone
      <daniel@fooishbar.org> for finding the root cause the issue.
      Signed-off-by: default avatarOlivier Fourdan <ofourdan@redhat.com>
      Reviewed-by: Daniel Stone's avatarDaniel Stone <daniels@collabora.com>
      (cherry picked from commit 3362422e)
    • Michal Srb's avatar
      os/inputthread: Force unlock when stopping thread. · 9cd243f7
      Michal Srb authored
      The inputthread is kept locked all the time while X server's VT is not active.
      If the X server is terminated while not active, it will be stuck forever in
      InputThreadFini waiting for the thread to join, but it wouldn't because it is
      Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=103782
      Signed-off-by: default avatarMichal Srb <msrb@suse.com>
      Reviewed-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      (cherry picked from commit 71348e99)
    • Peter Harris's avatar
      composite: Propagate damagedDescendants when reparented · 5c456b6e
      Peter Harris authored
      If a window that is fully covered by an automatic-redirected descendant
      (even implicitly, eg. via BackingStores) is reparented, the automatic
      updates could be broken if the new parent is not marked as having
      damaged descendants.
      Fix this issue by propagating the damagedDescendants flag whenever a
      window is reparented.
      Reviewed-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      Signed-off-by: Peter Harris's avatarPeter Harris <pharris@opentext.com>
      (cherry picked from commit d5c23b29)
    • Michel Dänzer's avatar
      xf86XvMCScreenInit: Clear pScreenPriv->dixinfo when freeing pAdapt · df319f88
      Michel Dänzer authored
      Fixes double-free later in xf86XvMCCloseScreen, which would generally
      cause fireworks.
      Reviewed-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      Signed-off-by: Michel Dänzer's avatarMichel Dänzer <michel.daenzer@amd.com>
      (cherry picked from commit 75408f53)
  4. 24 Jan, 2018 1 commit
  5. 22 Jan, 2018 11 commits
  6. 17 Jan, 2018 1 commit
  7. 20 Dec, 2017 9 commits
  8. 13 Dec, 2017 4 commits