1. 24 May, 2019 1 commit
    • Carlos Garnacho's avatar
      backends/x11: Do not reload keymap on new keyboard notifications · b01edc22
      Carlos Garnacho authored
      XkbNewKeyboardNotify informs the client that there is a new keyboard
      driving the VCK. It is essentially meant to notify that the keyboard
      possibly has a different range of HW keycodes and/or a different
      geometry.
      
      But the translation of those keycodes remain the same, and we don't
      do range checks or geometry checks (beyond using KEY_GRAVE as "key
      under Esc", but that is hardly one). It seems we can avoid the
      busywork that is releasing all our passive grabs, reloading the keymap
      and regenerating the keycombos and restoring the passive grabs.
      
      Closes: #398
      b01edc22
  2. 06 Jan, 2019 1 commit
  3. 30 Nov, 2018 1 commit
    • Carlos Garnacho's avatar
      backends/x11: Flush connection after ungrab · 262a3ecb
      Carlos Garnacho authored
      Modal ungrabs may be followed by other clients trying to grab themselves,
      flush the connection so we ensure the right order of events on the Xserver
      side.
      
      An example of this is js/ui/modalDialog.js in gnome-shell, as the alt-F2
      dialog may launch X11 clients trying to grab themselves, commit a40daa3c22
      in gnome-shell handled the case and added a gdk_display_sync() call to
      ensure no grab existed at the time of executing.
      
      This commit aims to achieve the same built in MetaBackend. A full sync
      seems excessive though, as we just need to make sure the server got the
      messages queued before the other side tries to grab, a XFlush seems
      sufficient for this.
      262a3ecb
  4. 06 Nov, 2018 1 commit
    • Jonas Ådahl's avatar
      Clean up include macros mess · 2f4a68c8
      Jonas Ådahl authored
      The order and way include macros were structured was chaotic, with no
      real common thread between files. Try to tidy up the mess with some
      common scheme, to make things look less messy.
      2f4a68c8
  5. 13 Aug, 2018 1 commit
    • Jeffrey Smith's avatar
      backends/x11: Improve grab-device clock updates · 1bfa2092
      Jeffrey Smith authored
      meta_backend_x11_grab_device is performing X server clock comparison
      using the MAX macro, which comes down to a simple greater-than.
      
      Use XSERVER_TIME_IS_BEFORE, which is a better macro for X server
      clock comparisons, as it accounts for 32-bit wrap-around.
      
      !174
      1bfa2092
  6. 06 Jul, 2018 3 commits
  7. 07 May, 2018 1 commit
    • Florian Müllner's avatar
      build: Introspect some more types · 7655e09d
      Florian Müllner authored
      While MetaStage, MetaWindowGroup and MetaDBusDisplayConfigSkeleton don't
      appear explicitly in the public API, their gtypes are still exposed via
      meta_get_stage_for_screen(), meta_get_*window_group_for_screen() and
      MetaMonitorManager's parent type. Newer versions of gjs will warn about
      undefined properties if it encounters a gtype without introspection
      information, so expose those types to shut up the warnings.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=781471
      7655e09d
  8. 16 Apr, 2018 2 commits
  9. 07 Feb, 2018 1 commit
  10. 01 Feb, 2018 1 commit
    • Jeffrey Smith's avatar
      backends/x11: Fix time-comparison bug causing hang · 6be56de1
      Jeffrey Smith authored
      A comparison in translate_device_event() does not account for the fact
      that X's clock wraps about every 49.7 days.  When triggered, this causes
      an unresponsive GUI.
      
      Replace simple less-than comparison with XSERVER_TIME_IS_BEFORE macro,
      which accounts for the wrapping of X's clock.
      
      Closes: #12
      6be56de1
  11. 13 Oct, 2017 1 commit
  12. 21 Aug, 2017 3 commits
  13. 07 Apr, 2017 1 commit
  14. 07 Mar, 2017 1 commit
  15. 06 Mar, 2017 1 commit
  16. 21 Feb, 2017 1 commit
  17. 15 Feb, 2017 2 commits
  18. 25 Jan, 2017 4 commits
  19. 09 Sep, 2016 1 commit
  20. 03 Aug, 2016 1 commit
  21. 20 Jul, 2016 4 commits
    • Jonas Ådahl's avatar
      Introduce regional stage rendering · 566c28bd
      Jonas Ådahl authored
      Add support for drawing a stage using multiple framebuffers each making
      up one part of the stage. This works by the stage backend
      (ClutterStageWindow) providing a list of views which will be for
      splitting up the stage in different regions.
      
      A view layout, for now, is a set of rectangles. The stage window (i.e.
      stage "backend" will use this information when drawing a frame, using
      one framebuffer for each view. The scene graph is adapted to explictly
      take a view when painting the stage. It will use this view, its
      assigned framebuffer and layout to offset and clip the drawing
      accordingly.
      
      This effectively removes any notion of "stage framebuffer", since each
      stage now may consist of multiple framebuffers. Therefore, API
      involving this has been deprecated and made no-ops; namely
      clutter_stage_ensure_context(). Callers are now assumed to either
      always use a framebuffer reference explicitly, or push/pop the
      framebuffer of a given view where the code has not yet changed to use
      the explicit-buffer-using cogl API.
      
      Currently only the nested X11 backend supports this mode fully, and the
      per view framebuffers are all offscreen. Upon frame completion, it'll
      blit each view's framebuffer onto the onscreen framebuffer before
      swapping.
      
      Other backends (X11 CM and native/KMS) are adapted to manage a
      full-stage view. The X11 CM backend will continue to use this method,
      while the native/KMS backend will be adopted to use multiple view
      drawing.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=768976
      566c28bd
    • Jonas Ådahl's avatar
      backends: Make clutter stage resizing more explicit · 55726e78
      Jonas Ådahl authored
      The stage resizing was placed in the generic backend, which was only
      run on certain configurations (when running nested or using the native
      backend). This commits makes the resizing more explicit thus more
      obvious.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=768976
      55726e78
    • Jonas Ådahl's avatar
      Introduce MetaRenderer · a54042e9
      Jonas Ådahl authored
      MetaRenderer is meant to be the object responsible for rendering the
      scene graph. It will contain the logic related to the cogl winsys
      backend, the clutter backend, and the clutter stage window.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=768976
      a54042e9
    • Jonas Ådahl's avatar
      Make mutter manage its own clutter backends · 90de5217
      Jonas Ådahl authored
      Introduce two new clutter backends: MetaClutterBackendX11 and
      MetaClutterBackendNative. They are so far only wrap ClutterBackendX11
      and ClutterBackendEglNative respectively, but the aim is to move things
      from the original clutter backends when needed.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=768976
      90de5217
  22. 27 Jun, 2016 1 commit
    • Rui Matos's avatar
      compositor: Handle GL video memory purged errors · 7f6bcea3
      Rui Matos authored
      Emit a signal so that interested parties can recreate their FBOs and
      queue a full scene graph redraw to ensure we don't end up showing
      graphical artifacts.
      
      This relies on the GL driver supporting the
      NV_robustness_video_memory_purge extension and cogl creating a
      suitable GL context. For now we only make use of it with the X backend
      since the only driver with which this is useful is NVIDIA.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=739178
      7f6bcea3
  23. 23 Oct, 2015 1 commit
    • Alberts Muktupāvels's avatar
      backend-x11: Ensure the Xkb group index remains properly set · 2857fdbd
      Alberts Muktupāvels authored
      Ubuntu ships a patch in the X server that makes the group switch
      keybindings only work on key release, i.e. the X server internal group
      locking happens on key release which means that mutter gets the
      XKB_KEY_ISO_Next_Group key press event, does its XLockGroup() call
      with a new index and then, on key release, the X server moves the
      index further again.
      
      We can work around this without affecting our behavior in unpatched X
      servers by doing a XLockGroup() every time we're notified of the
      locked group changing if it doesn't match what we requested.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=756543
      2857fdbd
  24. 25 Sep, 2015 1 commit
  25. 24 Sep, 2015 1 commit
  26. 13 Sep, 2015 1 commit
  27. 07 Sep, 2015 1 commit
  28. 03 Sep, 2015 1 commit