summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* ci: Add job to check code stylewip/carlosg/code-style-checksCarlos Garnacho2021-08-221-2/+21
| | | | | At the moment, allow the task to fail, while we smooth out the uncrustify configuration.
* build: Add script to check code styleCarlos Garnacho2021-08-221-0/+134
| | | | | | | | | | | | | | | | Borrowed from Tracker, this script has different mode usages: * --sha allows specifying a commit SHA, HEAD^ by default. * --dry-run shows suggested changes in stdout, by default the local tree is changed. * --rewrite amends the last commit, in addition to performing the changes. This allows from simple style checks in the development tree, automatically rewriting with the suggested changes (e.g. with `git rebase --exec ./check-style -r`) and CI integration. The script has per-function granularity, and works by re-styling individually every commit, and inside every commit every chunk.
* tools: Add uncrustify config fileCarlos Garnacho2021-08-221-0/+155
| | | | | | This config file seems like a good first stab at honoring the Mutter code style. More changes might be required once this meets real world testing.
* ci: Switch to meson's generated Junit reportFlorian Müllner2021-08-223-116/+1
| | | | | | ... instead of generating it ourselves from the regular meson logs. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1957>
* ci: Use backend-agnostic meson command to buildFlorian Müllner2021-08-222-9/+9
| | | | | | | There's no alternative backend in sight for us, but it's nice to only deal with a single build tool. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1957>
* build: Stop using source_root()/build_root()Florian Müllner2021-08-224-4/+7
| | | | | | They were deprecated in meson 0.56. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1957>
* build: Switch to meson's summary commandFlorian Müllner2021-08-221-49/+31
| | | | | | | This is more concise and produces output that is more consistent with other meson output (and between projects). Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1957>
* cogl: Remove conditional g_type_init() callFlorian Müllner2021-08-221-4/+0
| | | | | | glib 2.36 hasn't met our minimum requirements for years. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1957>
* tests/stage-view: Added test for incorrect frame clock schedulingJonas Ådahl2021-08-222-1/+133
| | | | | | | The test attempts to reproduce gnome-shell#4486, and is fixed by "window-actor/x11: Don't cache the frame-drawn frame clock". Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1947>
* window-actor/x11: Don't cache the frame-drawn frame clockJonas Ådahl2021-08-221-7/+15
| | | | | | | | | | | | | | | | | | | | | | | | | We fetch a frame clock that we schedule update on when queuing _NET_WM_FRAME_DRAWN events. In some situations this frame clock is the one from the stage, and if there are multiple hotplugs in a row, we failed to update it as there were no stage views changes on the window actor itself. As an actor updates the stage views list on layout, When a queue_frame_drawn() call was done (typically from an X11 event) after a second hotplug, it'd attempt to schedule an update on the frame clock from the previous hotplug, as it didn't get notified about any stage-views changes since for itself there was none. Fix this by not caching the frame clock at all and just fetch it every time. In the majority of cases, this fetching means iterating over a very short list (most often a single entry, rarely more), so it's very unlikely to be of any relevance. The only situations where it might be a heavier operation is the short time between a hotplug and a layout, as it will attempt to traverse up to the stage to find a clock, but that's likely only a few levels, so even that is unlikely to be an issue. Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4486 Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1947>
* clutter/stage-view: Initialize view as damaged and awaiting frameJonas Ådahl2021-08-221-0/+3
| | | | | | | | | | | | Make sure that when we've recreated views that we'll actually paint a new frame for it. This was very rarely a problem, as views tend to result in getting damage etc being queued as side effects of various things, like layout, but e.g. when running certain tests, this might not happen. There is no situation where we want to create a new view that should remain unpainted, so just make sure we initialize it to become up to date. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1947>
* wayland/output: Fly-by coding style fixJonas Ådahl2021-08-221-9/+11
| | | | | | Change 'GList *iter' to 'GList *l' in a few places. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1712>
* wayland/output: Make each wl_output correspond to one monitorJonas Ådahl2021-08-222-114/+76
| | | | | | | | | This is more in line with the protocol, and allows us to remove some awkward code that tries to "combine" different metadata from different monitors into one, which sometimes meant picking an arbitrary "main" monitor, or "and" metadata together to find a common ground. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1712>
* monitor: Add hash functionJonas Ådahl2021-08-222-0/+13
| | | | | | Will be used to keep a monitor spec as a hash table key. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1712>
* wayland/output: Move struct to C fileJonas Ådahl2021-08-223-20/+20
| | | | | | Avoids leaking implementation details outside. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1712>
* wayland: Fetch wl_output logical monitor via helperJonas Ådahl2021-08-225-8/+28
| | | | | | | Will be useful when wl_output gets tied to a MetaMonitor, instead of a MetaLogicalMonitor. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1712>
* wayland/surface: Get wl_output resource list via helperJonas Ådahl2021-08-223-8/+14
| | | | Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1712>
* cursor-tracker: Add meta_cursor_tracker_get_scale ()Ivan Molodetskikh2021-08-222-0/+22
| | | | | | | Used in the screenshot UI (and arguably should be used in the existing gnome-shell screenshot drawing code). Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1967>
* clutter: Add clutter_stage_paint_to_content ()Ivan Molodetskikh2021-08-222-0/+62
| | | | | | Used in the new screenshot UI. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1899>
* Update Basque translationAsier Sarasua Garmendia2021-08-201-61/+74
|
* Bump version to 41.beta41.betaFlorian Müllner2021-08-172-1/+53
| | | | Update NEWS.
* Updated Spanish translationDaniel Mustieles2021-08-171-103/+121
|
* window: Make default focus window on each workspace appear focusedAlexander Mikhaylenko2021-08-123-10/+70
| | | | | | | | | | | | | Makes workspace transitions in gnome-shell look more seamless, since both outgoing and incoming workspace have focused windows. This is only done for click focus mode, since it's not known which window would be focused for the other modes. Track the state and recompute it when it changes, to avoid redrawing the windows needlessly. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/850>
* workspace: Add meta_workspace_get_default_focus_window()Alexander Mikhaylenko2021-08-122-0/+15
| | | | | | | | | | | | | Each workspace has a window that will be focused when switching to that workspace. Add a function to retrieve that window. This is only relevant for click-to-focus focus mode, since with the two other modes no window will be focused upon switching, and will only gain focus when hovered. This will be used in the next commit to make this window appear focused. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/850>
* stack: Check workspace in get_default_focus_window()Alexander Mikhaylenko2021-08-121-4/+9
| | | | | | Check against the window argument, instead of active workspace. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/850>
* plugins/default: Switch to g_spawn_check_wait_status()Jonas Ådahl2021-08-121-1/+1
| | | | | | The old one is deprecated and equivalent. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1941>
* xwayland-grab-keyboard: Switch to g_pattern_spec_match_string()Jonas Ådahl2021-08-123-4/+8
| | | | | | | The g_pattern_match_string() variant is deprecated, switch to the properly namespaced one. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1941>
* Update Chinese (China) translationBoyuan Yang2021-08-091-105/+119
|
* Update Slovenian translationMatej Urbančič2021-08-091-63/+76
|
* Updated Czech translationMarek Černocký2021-08-081-89/+118
|
* Update Hebrew translationYaron Shahrabani2021-08-071-127/+124
|
* wayland-dma-buf: Fix 'kms-modifiers' experimental settingRobert Mader2021-08-061-2/+5
| | | | | | | The setting was ignored in favor of whatever the backend returned. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1953>
* clutter/text: Don't query preferred size without allocationFlorian Müllner2021-08-051-6/+11
| | | | | | | | | | | The size request functions query the resource scale, which hits an assert if headless. The returned sizes are already only used when clutter_actor_has_allocation() is true, so this doesn't change the condition for calling either redraw or relayout. https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4522 Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1956>
* shaped-texture: Do not apply y-inverts to shape masksRobert Mader2021-08-041-2/+2
| | | | | | | | | | | | | | | | | This was introduced by accident in commit 1467b6b02a73bca76 y-inverted textures in combination with shape masks appear to be only commonly used with EGLstreams. However, as we draw the shape mask ourselves, we don't want to apply the y-invert to it as testified by the left over `cogl_pipeline_set_layer_matrix()`. Note that we still allow to apply viemports and buffer transforms, as the Xwayland mode setting emulation may use it (in fact only the former, but it probably does not hurt to leave the later as well). Closes https://gitlab.gnome.org/GNOME/mutter/-/issues/1792 Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1937>
* wayland/gtk-shell: Add titlebar_gesture requestFlorian Müllner2021-08-043-4/+112
| | | | | | | | | | | | | This allows client to delegate titlebar gestures to the compositor, which allows for better consistency with server-side decorations, and a wider range of actions (including lower-on-middle-click). The protocol addition is based on a suggestion from Carlos Garnacho and Jonas Ådahl. https://gitlab.gnome.org/GNOME/mutter/-/issues/602 Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1944>
* window: Add meta_window_lower_with_transients()Florian Müllner2021-08-043-49/+61
| | | | | | | | | | | | The only thing x11-specific about the existing code is that it is only used to implement titlebar actions on server-side decorations. We are about to bring that functionality to wayland, so move the code into MetaWayland. https://gitlab.gnome.org/GNOME/mutter/-/issues/602 Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1944>
* monitor-test-utils: Add debug friendly statements during testsMarco Trevisan (Treviño)2021-08-044-64/+143
| | | | | | | | | | | | | Monitor configuration check tests can be very complex and in case of failures we can't easily catch where a failure happened without entering in debug mode, something that isn't always an option in CI or external builders. So add more debug statements in configuration check functions and use macros to ensure that we print the caller function and location on more complex check functions. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/522>
* monitor-config-manager: Use match rule to check laptop panel visibilityMarco Trevisan (Treviño)2021-08-041-2/+2
| | | | | | | Use the MONITOR_MATCH_VISIBLE match rule instead of doing the same check when initializing the list of disabled monitor specs. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/522>
* monitor-conifig-manager: Generate primary monitor config with othersMarco Trevisan (Treviño)2021-08-041-31/+15
| | | | | | | | | | | | Primary monitor is just the same of the other monitors, but it has a primary monitor flag. Since the computation of the scaling isn't dependent anymore on the computed configuration we can now generate the primary monitor config together with the others. However, we've to ensure that the primary monitor is the first of the configs list in order to properly compute the positioning. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/522>
* monitor-config-manager: Computer monitor scale in callerMarco Trevisan (Treviño)2021-08-041-16/+30
| | | | | | | | | Compute the monitor scaling in a separated function using the primary monitor (not its config) and pass it to the creation function instead. This will allow removing the special logic for the primary monitor. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/522>
* monitor-config-manager: Use monitor match filters to create configMarco Trevisan (Treviño)2021-08-041-204/+137
| | | | | | | | | Factorize the creation of a configuration inside one function that looks for the primary monitor and the other monitors using the matching rules and dispose them according to the chosen policy (checking if the result is valid when using the suggested positioning). Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/522>
* monitor-config-manager: Define cleanup functions for structsMarco Trevisan (Treviño)2021-08-041-0/+7
| | | | | | | Monitor configuration structures can be used inside containers such as GList and in order to have smart cleanups we need to define the relative free function Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/522>
* monitor-config-manager: Use single filter function to build configsMarco Trevisan (Treviño)2021-08-041-55/+91
| | | | | | | | | | | | Add a find_monitors function that allows to search for monitors that match the MonitorMatchRule filter and use this to look for the primary monitor and the other monitors that need to match the requested filter in order to be configured. Having just one function doing this kind of checks reduces the possibility of unexpected results. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/522>
* monitor: Only assign suggested positions to valid pointersMarco Trevisan (Treviño)2021-08-041-2/+5
| | | | Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/522>
* monitor-unit-tests: Check suggested configuration has adjacent outputsMarco Trevisan (Treviño)2021-08-041-0/+315
| | | | | | | | | Verify that the suggested monitor configuration contains only adjacent monitors, and that if this is not the case we fallback to the linear configuration. This can happen in case of multi-DPI setup, so add a test checking this too. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/522>
* monitor-config-manager: Reject a suggested config with gapsMarco Trevisan (Treviño)2021-08-041-0/+15
| | | | | | | | | | | | It could happen that monitors suggest to use coordinates that don't take in consideration the scaling applied to one monitor, and such the generated configuration is not valid because not all the monitors are adjacent. So enforce this check before accepting a suggested configuration as it is. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/522>
* boxes: Add function to check if rectangle is adjacent to regionMarco Trevisan (Treviño)2021-08-042-0/+23
| | | | | | | | | | We may need to check if rectangles region has adjacent neighbors and so if there are no gaps in between monitors. This can be done by checking if each monitor is adjacent to any other in the same region. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/522>
* monitor-unit-tests: Add test for overlapping monitor configMarco Trevisan (Treviño)2021-08-041-0/+159
| | | | | | | Verify that when we've monitors with overlapping preferred configuration, we fallback to the default linear configuration. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/522>
* x11: Add COGL_HAS_TRACING checks around tracing codeCarlos Garnacho2021-08-021-0/+2
| | | | | | | | This code sneaked unconditionally, even though we can disable tracing code with -Dprofiler=false. Add some COGL_HAS_TRACING checks so that this code is also optionally built. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1951>
* compositor: Add COGL_HAS_TRACING checks around tracing codeCarlos Garnacho2021-08-021-0/+4
| | | | | | | | This code sneaked unconditionally, even though we can disable tracing code with -Dprofiler=false. Add some COGL_HAS_TRACING checks so that this code is also optionally built. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1951>