mutter:wip/garnacho/touchpad-gestures

Last commit made on 2015-08-10
Get this branch:
git clone -b wip/garnacho/touchpad-gestures https://git.launchpad.net/mutter

Branch merges

Branch information

Name:
wip/garnacho/touchpad-gestures
Repository:
lp:mutter

Recent commits

3b17f67... by Carlos Garnacho

wayland: Implement wl_pointer_gestures

The global wl_pointer_gestures object is now created, effectively
bridging pinch/swipe gestures with clients, so they're now
accessible to clients implementing the protocol.

0db347d... by Carlos Garnacho

wayland: Implement the wl_pointer_gesture_pinch interface

The pinch gesture resources are part of the MetaWaylandPointerClient, which
will be used during the propagation of CLUTTER_TOUCHPAD_PINCH events.

6963dbe... by Carlos Garnacho

wayland: Implement the wl_pointer_gesture_swipe interface

The swipe gesture resources are part of the MetaWaylandPointerClient, which
will be used during the emission of CLUTTER_TOUCHPAD_SWIPE events.

2b96fc7... by Carlos Garnacho

wayland: Add gestures protocol XML

109389a... by Jonas Ã…dahl

MetaWaylandPointer: Put client resources in its own struct

Instead of moving around all the bound pointer resources for a client
when changing focus, keep all the resources bound by a client in a per
client struct, and track the focus by having a pointer to the current
active pointer client struct instance.

This will simplify having wl_pointer extensinos sharing the pointer
focus of the wl_pointer by only having to add them to the pointer
client.

https://bugzilla.gnome.org/show_bug.cgi?id=744104

b0b08d5... by lantw44

build: Fix return value in meta-sync-ring.c

https://bugzilla.gnome.org/show_bug.cgi?id=753380

070cd27... by Adel Gadllah <email address hidden>

wayland: Only call frame callbacks when a surface gets drawn on screen

The spec says:
"A server should avoid signalling the frame callbacks if the surface is not
visible in any way, e.g. the surface is off-screen, or completely obscured
by other opaque surfaces."

We actually do have the information to do that but we are always calling
the frame callbacks in after_stage_paint. So fix that to only call when
when the surface gets drawn on screen.

https://bugzilla.gnome.org/show_bug.cgi?id=739163

9df6cda... by Aaron Plattner

compositor: Fix GL_EXT_x11_sync_object race condition

The compositor maintains a ring of shared fences with the X server in order to
properly synchronize rendering between the X server and the compositor's GPU
channel. When all of the fences have been used, the compositor needs to reset
one so that it can be reused. It does this by first waiting on the CPU for the
fence to become triggered, and then sending a request to the X server to reset
the fence.

If the compositor's GPU channel is busy processing other work (e.g. the desktop
switcher animation), then the X server may process the reset request before the
GPU has consumed the fence. This causes the GPU channel to hang.

Fix the problem by having the compositor's GPU channel trigger its own fence
after waiting for the X server's fence. Wait for that fence on the CPU before
sending the reset request to the X server. This ensures that the GPU has
consumed the X11 fence before the server resets it.

Signed-off-by: Aaron Plattner <email address hidden>

https://bugzilla.gnome.org/show_bug.cgi?id=728464

39763d4... by Rui Matos

compositor: Add support for GL_EXT_x11_sync_object

If GL advertises this extension we'll use it to synchronize X with GL
rendering instead of relying on the XSync() behavior with open source
drivers.

Some driver bugs were uncovered while working on this so if we have
had to reboot the ring a few times, something is probably wrong and
we're likely to just make things worse by continuing to try. Let's
err on the side of caution, disable ourselves and fallback to the
XSync() path in the compositor.

https://bugzilla.gnome.org/show_bug.cgi?id=728464

352cac3... by Jasper St. Pierre

group: Convert code to XCB to prevent errors

Windows can disappear at any time because X11 is really cool and good,
so just use XCB so we won't crash if the window disappears.