1. 15 Apr, 2020 3 commits
    • Jonas Ådahl's avatar
      monitor-config-manager: Only use crtc transform for assignment · 43baf643
      Jonas Ådahl authored
      The CRTC level transform (i.e. not necessarily the one set on the
      hardware) is what is relevant for calculating the layout the CRTC will
      have on the stage, so only use the one that can be handled by the
      hardware for the CRTC assignment.
      
      This makes the CRTC layout valid for tiled monitors.
      
      !1199
      43baf643
    • Jonas Ådahl's avatar
      monitor: Fix tile coordinate calculation · 21b8ae10
      Jonas Ådahl authored
      Previously the tile coordinate was used to offset a CRTC scanout
      coordinate within a larger framebuffer. Since 3.36 we're always
      scanning out from (0, 0) as we always have one framebuffer per CRTC; we
      instead use the tile coordinate to calculate the coordinate the tile has
      in the stage view. Adapt calculation to fulfil this promise instead of
      the old one.
      
      This also corrects the tiled custom monitor test case.
      
      !1199
      21b8ae10
    • eyelash's avatar
      clutter: Use #mesondefine · 425a10de
      eyelash authored
      Use #mesondefine instead of manual concatenation.
      
      !1179
      425a10de
  2. 12 Apr, 2020 4 commits
  3. 11 Apr, 2020 1 commit
    • Phillip Wood's avatar
      input-settings: fix device list iteration · 3e967d73
      Phillip Wood authored
      Dereference the loop variable rather than the original list head. This
      fixes a regression introduced in 4413b86a ("backends: Replace
      ClutterDeviceManager usage in favor of ClutterSeat", 2019-10-04) which
      broke button scrolling with trackballs.
      
      Closes:#1120
      3e967d73
  4. 09 Apr, 2020 3 commits
  5. 08 Apr, 2020 13 commits
  6. 07 Apr, 2020 6 commits
    • Carlos Garnacho's avatar
      wayland/xdnd: Add error traps around Xdnd* IPC · ba341766
      Carlos Garnacho authored
      Make all of them spew criticals, except for XdndLeave as it's feasible
      to expect the window we are sending the event to did disappear in the
      way (eg. if the window is destroyed while the DnD operation is ongoing
      and the pointer is over the window).
      
      Fixes: gnome-shell#2590
      
      !1184
      ba341766
    • Jonas Tröger's avatar
      backends/native: Translate coordinates of absolute motion events · 50fa002a
      Jonas Tröger authored
      The motion events of tablets for example need to be mapped on the
      selected screen area if the input device is configured to use only a
      part of the active logical monitor.
      To achieve this behavior each motion event is transformed using the
      transformation matrix set for the input device.
      
      Closes: #1118
      50fa002a
    • Carlos Garnacho's avatar
      backends/x11: Fix access to WacomDevice · f0718c7d
      Carlos Garnacho authored
      At some point we crossed the streams... In a short timespan we had
      1f00aba9 merged, pushing WacomDevice to a common parent object,
      and dcaa45fc implementing device grouping for X11.
      
      The latter did not rely on the former, and just happened to
      merge/compile without issues, but would promptly trigger a crash
      whenever the API would be used.
      
      Drop all traces of the WacomDevice internal to MetaInputDeviceX11.
      
      !1183
      f0718c7d
    • verdre's avatar
      clutter/stage: Don't assume stage relayouts reallocate everything · e74c2e42
      verdre authored
      With the introduction of "shallow" relayouts, we are now able to enter
      allocation cycles not only at the stage but also deeper down the
      hierarchy if we know an actors allocation isn't affected by its children
      since the NO_LAYOUT flag is set.
      
      Now that means when queuing relayouts it's possible that
      `priv->needs_allocation` gets set to TRUE for some actors down the
      hierarchy, but not for actors higher up in the hierarchy. An actor tree
      where that happens could look like that:
      
      stage -> container -> container2 (NO_LAYOUT) -> textActor
      
      With that tree, if the "textActor" queues a relayout, "container2" will
      be added to the relayout hashtable of the stage and the actors "stage"
      and "container" will have `priv->needs_allocation` set to FALSE.
      
      Now if another relayout on the stage actor is queued,
      `clutter_stage_queue_actor_relayout()` currently removes all the other
      hashtable entries in favour of the stage entry, (wrongly) assuming that
      will allocate everything. It doesn't allocate everything because in the
      example above "container" has `priv->needs_allocation` set to FALSE,
      which makes clutter_actor_allocate() return early before allocating its
      children, so in the end "container2" will never get a new allocation.
      
      To fix this, stop flushing the relayout hashtable when queuing a
      stage-relayout and still add new entries to the hashtable if a stage
      relayout is already queued to make sure we still go through all the
      previously queued "shallow" relayouts. That shouldn't hurt performance,
      too, because as soon as an actor got allocated once, it doesn't need an
      allocation anymore and should bail out in clutter_actor_allocate() as
      long as it's absolute position didn't change.
      
      Fixes gnome-shell#2538
      
      !1173
      e74c2e42
    • Florian Müllner's avatar
      ci: Rebase docker image to F32 · ce64ab54
      Florian Müllner authored
      We have branched now, time for a shiny new CI image.
      
      Update the Dockerfile to:
      
       - switch to F32
       - use a single shared copr
       - drop dependencies that are now covered by builddep
       - do not include weak deps
      
      !1176
      ce64ab54
    • Jonas Ådahl's avatar
      window: Check aliveness a bit less aggressively · 8df3b21a
      Jonas Ådahl authored
      Currently we check whether a window is alive everytime it's focused.
      This means that an application that doesn't respond to the check-alive
      event during startup always showing the "application froze" dialog,
      without the user ever trying to interact with it.
      
      An example where this tends to to happen is with games, and for this
      particular scenario, it's purely an annoyance, as I never tried to
      interact with the game window in the first place, so I don't care that
      it's not responding - it's loading.
      
      To avoid these unnecessary particular "app-is-frozen" popups, remove the
      alive check from the focus function, and instead move it back to the
      "meta_window_activate_full()" call. To also trigger it slightly more
      often, also add it to the path that triggers the window focus when a
      user actively clicks on the window.
      
      This means that we currently check whether a window is alive on:
      
        * Any time the window is activated. This means e.g. alt-tab or
          selecting the window in the overview.
        * The user clicks on the window.
      
      Note that the second only works for an already focused window on
      Wayland, as on X11, we don't refocus it. This particular case isn't
      changed with this commit, as we didn't call meta_window_focus() to begin
      with here.
      
      !1182
      8df3b21a
  7. 06 Apr, 2020 5 commits
  8. 05 Apr, 2020 1 commit
  9. 03 Apr, 2020 3 commits
    • Jonas Ådahl's avatar
      window-actor: Set viewport when blitting to screencast fb · a6f94696
      Jonas Ådahl authored
      This fixes an issue where a non-maximized screen casted window would be
      stretched to fill the whole screen cast stream, instead of just the crop
      that corresponds to the current window size.
      
      !1174
      a6f94696
    • Simon McVittie's avatar
      cogl: Defend against empty or unallocated framebuffers · c389aadf
      Simon McVittie authored
      It isn't immediately obvious that this is impossible, because there's some
      "action at a distance" going on with framebuffers that have their size
      set lazily, after their textures get allocated; so let's make this a
      critical warning rather than crashing.
      
      In particular, this works around a crash when gnome-shell tries to blur a
      background that hasn't yet had any space allocated for it - which it seems
      is really an actor layout bug, but more robustness seems good to have.
      
      Workaround for <gnome-shell#2538>.
      
      !1172
      
      Signed-off-by: Simon McVittie's avatarSimon McVittie <smcv@debian.org>
      c389aadf
    • Simon McVittie's avatar
      cogl: Don't allow creating sized textures with 0 pixels · 37eda498
      Simon McVittie authored
      A texture with no pixels isn't a useful thing to have, and breaks
      assumptions elsewhere. For example, CoglFramebuffer assumes that after
      a texture has been allocated, it will have width and height both greater
      than 0.
      
      In particular, this works around a crash when gnome-shell tries to blur a
      background that hasn't yet had any space allocated for it - which it seems
      is really an actor layout bug, but more robustness seems good to have.
      
      Workaround for <gnome-shell#2538>.
      
      !1172
      
      Signed-off-by: Simon McVittie's avatarSimon McVittie <smcv@debian.org>
      37eda498
  10. 02 Apr, 2020 1 commit