1. 07 May, 2021 1 commit
  2. 06 May, 2021 2 commits
  3. 05 May, 2021 24 commits
  4. 04 May, 2021 4 commits
    • Michel Dänzer's avatar
      meson: Add udev_dir option · c5943cd0
      Michel Dänzer authored
      Same as in gnome-settings-daemon, allows overriding where to install
      udev rules files.
      
      Part-of: <!1844>
      c5943cd0
    • verdre's avatar
      clutter/paint-volume: Union paint volumes correctly using Graphene · cc912614
      verdre authored
      Since commit d2f8a306 we use Graphene to union paint volumes, it
      turns out a quite severe issue snuck in during review of that MR though:
      Unioned paint volumes (so paint volumes of any actors with children) now
      have negative heights. Once projected to 2d coordinates they luckily are
      correct again, which is why everything is still working.
      
      The problem is that obvious once looking closer: For the y coordinates
      of the unioned paint volume we confused the maximum and the minimum
      points and simply used the wrong coordinates to create the unioned paint
      volume.
      
      Part-of: <!1827>
      cc912614
    • Sebastian Keller's avatar
      clutter/pick-stack: Use exclusive bottom/right box borders when picking · a7c4e8ce
      Sebastian Keller authored
      The graphene functions used by clutter for picking assume that boxes are
      inclusive in both there start and end coordinates, so picking at y
      coordinate 32 for an actor with the height 32 placed at y coordinate 0
      would still be considered a hit. This however is wrong as 32 is the
      first position that is not in the actor anymore.
      
      Usually this would not be much of a problem, because motion events are
      rarely ever at exactly these borders and even if they are there will be
      another motion event soon after. But since actors in gnome-shell usually
      are aligned with the pixel grid and on X11 enter/leave events are
      generated by the X server at integer coordinates, this case is much
      more likely for those.
      
      This can cause issues with Firefox which when using client side
      decorations, still requests MWM_DECOR_BORDER via _MOTIF_WM_HINTS to have
      mutter draw a border + shadow. This means that the Firefox window even
      when using CSD is still reparented. For such windows we receive among
      others XI_RawMotion and XI_Enter events, but no XI_Motion events. And
      the raw motion events are discarded after an enter event, because that
      sets has_pointer_focus to TRUE in MetaSeatX11. So when moving the cursor
      from the panel to a maximized Firefox window the last event clutter
      receives is the enter event at exactly integer coordinates. Since the
      panel is 32px tall and the generated enter event is at y position 32,
      the picking code will pick a panel actor and the focus will remain on it
      as long as the cursor does not leave the Firefox window.
      
      Fix this by excluding the bottom and right border of a box when picking.
      
      Fixes gnome-shell#4041
      
      Part-of: <!1842>
      a7c4e8ce
    • Rafael Fontenelle's avatar
      cf76e694
  5. 30 Apr, 2021 3 commits
    • Robert Mader's avatar
      wayland/data-device: Clear existing data device resource from list · 96f2da9f
      Robert Mader authored
      Compositor behaviour when calling `wl_data_device_manager_get_data_device`
      for the same seat multiple times is not very clearly defined in
      the spec and both Mutter and Weston currently don't handle
      the DnD case properly.
      
      While Weston handles DnD only for the last created data device,
      Mutter, because of some internal reshuffling, ends up toggling
      between two devices.
      
      Properly handling this case requires some bigger changes. So
      in order to behave predictable and in line with Weston,
      only take the last created data device into account while
      still keeping the previous created ones around.
      
      The main affect client here is Firefox, which gets very
      confused by the toggling behaviour and becomes more stable
      with this patch.
      
      Part-of: <!1841>
      96f2da9f
    • Jonas Ådahl's avatar
      backend/native: Add udev rule to ignore vkms devices · 8989c42d
      Jonas Ådahl authored
      Virtual Kernel Mode Setting (vkms) is a virtual /dev/dri/card* device
      not backed by any actual hardware. It's intended for testing purposes,
      e.g. to run tests suites with a reproducable setup, or in continuous
      integration pipelines.
      
      Currently mutter don't have any tests that can run on top of vkms, but
      will eventually get that. To prepare for the ability to do that, and
      having said kernel module loaded without causing wierd issues with any
      active session, add an udev rule that tells mutter to ignore any vkms
      device.
      
      Otherwise, when vkms is loaded, mutter would detect it, assume it's a
      regular monitor, configure it as such, thus add a region of the stage
      that ends up nowhere, which isn't very helpful. It might also conflict
      with running actual tests that need to interact with vkms if the active
      session has taken control of it.
      
      Part-of: <!1740>
      8989c42d
    • Jonas Ådahl's avatar
      udev: Move device tag detection into helper · 4af0f056
      Jonas Ådahl authored
      Part-of: <!1740>
      4af0f056
  6. 29 Apr, 2021 4 commits
  7. 27 Apr, 2021 2 commits