summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* gpu-kms: Check for DRM resources when constructingwip/laney/drmmodegetresources-handle-failureIain Lane2018-08-091-6/+20
| | | | | | | | | | drmModeGetResources() can fail if the DRM driver doesn't implement modesetting. We shouldn't crash in this case, but instead error out. This moves the call into the constructor of the MetaGpuKms, as it is easier to fail constructing directly rather than deal with it later on. Fixes #223.
* wayland: Clean up xwayland grabs even if surface is goneOlivier Fourdan2018-08-061-7/+7
| | | | | | | | | | If the surface is gone before `meta_xwayland_keyboard_grab_end()` is called, we would bail out early leaving an empty grab, which will cause a segfault as soon as a key is pressed later on. Make sure we clean up the keyboard grab even if the surface is gone. Closes: https://gitlab.gnome.org/GNOME/mutter/issues/255
* Update libpipewire requirementsJan Grulich2018-08-061-1/+1
| | | | PipeWire 0.2.2+ now provides libpipewire-0.2 and not libpipewire-0.1 anymore
* Updated Lithuanian translationAurimas Černius2018-08-051-54/+68
|
* Update Polish translationPiotr Drąg2018-08-041-57/+59
|
* Update German translationMario Blättermann2018-08-041-58/+59
|
* Updated Slovenian translationMatej Urbančič2018-08-031-13/+9
|
* Updated Slovenian translationMatej Urbančič2018-08-031-59/+65
|
* clutter/actor: Inherit clone branch depth from parentDaniel van Vugt2018-08-011-8/+21
| | | | | | | Children added to a parent after that parent (or its ancestors) have already been cloned now inherit the clone branch depth of the parent. Otherwise `clutter_actor_is_in_clone_paint` on the child could return FALSE when it should have been returning TRUE.
* Bump version to 3.29.903.29.90Florian Müllner2018-08-012-1/+15
| | | | Update NEWS.
* plugin: Add back prototypes to META_PLUGIN_DECLARE()Florian Müllner2018-08-011-0/+8
| | | | | G_DEFINE_DYNAMIC_TYPE() doesn't include those, so they are still needed.
* wayland-private: Make display_name non-constFlorian Müllner2018-07-311-1/+1
| | | | | | | | The string used to point to memory owned by libwayland-server, but with the ability to override the display name, we took over ownership by copying the string as necessary. https://gitlab.gnome.org/GNOME/mutter/merge_requests/176
* Don't cast free function passed to g_clear_pointerFlorian Müllner2018-07-318-22/+22
| | | | | | | | | The function is intentionally provided as macro to not require a cast. Recently the macro was improved to check that the passed in pointer matches the free function, so the cast to GDestroyNotify is now even harmful. https://gitlab.gnome.org/GNOME/mutter/merge_requests/176
* Stop using g_type_class_add_private()Florian Müllner2018-07-319-30/+18
| | | | | | | It is now deprecated in favor of the G_ADD_PRIVATE() macro (usually called via G_DEFINE_WITH_PRIVATE()). https://gitlab.gnome.org/GNOME/mutter/merge_requests/176
* clutter: Stop using g_type_class_add_private()Florian Müllner2018-07-316-42/+30
| | | | | | | It is now deprecated in favor of the G_ADD_PRIVATE() macro (usually called via G_DEFINE_WITH_PRIVATE()). https://gitlab.gnome.org/GNOME/mutter/merge_requests/176
* plugin: Add META_DECLARE_PLUGIN_WITH_CODE() variantFlorian Müllner2018-07-311-2/+6
| | | | | | | | Thanks to G_DEFINE_DYNAMIC_TYPE_EXTENDED(), this is a trivial addition that will allow using G_IMPLEMENT_INTERFACE_DYNAMIC() or G_ADD_PRIVATE_DYNAMIC() when declaring a plugin. https://gitlab.gnome.org/GNOME/mutter/merge_requests/176
* plugin: Simplify META_PLUGIN_DECLARE() macroFlorian Müllner2018-07-311-52/+6
| | | | | | | It's mostly boilerplate that G_DEFINE_DYNAMIC_TYPE() can take care of, so use that internally. https://gitlab.gnome.org/GNOME/mutter/merge_requests/176
* prefs: Remove override systemFlorian Müllner2018-07-312-131/+0
| | | | | | | With the support for per-desktop default values in GSettings, we no longer need the mutter-specific override mechanism. https://bugzilla.gnome.org/show_bug.cgi?id=786496
* monitor: Use current monitor mode to check whether activeJonas Ådahl2018-07-311-6/+16
| | | | | | | | | | | | | | | | | | | | | | | | | For historical reasons meta_monitor_is_active() checked whether it is active by checking whether the main output have a CRTC assigned and whether that CRTC has a current mode. At a later point, the MetaMonitor got its own mode abstraction (MetaMonitorMode), but meta_monitor_is_active() was never updated to use this. An issue with checking the main output's CRTC state is that, if there is some CRTC mode combination that for some reason isn't properly detected by the MetaMonitorMode abstraction (e.g. some tiling configuration not yet handled), meta_monitor_is_active() would return TRUE, even though no (abstracted) mode was set. This would cause confusion here and there, leading to NULL pointer dereferences due to the assumption that if a monitor is active, it has an active mode. Instead, change meta_monitor_is_active() to directly check the current monitor mode, and log a warning if the main output still happen to have a CRTC with a mode assigned to it. This way, when an not undrestood CRTC mode combination is encountered, instead of dereferencing NULL pointers, simply assume the monitor is not active, which means that it will not be managed or rendered by mutter at all. https://gitlab.gnome.org/GNOME/mutter/issues/130
* wayland: Remove unused GList *lDaniel van Vugt2018-07-311-1/+0
|
* Add README.mdJonas Ådahl2018-07-301-0/+30
| | | | | | | The welcome page on Gitlab is pretty boring for mutter. Improve that a bit by adding a README file with some basic introduction. Fixes: https://gitlab.gnome.org/GNOME/mutter/issues/245
* tests: Add "closed-transient" testFlorian Müllner2018-07-302-0/+20
| | | | | | | | | When a transient window is destroyed, the expected behavior is that focus is passed to the ancestor if possible. This was broken for quite a while until the previous commit, so add a test case to make sure it doesn't happen again. https://gitlab.gnome.org/GNOME/mutter/issues/15
* window: Explicitly exclude unmanaging window from focus againFlorian Müllner2018-07-301-1/+3
| | | | | | | | | Since commit b3b9d9e16 we no longer have to pass the unmanaging window to make sure we don't try to focus it again, however the parameter also influences the focus policy by giving ancestors preference over the normal stack order. https://gitlab.gnome.org/GNOME/mutter/issues/15
* window: Don't refuse to move focus to the grab windowFlorian Müllner2018-07-301-0/+1
| | | | | | | | | | | | | | | We refuse to move focus while a grab operation is in place. While this generally makes sense, there's no reason why the window that owns the grab shouldn't be given the regular input focus as well - we pretty much assume that the grab window is also the focus window anyway. In fact there's a strong reason for allowing the focus change here: If the grab window isn't the focus window, it probably has a modal transient that is focused instead, and a likely reason for the focus request is that the transient is being unmanaged and we must move the focus elsewhere. https://gitlab.gnome.org/GNOME/mutter/issues/15
* monitor-manager: Filter out low screen resolutionsAndrea Azzarone2018-07-303-2/+23
| | | | | | | | | Avoid exporting through org.gnome.Mutter.DisplayConfig.GetCurrentState excessively-low screen resolutions setting both a minimum width and a minimum height. GetCurrentState is e.g. used by Gnome Control Center to build a list of selectable resolutions. Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=793223
* wayland: Nullify monitor resources when updating outputsOlivier Fourdan2018-07-301-21/+31
| | | | | | | | | | | If a client asks for xdg-output before we have set the output's logical monitor, we would end up crashing with a NULL pointer dereference. Make sure we clear the resource's user data when marking an output as inert on monitor change so that we don't end up with a Wayland output without a logical monitor. Closes: https://gitlab.gnome.org/GNOME/mutter/issues/194
* native/gpu: Handle drmModeSetCrtc() failing gracefullyJonas Ådahl2018-07-251-1/+4
| | | | | | | | If drmModeSetCrtc() is called with no fb, mode or connectors for some CRTC it may still fail, and we should handle that gracefully instead of assuming it failed to set a non-disabled state. Closes https://gitlab.gnome.org/GNOME/mutter/issues/70
* fixed typoKevin Tamool2018-07-241-1/+1
|
* window/wayland: Always update monitor for non-user opsOlivier Fourdan2018-07-241-0/+6
| | | | | | | | | | | | | | | | meta_window_wayland_update_main_monitor() would skip the monitor update if the difference in scale between the old and the new monitor would cause another monitor change. While this is suitable when the monitor change results from a user interactively moving the surface between monitors of different scales, this can leave dangling pointers to freed monitors when this is triggered by a change of monitor configuration. Make sure we update the monitor unconditionally if not from a user operation. Closes: https://gitlab.gnome.org/GNOME/mutter/issues/189
* Updated French translationClaude Paroz2018-07-241-66/+68
|
* Updated Spanish translationDaniel Mustieles2018-07-231-52/+70
|
* Add remote access controller APIJonas Ådahl2018-07-2010-0/+411
| | | | | | | | | | | | Add API to let GNOME Shell have the ability to get notified about remote access sessions (remote desktop, remote control and screen cast), and with a way to close them. This is done by adding an abstraction above the remote desktop and screen cast session objects, to avoid exposing their objects to outside of mutter. Doing that would result in external parts holding references to the objects, complicating their lifetimes. By using separate wrapper objects, we avoid this issue all together.
* cogl: Fix cogl_frame_info_get_frame_counter docsDaniel van Vugt2018-07-201-5/+2
| | | | | | | | | The docs previously suggested that `cogl_frame_info_get_frame_counter` returned a timestamp of an unknown clock ID. That's not correct. The cogl source code shows that it does and must use the same clock as `cogl_get_clock_time`. Related to https://gitlab.gnome.org/GNOME/mutter/issues/131
* build: Bump libpipewire requirementFlorian Müllner2018-07-181-1/+1
| | | | After commit 0407a8b33d, we require the recently released 0.2 version.
* Bump version to 3.29.43.29.4Florian Müllner2018-07-182-3/+13
| | | | Update NEWS.
* tests: Add the "parent_exported" testOlivier Fourdan2018-07-182-0/+16
| | | | | | | | | | | | | | This test aims at checking that the transient relationship set using the xdg-foreign API is respected by mutter and that no crash occurs, such as the one in issue !174. Note: the crash from issue !174 occurs only if "attach_modal_dialogs" is set, so one has to change that default value to "true" to be able to trigger the crash: gsettings set org.gnome.mutter attach-modal-dialogs true Related: https://gitlab.gnome.org/GNOME/mutter/issues/174
* tests: Fix usage message for "set_parent"Olivier Fourdan2018-07-181-1/+1
| | | | | "set_parent" usage message was referring to "menu" which is not a valid command.
* tests: Add "set_parent_exported" commandOlivier Fourdan2018-07-182-2/+46
| | | | | | | | | | | | Add a "set_parent_exported" command to test the xdg-foreign support, so that we can add a test which uses the GDK API for exported window: `gdk_wayland_window_set_transient_for_exported()` That will allow to detect if transient is applied correctly between foreign windows and detect possible crashes such as issue !174. Related: https://gitlab.gnome.org/GNOME/mutter/issues/174
* backend: Remove direct upower-glib usageBastien Nocera2018-07-183-18/+97
| | | | | | | | | Monitor whether UPower is running ourselves. That allows us to keep the same value for "lid-is-closed" throughout the process of UPower restarting, preventing unwanted monitor re-configuration through the process. Fixes another screen black out when UPower restarts and the laptop lid is closed.
* backend: Move lid-is-closed handling to MetaBackendBastien Nocera2018-07-1810-117/+137
| | | | | | | | Rather than handle UpClient in both MetaBackend (to reset the idletime when the lid is opened), and in MetaMonitorManager and MetaMonitorConfigManager (to turn the screen under the lid on/off depending on its status), move the ability to get the lid status from UPower or mock it in one place, in MetaBackend.
* monitor-manager: Cache the last known value of "lid-is-closed"Bastien Nocera2018-07-182-1/+9
| | | | | | | | | Restarting UPower will make every property of UpClient emit a "notify" signal (as a GDBusProxy would). Avoid mutter reconfiguring the displays when upower restarts by caching the last known value of "lid-is-closed" and only reconfiguring the displays if it actually changed. This fixes a black out of the screen when UPower restarts.
* monitor-manager: Don't throw an error if UPower isn't runningBastien Nocera2018-07-181-2/+5
| | | | | Don't try to connect to a UpClient signal if creating the client failed, because UPower isn't running for example.
* backends/native: Remove unused upower-glib headerBastien Nocera2018-07-181-1/+0
| | | | Wasn't removed in 657417a.
* Update Romanian translationDaniel Șerbănescu2018-07-171-42/+50
|
* tests: Move window-shown verification to test-runnerJonas Ådahl2018-07-173-27/+83
| | | | | | | | | | | | | | | | | | | | Previously we relied on the test-client to make sure that a window was shown. For X11, we did not need to do anything, but for Wayland we had to make sure we had drawn the first frame, otherwise mutter wouldn't have a buffer making the window not showable. Doing it this way doesn't work anymore however, since the 'after-paint' event will be emitted even if we didn't actually paint anything. This is the case with current Gtk under Wayland, where we won't draw until the compositor has configured the surface. In effect, this mean we'll get a dummy after-paint emission before the first frame is actually painted. Instead, move the verification that a "show" command has completed by having the test-runner wait for a "shown" signal on the window, which is emitted in the end of meta_window_show(). This requires an additional call to gdk_display_sync() in the test-client after creating the window, to make sure that the window creation vents has been received in the compositor.
* stack-tracker: Don't sort O-R's under guard window on topJonas Ådahl2018-07-171-1/+19
| | | | | | | | | | | | | | As of "stack-tracker: Keep override redirect windows on top" (e3d5bc077d0ee5dc0368f99d22ce352c696644b9), we always sorted all override redirect on top of regular windows, as so is expected by regular override redirect windows. This had an unwanted consequence, however, which is that we should still not sort such override redirect windows on top if they are behind the guard window, as that'd result in windows hidden behind it now getting restacked anyway. Fix this by only sorting the override redirect windows that are found above the guard window on top. This fixes the override-redirect stacking test.
* ClutterActor: Preserve valid paint volumes till the next relayout/repaintCarlos Garnacho2018-07-131-1/+17
| | | | | | | Cuts down approximately all paint volume calculations when there's windows that redraw frequently, but don't move. https://bugzilla.gnome.org/show_bug.cgi?id=782344
* compositor: Add get_paint_volume() implementation to MetaSurfaceActorCarlos Garnacho2018-07-131-0/+8
| | | | | | | | The special ::pick implementation there makes clutter fall into paths that do require a get_paint_volume() implementation, or an infinite area will be used. Providing a paint volume here is easier on the invalidation mechanism.
* compositor: Do not optimize obscured areas away in paint volumesCarlos Garnacho2018-07-131-36/+1
| | | | | | | | This optimization was presumably added before Clutter was able to invalidate selected regions of an actor. Paint volumes are supposed to be invariable as long as the actor conditions don't change. Stacking of other actors shouldn't affect the paint volume, so it's actually wrong to optimize those areas away here.
* screen-cast-src: Allow negotiating the framerateJonas Ådahl2018-07-131-3/+3
| | | | | | | | | | The framerate for screen cast sources was set to variable within 1 FPS and the framerate of the monitor being screen casted. This meant that if the sink didn't match the framerate (e.g. had a lower max framerate), the formats would not match and a stream would not be established. Allow letting the sink clamp the framerate range by setting it as 'unset', allowing it to be negotiated.