Commits
wip/xwayland-p…
Name already in use
Commits on Sep 23, 2016
-
wayland/pointer-constraints: Don't include window frame in region
When Xwayland confines, the surface dimensions will include the server side window manager decorations. We don't want the decorations to be included in the constraint region so intersect the calculated input region with the parts of the buffer rect that is not part of the window frame. https://bugzilla.gnome.org/show_bug.cgi?id=771859
-
wayland/pointer-constraints: Unify requirements for enablement
Put the conditions for enabling a pointer constraint in a helper function, and use that in both maybe_enable() and maybe_remove(). The constraint region checking is still only done in maybe_enable() however. This changes the conditions for maybe disabling the constraint on focus change and other trigger points, namely it makes constraints by Xwayland not disable when they shouldn't due to the constraining window being an override-redirect window. https://bugzilla.gnome.org/show_bug.cgi?id=771859
-
wayland/pointer-constraints: Disable or remove when grab is cancelled
When the grab is cancelled, for example because of an Alt-tab, VT switch etc, disable or remove (depending on the constraint type) the constraint. This avoids a re-entry issue when the focus is returned and the focus listener tries to re-enable a disabled constraint. https://bugzilla.gnome.org/show_bug.cgi?id=771859
-
MetaWaylandPopup: Dismiss popup when grab is cancelled
Dismiss the popup when the grab is cancelled, so that if the grab is ended for whatever reason (such as VT switching or the last pointer being disconnected), it doesn't try to end the grab when it isn't active. This fixes a crash when VT switching back and forth while a popup grab is active. https://bugzilla.gnome.org/show_bug.cgi?id=771858
-
wayland/pointer: Add way to cancel current grab
Previously a grab could suddenly end without the grabber knowing anything about it. Some grabs assume they won't suddenly end without notice, and can use then new 'cancel' vfunc to be notified. Currently a grab is cancelled when a new one is started (i.e. in meta_wayland_pointer_grab_start()), when a non-popup compositor wide event route is initiated, and when the seat looses the pointer capability. https://bugzilla.gnome.org/show_bug.cgi?id=771858
-
wayland/pointer: Use grab helper that doesn't focus when disabling
Instead of using meta_wayland_pointer_end_grab() which focuses the new grab, add a new helper mean to be used to reset the grab state without changing the pointer focus. When using this function, the call site is supposed to explicitly manage focus. https://bugzilla.gnome.org/show_bug.cgi?id=771646
-
wayland/pointer: Naming and coding style fixes
Some very long lines that stood out were shortened, and an old naming convention from weston was removed. https://bugzilla.gnome.org/show_bug.cgi?id=771646
-
wayland/pointer: Unset pointer focus when disabled
Previously the focus was reset implicitly by a memset() on the whole MetaWaylandPointer struct. When MetaWaylandPointer was turned into a GObject, this was not possible any more, and the focus was not updated properly. https://bugzilla.gnome.org/show_bug.cgi?id=771646
-
wayland/pointer: Check pointer presence at set focus call site
Make the caller of focus setting check whether there is a pointer to update the focus state of. It makes it more obvious what to expect, as the call would be a no-op in when no pointer is present. Grabbing is still allowed without the presence of a pointer because it is used by popups even on touch-only systems. https://bugzilla.gnome.org/show_bug.cgi?id=771646
-
wayland/pointer: Use helper for getting the next event serial
Unify next event serial retrieval using a helper function. https://bugzilla.gnome.org/show_bug.cgi?id=771646
-
wayland/keyboard: Check keyboard presence at set focus call site
Make the caller of focus setting and grab starting check whether there is a keyboard to update the focus state or start grabbing. It makes it more obvious what to expect, as the call would be a no-op in when no keyboard is present. https://bugzilla.gnome.org/show_bug.cgi?id=771646
-
-
wayland/keyboard: Cleanup resource list management
Initialize on init(), unlink and reinitialize the list headers on disable() so that any delayed resource destruction doesn't affect future state. https://bugzilla.gnome.org/show_bug.cgi?id=771646
-
wayland/keyboard: Cleanup grab state managing
Initialize on init() and just end grab on disable(). https://bugzilla.gnome.org/show_bug.cgi?id=771646
-
wayland/keyboard: Cleanup xkb state managing
Initialize and cleanup properly in a _init()/_destroy() function pair. https://bugzilla.gnome.org/show_bug.cgi?id=771646
-
wayland/keyboard: Naming and coding style fixes
Some very long lines that stood out were shortened, and an old naming convention from weston was removed. https://bugzilla.gnome.org/show_bug.cgi?id=771646
-
-
wayland/keyboard: Stop using temporary wl_list 'l'
The variable name 'l' usually refers to a GList iterator, but here it's just a short hand for a specific list. Stop using this shorthand, since it just makes it harder to read what list is used. https://bugzilla.gnome.org/show_bug.cgi?id=771646
-
wayland/keyboard: Simplify getting the serial serial
Use the same method everywhere for getting the next event serial number. https://bugzilla.gnome.org/show_bug.cgi?id=771646
Commits on Sep 18, 2016
-
wayland: Handle parent-less popup commits
A xdg_popup, when active, always has a parent surface. However, a popup created may immediately become invalid, for example when it is not granted a grab, in which case it won't be assigned a parent since it will never be mapped. This case needs to be handled elsewhere, as one cannot assume a MetaWaylandXdgPoup that is processed (via wl_surface commit handling etc) will have a parent_surface. https://bugzilla.gnome.org/show_bug.cgi?id=771495
Commits on Sep 16, 2016
Commits on Sep 15, 2016
-
wayland/xwayland: Gracefully handle Xdnd start drag focus race
If a X11 client would initiate a Xdnd session after it had lost pointer focus (for example when the Xdnd event starting the drag happens after the implicit pointer grab is already broken due to the button being released), just end the drag operation instead of dereferencing the non-existing focus surface. Also avoid using a native Wayland surface as a drag origin, as that can never happen, but allow any arbitrary Xwayland client, since there is no way to find out the actual drag origin. https://bugzilla.gnome.org/show_bug.cgi?id=770940
-
wayland/data-device: Don't disconnect valid dnd client
We cannot check 'has-target' or 'has-seat' when verifying a wl_data_offer.finish request is valid or not, since the source may have effected 'has-target' or whether theh source has a seat or not when the finish request was already on the wire. Instead of checking against the source state, keep track whether the required operations has been done on the offer in question (i.e. whether an action has been sent, or a mime type been accepted). This fixes incorrectly raised error when dragging from gtk+'s testdnd via Xwayland onto gtk+'s testdnd using Wayland. https://bugzilla.gnome.org/show_bug.cgi?id=770937
-
ClutterStageCogl: Don't get buffer damage dirty pixel when not supported
Now with the existance of offscreen view framebuffers the buffer age damage regions are only valid if the view in question doesn't doesn't have an intermediate offscreen. So, for views that doesn't have buffer age, return the dirty pixel (0,0). https://bugzilla.gnome.org/show_bug.cgi?id=770672
-
clutter: Let the stage window translate dirty pixel according to view
Otherwise if buffer age is not supported the dirty pixel would be shifted potentially in unpaintable position. https://bugzilla.gnome.org/show_bug.cgi?id=770672
-
clutter: Use non-deprecated pixel reading function when picking
This wont fix anything, it just one small step away from using deprecated cogl functions. https://bugzilla.gnome.org/show_bug.cgi?id=770672
-
MetaWaylandOutput: Cleanup type declaration
Use G_DECLARE_FINAL_TYPE instead of the set of macros. https://bugzilla.gnome.org/show_bug.cgi?id=770672
-
MetaWaylandOutput: Pretend outputs are always untransformed
Since wl_surface.set_buffer_transform() is not supported, until it is added, pretend outputs are never transformed, so that clients are less likely to attach pre-transformed buffers. https://bugzilla.gnome.org/show_bug.cgi?id=770672
-
ClutterStageView: Always blit full texture on full onscreen framebuffer
When blitting an offscreen onto an onscreen, the whole offscreen should always be drawn on the whole onscreen. Thus, don't try to convert between coordinate spaces, just draw the whole offscreen on the whole onscreen. https://bugzilla.gnome.org/show_bug.cgi?id=770672
-
wayland/pointer-constraints: Maybe remove when pointer focus changes
Also maybe remove a constraint when the pointer focus changes. This is needed because when Xwayland has a constraint focus may change, the constraint object will not receive a 'appears-focused' event on its window since it never changed. This happens for example when an override-redirect window (which never appears focused) holds the constraint, and alt-tab happens. In this case focus changes, but from the constraint's point of view, none of the windows it knows about changed its focus appearance. https://bugzilla.gnome.org/show_bug.cgi?id=771345
-
wayland/pointer-constraints: Move window-unmanaging check
We should never enable a pointer constraint for an unmanaging window. https://bugzilla.gnome.org/show_bug.cgi?id=771345
-
MetaWaylandPointer: Initialize default grab on init
Instead of initializing the default grab when the device class is enabled, initialize it on object initialization. This way other device classes can still grab the pointer, as if there was one. This may be useful for example if a touch grab is active and a mouse is connected. This also makes it possible for popup grabs, which currently use a pointer grab for controlling, to be triggered by touch devices, while still holding an active pointer grab. https://bugzilla.gnome.org/show_bug.cgi?id=771305
-
wayland: Move device seat association to MetaWaylandInputDevice
Make the device <-> seat association permanent, and move it into MetaWaylandInputDevice. A device will never be disassociated with a seat, so there is no point in unsetting it. https://bugzilla.gnome.org/show_bug.cgi?id=771305