1. 25 Aug, 2021 1 commit
  2. 24 Aug, 2021 3 commits
  3. 20 Aug, 2021 2 commits
  4. 19 Aug, 2021 5 commits
  5. 17 Aug, 2021 1 commit
  6. 16 Aug, 2021 2 commits
  7. 11 Aug, 2021 2 commits
  8. 12 Jul, 2021 1 commit
  9. 10 Jul, 2021 1 commit
  10. 09 Jul, 2021 1 commit
  11. 07 Jul, 2021 3 commits
    • Carlos Garnacho's avatar
      core: Be more careful around n_modes signedness · 58b606d7
      Carlos Garnacho authored
      This is returned as an integer, which we deal with as an unsigned
      integer. Deal with it as an integer all along, and skip safely
      negative values.
      
      (Cherry-picked from commit 44af2c0d)
      58b606d7
    • Carlos Garnacho's avatar
      backends/native: Fix logic error · 8d4b5c02
      Carlos Garnacho authored
      ClutterInputDevice's get_group_n_modes() vfunc is meant to return
      -1 for groups that are out of the known range, not within. Fix the
      early return condition, and let the native backend return correctly
      the number of modes for the given group.
      
      (Cherry-picked from commit 841ee0a2)
      8d4b5c02
    • Christoph Trassl's avatar
      input-mapper: Fix (libwacom) tablet mapping to monitor · fd8aee88
      Christoph Trassl authored
      Remove early return when using libwacom, so guess_candidates returns
      monitor candidates for those devices, too.
      
      Additionally, changing the output of an input requires removing the
      input from its current output first.
      
      (Cherry picked from commit 4b0fd9ab)
      fd8aee88
  12. 06 Jul, 2021 2 commits
  13. 02 Jul, 2021 1 commit
    • Jonas Ådahl's avatar
      kms: Gracefully handle page flipping direct scanouts failing · b9684c7f
      Jonas Ådahl authored
      When drmModePageFlip() or drmModeAtomicCommit() unexpectedly failed (e.g.
      ENOSPC, which has been seen in the wild), this failure was not handled
      very gracefully. The page flip listener for the scanout was left in the
      MetaKmsUpdate, meaning when the primary plane composition was later page
      flipped, two page flip listeners were added, one for the primary plane,
      and one for the scanout. This caused the 'page-flipped' event to be
      handled twice, the second time being fatal.
      
      Handle this by making 'no-discard' listener flag be somewhat reversed,
      and say 'drop-on-error', and then drop all 'drop-on-error' listeners
      when a MetaKmsUpdate failed to be processed.
      
      Also for a "preserve" flagged update, don't ever trigger "discard"
      callbacks just yet, as preserved updates are used again for the primary
      plane composition, in order to not miss e.g. CRTC gamma updates, or
      cursor plane updates, which were added separately.
      
      Closes: #1809
      Part-of: <!1910>
      
      
      (cherry picked from commit 1d792087)
      b9684c7f
  14. 15 Jun, 2021 1 commit
  15. 13 Jun, 2021 2 commits
  16. 10 Jun, 2021 12 commits
    • Florian Müllner's avatar
      Tag release 40.2 · d4269932
      Florian Müllner authored
      Update NEWS.
      d4269932
    • Florian Müllner's avatar
      clutter/actor: Don't emit focus signals during destruction · 57ae8530
      Florian Müllner authored
      We rightfully unset the stage focus when the focus actor is destroyed,
      which in turns results in the ClutterActor::-key-focus-out signal being
      emitted on an actor that is no longer fully valid.
      
      Avoid that emission, so consumers don't have to deal with half-disposed
      actors in their handler.
      
      GNOME/gnome-shell#4324
      
      Part-of: <GNOME/mutter!1884>
      (cherry picked from commit dce3aa5c)
      57ae8530
    • Jonas Ådahl's avatar
      udev-rules: Use ID_PATH to detect vkms · 65ab439f
      Jonas Ådahl authored
      Matching against the driver doesn't seem to work, and isn't showing in
      udevadm info. Switch to checking ID_PATH; hopefully it won't change too
      often.
      
      Part-of: <!1892>
      (cherry picked from commit c3feb835)
      65ab439f
    • Jonas Ådahl's avatar
      native: Properly ignore devices on init too · 11e81b73
      Jonas Ådahl authored
      There is an udev rule marking whether a device should be ignored by
      mutter or not, but it was only respected on hotplug events not on init,
      partly defeating its purpose. Fix this.
      
      Part-of: <GNOME/mutter!1892>
      (cherry picked from commit c0758c63)
      11e81b73
    • Carlos Garnacho's avatar
      wayland: Make implicit grabs during popups be owner_events=TRUE · 4f997438
      Carlos Garnacho authored
      Getting crossing events is necessary between client surfaces while
      there is a popup grab in effect (e.g. allow press-drag-release in
      menus), we should only stick with the focus surface while the pointer
      is outside any client surface.
      
      This partially undoes commit 79050004 (or, at least, mutter no
      longer fixes the bug it claimed to fix). This will be addressed in
      gtk4.
      
      Part-of: <GNOME/mutter!1885>
      (cherry picked from commit fcdda41d)
      4f997438
    • Jonas Ådahl's avatar
      renderer-native: Don't attempt to queue mode sets on non-onscreen views · 9eab5320
      Jonas Ådahl authored
      A view is only a 'CoglOnscreen' if it ends up on a CRTC, thus needs a
      mode. Other views are for virtual monitors, and require no mode setting,
      so exclude them from the pending mode set list.
      
      This avoids a dead lock when we'll be waiting indefinitely for mode
      setting on a virtual monitor.
      
      Part-of: <GNOME/mutter!1891>
      (cherry picked from commit 8478db96)
      9eab5320
    • Jonas Ådahl's avatar
      screen-cast: Clean up sessions on 'prepare-shutdown' · 950edcdf
      Jonas Ådahl authored
      However, leave the remote desktop screen cast sessions to the remote
      desktop manager to close.
      
      Part-of: <GNOME/mutter!1891>
      (cherry picked from commit 2a81c6d3)
      950edcdf
    • Daniel van Vugt's avatar
      clutter/stage-cogl: Ensure queued_redraw_clip is not empty · fc0b9174
      Daniel van Vugt authored
      When using `CLUTTER_PAINT=damage-region` highlighting was conspicuously
      absent during fullscreen animations like entering or leaving the
      overview. That was because `queued_redraw_clip` was empty, because it
      had been initialized from `redraw_clip == NULL` (full stage redraw).
      
      Now we paint the damage region as the full view (which it is) instead
      of nothing at all.
      
      Part-of: <GNOME/mutter!1890>
      (cherry picked from commit 97c6a68b)
      fc0b9174
    • Daniel van Vugt's avatar
      cogl/winsys-glx: Request 2 stencil bits · 88b9a506
      Daniel van Vugt authored
      Just like we do on EGL. Two bits are required because
      `cogl-clip-stack-gl.c` needs each stencil buffer element to be able to
      count from 0 to 2.
      
      This mistake probably went unnoticed because:
      
       * Drivers usually provide more than 1 anyway; and
      
       * Optimizations in `cogl-clip-stack-gl.c` avoid calling the code that
         needs to count past 1 in most cases.
      
      Part-of: <!1873>
      (cherry picked from commit 936696af)
      88b9a506
    • Daniel van Vugt's avatar
      cogl/clip-stack-gl: Set glStencilMask correctly for clip regions · 5cde54f8
      Daniel van Vugt authored
      Previously we were using a mask of 0x1 for the lifetime of the stencil.
      This was wrong for two reasons:
      
        * The intersection algorithm needs to count up to a maximum 2, so a
          mask of 1 would clamp to 1 instead. Then decrementing all pixels
          resulted in all pixels being zero even though we want some to be 1.
          So the stencil then blocked some color buffer pixels being rendered.
      
        * The lifetime of the mask was too long. By leaving it non-zero at
          the end of the function we could accidentally end up modifying the
          stencil contents during our later color buffer paints.
      
      This fixes faulty rendering of some actors seen in gnome-shell with
      test case: `env COGL_DEBUG=stencilling`
      
      Part-of: <GNOME/mutter!1873>
      (cherry picked from commit 216bb7f9)
      5cde54f8
    • Daniel van Vugt's avatar
      cogl/clip-stack-gl: Set glStencilMask correctly for clip rectangles · 12f127db
      Daniel van Vugt authored
      Previously we were using a mask of 0x1 for the lifetime of the stencil.
      This was wrong for two reasons:
      
        * The intersection algorithm needs to count up to a maximum 2, so a
          mask of 1 would clamp to 1 instead. Then decrementing all pixels
          resulted in all pixels being zero even though we want some to be 1.
          So the stencil then blocked some color buffer pixels being rendered.
      
        * The lifetime of the mask was too long. By leaving it non-zero at
          the end of the function we could accidentally end up modifying the
          stencil contents during our later color buffer paints.
      
      This fixes missing rendering of some actors seen in gnome-shell with
      test case: `env COGL_DEBUG=stencilling CLUTTER_PAINT=disable-clipped-redraws`
      
      Part-of: <GNOME/mutter!1873>
      (cherry picked from commit 5991f53c)
      12f127db
    • Daniel van Vugt's avatar
      cogl: Add new option COGL_DEBUG=stencilling to disable optimizations · 52b7ea2b
      Daniel van Vugt authored
      This means stencilling every clip stack entry even when stencilling could
      be skipped. This visibly reveals some bugs in the stencilling logic.
      
      Part-of: <GNOME/mutter!1873>
      (cherry picked from commit c3d64cc0)
      52b7ea2b