summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* wayland/keyboard: Create a separate keymap shm file per resourceJonas Ådahl2018-08-172-83/+56
| | | | | | | | | | | | | | | | | | | | By using the shm file when sending the keymap to all clients, we effectively allows any client to change the keymap, as any client has the ability to change the content of the file. Sending a read-only file descriptor, or making the file itself read-only before unlinking, can be worked around by the client by using chmod(2) and open(2) on /proc/<pid>/<fd>. Using memfd could potentially solve this issue, but as the usage of mmap with MAP_SHARED is wide spread among clients, such a change can not be introduced without causing wide spread compatibility issues. So, to avoid allowing clients to interfere with each other, create a separate shm file for each wl_keyboard resource when sending the keymap. We could eventually do this per client, but in most cases, there will only be one wl_keyboard resource per client anyway. https://bugzilla.gnome.org/show_bug.cgi?id=784206
* wayland/keyboard: Indentation fixJonas Ådahl2018-08-171-1/+1
|
* Update Friulian translationFabio Tomat2018-08-171-42/+50
|
* Update MSGID_BUGS_ADDRESS in po/MakevarsPiotr Drąg2018-08-161-2/+2
|
* wayland/keyboard: Accept key down serial after key up for popupsJonas Ådahl2018-08-152-6/+22
| | | | | | | | | | | | | If a client maps a popup in response to a key-down event, but the mapping doesn't occur until after the user has already released the same button, we'd immediately dismiss the popup. This is problematic, as one often presses and releases a key quite quickly, meaning any popup mapped on key-down are likely to be dismissed. Avoid this race condition by accepting serials for key down events, if the most recent key-up event had the same keycode. https://gitlab.gnome.org/GNOME/mutter/merge_requests/180
* wayland: Implement text-input from wayland-protocolsCarlos Garnacho2018-08-149-1/+745
| | | | | | | This protocol supersedes the internal gtk_text_input protocol that was in place. Functionally it is very similar, with just some more verbosity in both ways (text_change_cause, .done event), and some improvements wrt the pre-edit text styling.
* wayland: Make gtk-text-input "legacy"Carlos Garnacho2018-08-146-72/+70
| | | | It is superseded by zwp_text_input_v3.
* idle-monitor: Store either 1 or 0 in the inhibited gbooleanJonas Ådahl2018-08-141-2/+3
| | | | | Wrap the flag checking in !!(..) to make sure we always either store TRUE or FALSE in the gboolean.
* backends/x11: Improve grab-device clock updatesJeff Smith2018-08-131-2/+3
| | | | | | | | | | meta_backend_x11_grab_device is performing X server clock comparison using the MAX macro, which comes down to a simple greater-than. Use XSERVER_TIME_IS_BEFORE, which is a better macro for X server clock comparisons, as it accounts for 32-bit wrap-around. https://gitlab.gnome.org/GNOME/mutter/merge_requests/174
* Update Turkish translationEmin Tufan Çetin2018-08-121-66/+76
|
* Update Chinese (Taiwan) translationYi-Jyun Pan2018-08-121-43/+51
|
* Revert "gpu-kms: Handle drmModeGetResources() failing"Jonas Ådahl2018-08-101-31/+5
| | | This reverts commit acf70a35611bfd6c3c4f46279f80fea52873193e
* gpu-kms: Handle drmModeGetResources() failingIain Lane2018-08-101-5/+31
| | | | | | | Avoid dereferencing the NULL return value if it fails. We still create the MetaGpu, but we treat it as if it has no outputs. Closes: https://gitlab.gnome.org/GNOME/mutter/issues/223
* virtual-input/evdev: Translate from button internal codes to evdevJonas Ådahl2018-08-091-6/+29
| | | | | | | | | | | Sending button events to a ClutterVirtualInputDevice, the API expects button codes to be of the internal clutter type. The evdev implementation incorrectly assumed it was already prepared evdev event codes, which was not the case. Fix the evdev implementation to translate from the internal representation to evdev before passing it along to ClutterSeatEvdev. https://gitlab.gnome.org/GNOME/mutter/merge_requests/190
* renderer/native: Fallback to non-planar API if gbm_bo_get_handle_for_plane failsAlex Villacís Lasso2018-08-091-5/+16
| | | | | | | | | | | | | | | | | | | Commit c0d9b08ef9bf2be865aad9bf1bc74ba24c655d9f replaced the old GBM API calls with the multi-plane GBM API. However, the call to gbm_bo_get_handle_for_plane fails for some DRI drivers (in particular i915). Due to missing error checks, the subsequent call to drmModeAddFB[2] fails and the screen output locks up. This commit adds the missing error checks and falls back to the old GBM API (non-planar) if necessary. v5: test success of gbm_bo_get_handle_for_plane instead of errno This commit adopts solution proposed by Daniel van Vugt to check the return value of gbm_bo_get_handle_for_plane on plane 0 and fall back to old non-planar method if the call fails. This removes the errno check (for ENOSYS) that could abort if mesa ever sets a different value. Related to: https://gitlab.gnome.org/GNOME/mutter/issues/127
* 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