summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* device-manager-evdev: Free the main seat on finalizeMarco Trevisan (Treviño)2018-05-291-0/+1
|
* device-manager-evdev: Set and unset the stage for the main seat tooMarco Trevisan (Treviño)2018-05-291-0/+4
| | | | | | | | | | | When no input devices are available on startup the device manager might be fast enough to be constructed so that no default stage is set yet, and thus when main seat virtual devices are created they won't have a proper stage set. If then we plug a real device, the events that an input manager could generate won't be associated to any stage and thus won't be processed. We need then ensure that when we update the stage for the device manager we (un)associate it also to the main seat devices.
* wayland: Don't reset input focus on text commitChangwoo Ryu2018-05-261-2/+0
| | | | | | | | | Preedit text can be active even after text commit. Resetting the input focus will lead to unintended commit of the preedit text. https://gitlab.gnome.org/GNOME/mutter/issues/152 Closes: #152
* frames: Allow for unknown mouse buttonsOlivier Fourdan2018-05-251-4/+11
| | | | | | | | | | Commit 47131b1d ("frames: Handle touch events") introduced an assert to make sure that all mouse button actions are handled in mutter. However, mice can have a more than 5 buttons, so simply ignore the "other" actions instead of aborting. Fixes: https://gitlab.gnome.org/GNOME/mutter/issues/160
* Bump version to 3.29.23.29.2Florian Müllner2018-05-242-1/+15
| | | | Update NEWS.
* Update Chinese (China) translationDz Chen2018-05-211-143/+234
|
* wayland: Compare geometries after chaining upgbsneto/issue-150Georges Basile Stavracas Neto2018-05-182-29/+8
| | | | | | | | | | | | | | | | After 20176d03, the Wayland backend only synchronizes with the compositor after a geometry was set, and it was different from the current geometry. That commit was mistakenly comparing the geometry before chaining up, which would yield a false negative on the case where the client didn't call set_geometry() before commit(). Fix that by caching the old geometry locally, chain up (and thus apply the new geometry rectangle), then comparing the old and current geometry rectangles. Fixes https://gitlab.gnome.org/GNOME/mutter/issues/150
* shaped-texture: Disable mipmapping during animationDaniel van Vugt2018-05-181-6/+82
| | | | | | | | | This avoids overwhelming the GPU with trying to update mipmaps at a high rate. Because doing so could easily cause a reduction in the compositor frame rate and thus actually reduce visual quality. In the case of a window that is constantly animating in the overview, this reduces mutter's render time by around 20%-30%.
* Update Galician translationMarcos Lans2018-05-151-6/+6
|
* clutter-device-evdev: Get devices from main seat if no real seat is setMarco Trevisan (Treviño)2018-05-151-9/+4
| | | | | | | | | | In devices such as ARM boards there could be no input devices connected on startup, leading to a crash when we try to process artificial events that could be queued (as gnome-shell does when syncing pointer). Those events still should refer to a device and, in case we don't have one provided by libinput we should still return the core devices defined in the main seat.
* clutter-seat-evdev: Add function to get device by idMarco Trevisan (Treviño)2018-05-152-0/+21
|
* frames: Handle touch eventswip/carlosg/touch-on-framesCarlos Garnacho2018-05-142-29/+137
| | | | | | | | | | | | This is just done on wayland as it'll break horribly on X11, we let this happen through pointer emulated events in XISelectEvents evmask instead. Some things had to be made slightly more generic to accomodate touch events. The MetaFrames shall lock onto a single touch at a time, we don't allow crazy stuff like multi-window drag nor multi-edge resizes. https://bugzilla.gnome.org/show_bug.cgi?id=770185
* frames: Make 1st button/motion handlers take generic eventsCarlos Garnacho2018-05-141-51/+77
| | | | | | This will ease handling of touch events through these same handlers. https://bugzilla.gnome.org/show_bug.cgi?id=770185
* build: Adjust to filename changesFlorian Müllner2018-05-071-2/+2
| | | | | The meta-stage and meta-window-group headers got split into a public and private part, but the Makefiles still reference the old files.
* build: Introspect some more typesFlorian Müllner2018-05-0716-63/+85
| | | | | | | | | | | 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
* window-group: Remove undefined function declarationFlorian Müllner2018-05-071-3/+0
| | | | | | | Ever since the function has been made public, its name has been meta_actor_is_untransformed() ... https://bugzilla.gnome.org/show_bug.cgi?id=781471
* clutter: Don't reference invalid pc in girFlorian Müllner2018-05-071-1/+1
| | | | | | | Cally is built into clutter itself rather than exposed as a separate library. https://bugzilla.gnome.org/show_bug.cgi?id=781471
* screen-cast: Handle PipeWire errors more gracefullyJonas Ådahl2018-05-071-6/+33
| | | | | | | | | Various code assumed PipeWire function calls would never fail. Some can actually fail for real reasons, and some currently can only fail due to OOM situations, but we should still not assume that will always be the case. https://gitlab.gnome.org/GNOME/mutter/merge_requests/102
* wayland/xdg-foreign: Fix child surface validation checkJonas Ådahl2018-05-071-4/+2
| | | | | | | The role type should be either an xdg-shell toplevel, or a xdg-shell unstable v6 toplevel. Closes: https://gitlab.gnome.org/GNOME/mutter/issues/138
* wayland/xdg-foreign: Send immediate destroy event to correct resourceJonas Ådahl2018-05-071-1/+1
| | | | | | The destroyed signal that was emitted if an imported surface was not available when created, for example if the handle was invalid or already unexported, was emitted on the wrong resource.
* build: Don't fail immediately when logind is missingwip/fmuellner/optional-logindFlorian Müllner2018-05-071-4/+1
| | | | | | | | | | | | | | | We require logind for the native backend, but the backend itself is optional. However since commit 06c357d78, we will always throw an error if neither logind nor elogind are available, even when the backend is disabled. As we still support "auto" - that is, whether the native backend is enabled depends on whether its dependencies are available - the easiest option is to make sure we always include either elogind or libsystemd in the dependency check rather than erring out explicitly if neither is found. https://gitlab.gnome.org/GNOME/mutter/merge_requests/96
* main: Fix typoFlorian Müllner2018-05-041-1/+1
|
* wayland: avoid a crash in is_effectively_synchronized()Olivier Fourdan2018-05-031-1/+4
| | | | | | | | | | | | | | | To check if a subsurface is effectively synchronized, we walk the subsurface hierarchy to look for a non-subsurface parent or a subsurface being synchronized. However, when client is closing, the parent surface might already be gone, in which case we end up with a surface being NULL which causes a NULL pointer dereference and a crash. Check if the parent surface is NULL to avoid the crash, and consider it's already synchronized if it is NULL to avoid further updates. Fixes: https://gitlab.gnome.org/GNOME/mutter/issues/124
* idle-monitor: Don't try to auto-start SessionManagerFlorian Müllner2018-04-301-1/+2
| | | | | | The interface is provided by gnome-session and not activatable. https://gitlab.gnome.org/GNOME/mutter/issues/134
* Update Romanian translationDaniel Șerbănescu2018-04-301-211/+329
|
* wayland: Check if state and size changed before calling move_resize()Georges Basile Stavracas Neto2018-04-252-2/+34
| | | | | | | | | | | | | | | | | The current implementation of the XdgSurface v6 protocol does not check if the window changed before calling meta_window_wayland_move_resize(). The problem with this approach is that calling this function is a costly operation since we enter the compositor side. In GNOME Shell case, it is in JavaScript, which triggers a GJS trampoline. Calling this function on every mouse movement is naturally as terrible as it could be - and is exactly what happens now. This commit adds the necessary checks to only call move_resize() when the window actually changed, or when it needs to be updated. https://bugzilla.gnome.org/show_bug.cgi?id=780292 Issue: #78
* wayland: Add function to query if window needs move or resizeGeorges Basile Stavracas Neto2018-04-252-0/+8
| | | | | | | | | | | | | | | | | | | | | | | This will be used by the next commit to determine when a window geometry change should be ignored or not. Normally, it would be enough to just check if the position and sizes changed. The position, in this case, is relative to the client buffer, not the global position. But because it is not global, there is one, admitedly unlikely, situation where the window state is updated while the client size and relative positions don't change. One can trigger this by e.g. tiling the window to the half-left of the monitor, then immediately tile it to half-right. In this case, the window didn't change, just it's state, but nonetheless we need to notify the compositor and run the full move/resize routines. When that case happens, though, the MetaWindowWayland is tracking the pending state change or a move. And this is what we need to expose. https://bugzilla.gnome.org/show_bug.cgi?id=780292 Issue: #78
* window: Let implementations finish state changesGeorges Basile Stavracas Neto2018-04-254-7/+23
| | | | | | | | | | | | | | | | | | | | | | | | In the old, synchronous X.org world, we could assume that a state change always meant a synchronizing the window geometry right after. After firing an operation that would change the window state, such as maximizing or tiling the window, With Wayland, however, this is not valid anymore, since Wayland is asynchronous. In this scenario, we call meta_window_move_resize_internal() twice: when the user executes an state-changing operation, and when the server ACKs this operation. This breaks the previous assumptions, and as a consequence, it breaks the GNOME Shell animations in Wayland. The solution is giving the MetaWindow control over the time when the window geometry is synchronized with the compositor. That is done by introducing a new result flag. Wayland asks for a compositor sync after receiving an ACK from the server, while X11 asks for it right away. Fixes #78
* Bump version to 3.29.13.29.1Florian Müllner2018-04-252-2/+24
| | | | Update NEWS.
* native: Restore previous EGL state after blitting onto secondary GPUJonas Ådahl2018-04-254-7/+17
| | | | | | | | Before we just set it to "none", but this was not enough since various calls will depend on not just the context being active, but the main rendering surface. Fixes https://gitlab.gnome.org/GNOME/mutter/issues/21
* cogl: Do not unref a NULL objectMarco Trevisan (Treviño)2018-04-251-1/+5
| | | | Add return-if-fail statement to avoid deferencing NULL object
* monitor-manager: Find active monitor when deriving global scaleJonas Ådahl2018-04-251-4/+17
| | | | | | | | | | | | | | | When deriving the global scale directly from the current hardware state (as done when using the X11 backend) we are inspecting the logical state they had prior to the most recent hot plug. That means that a primary monitor might have been disabled, and a new primary monitor may not have been assigned yet. Stop assuming a primary monitor has an active mode before having reconstructed the logical state by finding some active monitor if the old primary monitor was disabled. This avoids a crash when trying to derive the global scale from a disabled monitor. Closes: https://gitlab.gnome.org/GNOME/mutter/issues/130
* wayland: Let IM events go throughCarlos Garnacho2018-04-241-2/+4
| | | | | | | | | These paths implicitly relied on the forwarded IM key events having a source_device backed by a real HW device. This assumption is no longer held true since commit b5328c977. Explicitly check the INPUT_METHOD flag so they are handled as they should despite not being "real HW" events.
* backend: Don't center the pointers on monitor changesMario Sanchez Prada2018-04-241-16/+7
| | | | | | | | | | | As a follow up to the patch from a95cbd0a, we need to make sure that the pointer is out of the way as well when monitors changed, since that's the event that will prevail in some cases. Besides, this is also consistent with what the code before a95cbd0a was, which initialized the pointer position in the same way both in this case and in the real_post_init() function. Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/157
* wayland: Avoid actor updates non actor_surface role wl_surface.commitCarlos Garnacho2018-04-231-3/+4
| | | | | | | We used to maintain an actor for cursors, even though we would possibly use hw overlays or even some other overlay actor for those. This happens no more, so check whether we are dealing with an actor-backed surface role before fiddling with it.
* wayland: Refactor surface actor into MetaWaylandActorSurfaceCarlos Garnacho2018-04-235-106/+103
| | | | | | | All surface roles that do need a backing actor inherit from this class, it makes sense to move actor management there. This also means the MetaWaylandActorSurface is in charge of emitting ::geometry-changed on the MetaWaylandSurface.
* wayland: Notify actively of xwayland window/surface associationsCarlos Garnacho2018-04-236-63/+85
| | | | | | | | | Instead of scheduling a meta_later, keep track of the unassociated windows, and look for matches as soon as the MetaWaylandSurface is created on our side. This will ensure the surface is given the Xwayland role before receiving the first wl_surface.commit.
* wayland: Add MetaWaylandSurface::geometry-changed signalCarlos Garnacho2018-04-233-21/+27
| | | | | Abstract this instead of having callers connect to notify:: signals on the surface actor.
* wayland: Abstract access to the actor corresponding to a wl_surfaceCarlos Garnacho2018-04-237-16/+33
| | | | | The actor itself will be shuffled around, abstract all external access to it behind a function to make that easier later on.
* wayland: Do not reset frame list when merging pending statewip/carlosg/random-fixesCarlos Garnacho2018-04-221-1/+0
| | | | | | | | In the synchronized subsurface case, the destination list may contain other elements from previous wl_surface.commit calls. Resetting the list will leave those dangling frame callbacks that will lead to invalid writes when those get to be destroyed (eg. on client shutdown).
* clutter: Plug minor leakCarlos Garnacho2018-04-221-0/+2
| | | | | clutter_stage_manager_list_stages() returns a copied list, which should be freed.
* clutter: Set slave=master in IM forwarded key eventsCarlos Garnacho2018-04-221-0/+1
| | | | | | | | The fix is twofold. On one hand, it makes sense not to relate IM (nor any other) generated events to a HW device. On the other hand, if we are unfortunate that an IM event is in flight when we are switching to another TTY, it may arrive at a time when the source device is no longer existent.
* theme, frames: Use surface device scale instead of cairo_scaleMarco Trevisan (Treviño)2018-04-202-4/+22
| | | | | | | | | | | Gtk now is caching the themed cairo surfaces, then as per commit gtk@e36b629c the surface device scale is used to figure out the current paint scaling. Without this when using background-image's for window buttons the -gtk-scaled icons isn't properly resized. Fixes #99
* backends: Don't center the pointer on initializationMario Sanchez Prada2018-04-181-1/+12
| | | | | | | | | | | | | | | Centering the pointer at startup causes undesired behaviour if it ends up hovering over reactive elements, that might react to that positioning, causing confusion. This is the case of the login dialog when a list of different users is shown, as centering the pointer at startup in that case will get the user in the center of the screen pre-selected, which is not the expected behaviour (i.e. pre-selecting the first one). Fix this by simply moving the pointer out of the way, close to the bottom-right corner, during initialization. Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/157
* clutter/evdev: Don't ignore CAPS lock as modifierOlivier Fourdan2018-04-181-0/+8
| | | | | | | | Mark CAPS lock as a modifier (as it should) so that when using XKB options to change the default behaviour of CAPS lock, the new assigned key can by used as a sticky key as well. Closes: https://gitlab.gnome.org/GNOME/mutter/issues/112
* clutter/evdev: ignore injected events from IMOlivier Fourdan2018-04-181-0/+4
| | | | | | | Input method can inject key events, which leads to multiple reported key press/release events for a single user action. Ignore those events as this confuses keyboard accessibility.
* xwayland: Don't abort if Xwayland crashesRay Strode2018-04-171-5/+12
| | | | | | | | | | | | | | | Right now if Xwayland crashes, we crash, too. On some level that makes sense, since we're supposed to control the lifecycle of Xwayland, and by it crashing we've lost that control. But practically speaking, the knock-on crash adds noise to the logs, bug trackers, and retrace servers that only makes debugging harder. And the crash isn't something mutter can "fix", since it's ultimately from a bug in Xwayland anyway. This commit makes mutter exit instead of crash if Xwayland goes away unexpectedly.
* xwayland: use g_autoptr for GError in xserver_diedRay Strode2018-04-171-2/+1
| | | | | | | | | Right now we explicitly g_clear_error any error we find, but that makes it tricky to return early from the function, which a subsequent commit will want to to do. This commit switches GError to use g_autoptr so the error clearing happens automatically.
* gpu-kms: Return NULL, not FALSEGeorges Basile Stavracas Neto2018-04-161-1/+1
| | | | | | | | Another small mistake spotted while working on #77. This function returns a pointer, thus we should return NULL, not FALSE. Issue: #77
* monitor-manager-kms: Don't add GPU if it failsGeorges Basile Stavracas Neto2018-04-161-0/+1
| | | | | | | | | This is a small mistake spotted while working on a solution for #77. When a GPU fails to initialize, we're adding them anyway, which might have pretty bad consequences when trying to use these NULL GPUs. Issue: #77