Compare commits

...

19 Commits

Author SHA1 Message Date
Florian Müllner
329c4bc5b3 Bump version to 3.33.1
Update NEWS.
2019-05-14 18:14:48 +00:00
Daniel García Moreno
706c5a7565 clutter: LEQUAL depth_testing on ClutterDeformEffect
Moving an actor with a ClutterDeformEffect applied flickers because
the depth_testing, setting the depth testing test function to
COGL_DEPTH_TEST_FUNCTION_LEQUAL fixes the problem.

Fixes https://gitlab.gnome.org/GNOME/mutter/issues/507
2019-05-14 17:44:38 +02:00
Jonas Dreßler
24b3467584 clutter: Send touch crossing events only to grab actor
When the pointer is grabbed, we send the crossing events that are
initiated by this pointer only to the actor that has the grab. For
grabbed touch sequences, we always capture and bubble the crossing
events right now.

Fix this and make grabbed pointers and touch sequences behave the same
by sending touch crossing events only to the grab actor.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/422
2019-05-14 09:05:47 +00:00
Jonas Dreßler
9e0e35d2a7 clutter/click-action: Handle touch cancel events
It's important to cancel click actions when we get a touch cancel event,
otherwise the long press event might get emitted after the compositor
took over the touches because it detected a gesture.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/396
2019-05-13 09:44:50 +00:00
Carlos Garnacho
dae2c1d420 backends/native: Add rt-scheduler experimental key to set RT scheduling
This is similar to a change in kwin:
https://blog.martin-graesslin.com/blog/2017/09/kwinwayland-goes-real-time/

If the experimental features key has "rt-scheduler", make it claim the lowest
of RT scheduler priorities, this will be both educated to other RT processes
and improves responsiveness wrt all other processes.

This can only work if mutter/gnome-shell process receives CAP_SYS_NICE
somehow, e.g.: "setcap CAP_SYS_NICE=+ep `which gnome-shell`"

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/921
https://gitlab.gnome.org/GNOME/mutter/merge_requests/460
2019-05-10 21:47:53 +00:00
Robert Mader
01d0316fd7 wayland/dnd-surface: Propagate commit to parent class
We need to call the underlying actor-surface so the actor
state is synced, otherwise surface state like the scale factor
does not get applied.

Fixes https://gitlab.gnome.org/GNOME/mutter/issues/550

https://gitlab.gnome.org/GNOME/mutter/merge_requests/537
2019-05-09 09:06:52 +00:00
Robert Mader
7e2a0ede16 wayland: Move check for present window out of the actor-surface class
All child classes of `MetaWaylandShellSurface` as well as
`MetaWaylandSurfaceRoleXWayland` should only sync their actor if
their toplevel surface has a window. Currently this check is done
in the actor-surface class, but not all surface classes have a
toplevel window, e.g. dnd-surfaces.
Move the check to the right places.

For subsurfaces this assumes that the subsurface is not the child of
a window-less surface (like, as stated above, e.g. a dnd-surface).
If we want to support subsurfaces of window-less surfaces in the future
we have to extend the check here.
But as this is not a regression, ignore this case for now.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/537
2019-05-09 09:06:52 +00:00
Daniel van Vugt
7738b5c00b core/window: Fix copy/paste error in size-changed docs
It appears it was copied from MetaWindow::position-changed and pasted
for MetaWindow::size-changed, without updating all the words.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/567
2019-05-08 09:28:16 +00:00
Kukuh Syafaat
454651f79f Update Indonesian translation 2019-05-07 07:14:36 +00:00
Carlos Garnacho
bf8bc65cc9 core: Check environment variables before giving to GAppLaunchContext
Depending on the type of session, one or the other might be NULL, which
is not meant to be handled by these functions. Check for both DISPLAY
envvars before setting them on the GAppLaunchContext.

Closes: https://gitlab.gnome.org/GNOME/mutter/issues/586
2019-05-06 17:27:56 +02:00
Fabio Tomat
6a89e7969f Update Friulian translation 2019-05-03 17:43:01 +00:00
Georges Basile Stavracas Neto
3ffc4f8876 ci: Use mutter image to build GNOME Shell
https://gitlab.gnome.org/GNOME/mutter/merge_requests/548
2019-05-03 14:15:31 -03:00
Georges Basile Stavracas Neto
b4d973fbe4 ci: Update gsettings-desktop-schema URLs
Copr keeps changing them.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/548
2019-05-03 14:15:31 -03:00
Georges Basile Stavracas Neto
da1e917b38 ci: Add GNOME Shell dependencies to Dockerfile
Embrace, extend and (soon) extinguish GNOME Shell's CI
image.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/548
2019-05-03 14:15:30 -03:00
Georges Basile Stavracas Neto
160d2d56d9 ci: Install to Mutter and GNOME Shell to /usr
So GNOME Shell can find the pkg-config files properly.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/548
2019-05-03 14:15:30 -03:00
Georges Basile Stavracas Neto
3468144847 ci: Build GNOME Shell at the test stage
Hopefully this will allow us prevent merging branches
that accidentally break GNOME Shell.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/548
2019-05-03 14:15:30 -03:00
Carlos Garnacho
ae6d9e35bd backends: Fallback to builtin panel for devices where all heuristics fail
This is 1) relatively likely as not all touchscreens are nice enough to
report a device size that will help us here and 2) Better than nothing if
everything fails anyway, as it will break on multi-monitor and non-default
monitor rotations.

Closes: https://gitlab.gnome.org/GNOME/mutter/issues/581
2019-05-03 15:01:47 +00:00
Daniel Mustieles
ac15a8abca Updated Spanish translation 2019-05-03 14:31:16 +02:00
Piotr Drąg
5480a3f238 Update POTFILES.in 2019-05-03 12:54:24 +02:00
27 changed files with 298 additions and 84 deletions

View File

@@ -17,7 +17,7 @@ check-commit-log:
build-mutter: build-mutter:
stage: build stage: build
script: script:
- meson . build -Dbuildtype=debugoptimized -Degl_device=true -Dwayland_eglstream=true --werror - meson . build -Dbuildtype=debugoptimized -Degl_device=true -Dwayland_eglstream=true --werror --prefix /usr
- ninja -C build - ninja -C build
- ninja -C build install - ninja -C build install
artifacts: artifacts:
@@ -44,3 +44,17 @@ test-mutter:
only: only:
- merge_requests - merge_requests
- /^.*$/ - /^.*$/
can-build-gnome-shell:
stage: test
dependencies:
- build-mutter
before_script:
- meson install --no-rebuild -C build
script:
- .gitlab-ci/checkout-gnome-shell.sh
- meson gnome-shell gnome-shell/build --prefix /usr
- ninja -C gnome-shell/build install
only:
- merge_requests
- /^.*$/

View File

@@ -2,16 +2,25 @@ FROM fedora:29
RUN dnf -y update && dnf -y upgrade && \ RUN dnf -y update && dnf -y upgrade && \
dnf install -y 'dnf-command(builddep)' && \ dnf install -y 'dnf-command(builddep)' && \
dnf install -y 'dnf-command(copr)' && \
dnf copr enable -y fmuellner/gnome-shell-ci && \
dnf builddep -y mutter && \ dnf builddep -y mutter && \
# Until Fedora catches up with meson build-deps # Until Fedora catches up with meson build-deps
dnf install -y meson xorg-x11-server-Xorg gnome-settings-daemon-devel egl-wayland-devel xorg-x11-server-Xwayland && \ dnf install -y meson xorg-x11-server-Xorg gnome-settings-daemon-devel egl-wayland-devel xorg-x11-server-Xwayland && \
# For running unit tests # For running unit tests
dnf install -y xorg-x11-server-Xvfb mesa-dri-drivers dbus dbus-x11 && \ dnf install -y xorg-x11-server-Xvfb mesa-dri-drivers dbus dbus-x11 '*/xvfb-run' gdm-lib accountsservice-libs && \
# Unpackaged versions # Unpackaged versions
dnf install -y https://copr-be.cloud.fedoraproject.org/results/jadahl/mutter-ci/fedora-29-x86_64/00848426-gsettings-desktop-schemas/gsettings-desktop-schemas-3.30.1-1.20181206git918efdd69be53.fc29.x86_64.rpm https://copr-be.cloud.fedoraproject.org/results/jadahl/mutter-ci/fedora-29-x86_64/00848426-gsettings-desktop-schemas/gsettings-desktop-schemas-devel-3.30.1-1.20181206git918efdd69be53.fc29.x86_64.rpm && \ dnf install -y https://copr-be.cloud.fedoraproject.org/results/jadahl/mutter-ci/fedora-29-x86_64/00834984-gsettings-desktop-schemas/gsettings-desktop-schemas-3.30.1-1.20181206git918efdd69be53.fc29.x86_64.rpm https://copr-be.cloud.fedoraproject.org/results/jadahl/mutter-ci/fedora-29-x86_64/00834984-gsettings-desktop-schemas/gsettings-desktop-schemas-devel-3.30.1-1.20181206git918efdd69be53.fc29.x86_64.rpm && \
dnf install -y intltool redhat-rpm-config make && \ dnf install -y intltool redhat-rpm-config make && \
# GNOME Shell
dnf builddep -y gnome-shell --setopt=install_weak_deps=False && \
dnf remove -y gnome-bluetooth-libs-devel dbus-glib-devel upower-devel python3-devel && \
dnf remove -y --noautoremove mutter mutter-devel && \
dnf clean all dnf clean all

View File

@@ -0,0 +1,35 @@
#!/usr/bin/bash
mutter_branch=$(git describe --contains --all HEAD)
gnome_shell_target=
git clone https://gitlab.gnome.org/GNOME/gnome-shell.git
if [ $? -ne 0 ]; then
echo Checkout failed
exit 1
fi
cd gnome-shell
if [ "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" ]; then
merge_request_remote=${CI_MERGE_REQUEST_SOURCE_PROJECT_URL//mutter/gnome-shell}
merge_request_branch=$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
echo Looking for $merge_request_branch on remote ...
if git fetch -q $merge_request_remote $merge_request_branch 2>/dev/null; then
gnome_shell_target=FETCH_HEAD
else
gnome_shell_target=origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME
echo Using $gnome_shell_target instead
fi
fi
if [ -z "$gnome_shell_target" ]; then
gnome_shell_target=$(git branch -r -l origin/$mutter_branch)
gnome_shell_target=${gnome_shell_target:-$(git branch -r -l ${mutter_branch#remotes/})}
gnome_shell_target=${gnome_shell_target:-origin/master}
echo Using $gnome_shell_target instead
fi
git checkout -q $gnome_shell_target

25
NEWS
View File

@@ -1,3 +1,28 @@
3.33.1
======
* Remove unused APIs and outdated driver support
[Adam; !481, !468, !489, !487, !546]
* Enable EGL_IMG_context_priority [Adam; !454]
* Disable mouse keys with Numlock on [Olivier; #530]
* Fix crash when restarting on X11 [Marco; #576]
* Implement clipboard manager [Carlos; !320]
* Fix spurious idle signals that prevent session unblank [Jonas Å.; !543]
* Fix mapping of touchscreens that don't report dimensions [Carlos; #581]
* Fix propagating fractional scaling factor [Robert; !537]
* Add experimental RT scheduling support [Carlos; !460]
* Misc. bug fixes and cleanups [Robert, Carlos, Olivier, Ray, Marco, Jonas D.,
Georges, Daniel V., Daniel M; !467, !504, !551, !552, #575, #556, !557, !442,
!562, !535, !548, #586, !567, !396, !422, !507]
Contributors:
Jonas Ådahl, Piotr Drąg, Jonas Dreßler, Olivier Fourdan, Carlos Garnacho,
Adam Jackson, Robert Mader, Daniel García Moreno, Florian Müllner,
Georges Basile Stavracas Neto, Ray Strode, Marco Trevisan (Treviño),
Daniel van Vugt
Translators:
Daniel Mustieles [es], Fabio Tomat [fur], Kukuh Syafaat [id]
3.32.1 3.32.1
====== ======
* Fix fallback app menu on wayland [Florian; #493] * Fix fallback app menu on wayland [Florian; #493]

View File

@@ -355,6 +355,10 @@ on_captured_event (ClutterActor *stage,
switch (clutter_event_type (event)) switch (clutter_event_type (event))
{ {
case CLUTTER_TOUCH_CANCEL:
clutter_click_action_release (action);
break;
case CLUTTER_TOUCH_END: case CLUTTER_TOUCH_END:
has_button = FALSE; has_button = FALSE;
case CLUTTER_BUTTON_RELEASE: case CLUTTER_BUTTON_RELEASE:

View File

@@ -282,6 +282,7 @@ clutter_deform_effect_paint_target (ClutterOffscreenEffect *effect)
/* enable depth testing */ /* enable depth testing */
cogl_depth_state_init (&depth_state); cogl_depth_state_init (&depth_state);
cogl_depth_state_set_test_enabled (&depth_state, TRUE); cogl_depth_state_set_test_enabled (&depth_state, TRUE);
cogl_depth_state_set_test_function (&depth_state, COGL_DEPTH_TEST_FUNCTION_LEQUAL);
cogl_pipeline_set_depth_state (pipeline, &depth_state, NULL); cogl_pipeline_set_depth_state (pipeline, &depth_state, NULL);
/* enable backface culling if we have a back material */ /* enable backface culling if we have a back material */

View File

@@ -1021,6 +1021,9 @@ clutter_event_get_event_sequence (const ClutterEvent *event)
event->type == CLUTTER_TOUCH_END || event->type == CLUTTER_TOUCH_END ||
event->type == CLUTTER_TOUCH_CANCEL) event->type == CLUTTER_TOUCH_CANCEL)
return event->touch.sequence; return event->touch.sequence;
else if (event->type == CLUTTER_ENTER ||
event->type == CLUTTER_LEAVE)
return event->crossing.sequence;
return NULL; return NULL;
} }

View File

@@ -269,6 +269,7 @@ struct _ClutterCrossingEvent
gfloat x; gfloat x;
gfloat y; gfloat y;
ClutterInputDevice *device; ClutterInputDevice *device;
ClutterEventSequence *sequence;
ClutterActor *related; ClutterActor *related;
}; };

View File

@@ -834,6 +834,7 @@ _clutter_input_device_set_actor (ClutterInputDevice *device,
event->crossing.x = device->current_x; event->crossing.x = device->current_x;
event->crossing.y = device->current_y; event->crossing.y = device->current_y;
event->crossing.related = actor; event->crossing.related = actor;
event->crossing.sequence = sequence;
clutter_event_set_device (event, device); clutter_event_set_device (event, device);
/* we need to make sure that this event is processed /* we need to make sure that this event is processed
@@ -870,6 +871,7 @@ _clutter_input_device_set_actor (ClutterInputDevice *device,
event->crossing.y = device->current_y; event->crossing.y = device->current_y;
event->crossing.source = actor; event->crossing.source = actor;
event->crossing.related = old_actor; event->crossing.related = old_actor;
event->crossing.sequence = sequence;
clutter_event_set_device (event, device); clutter_event_set_device (event, device);
/* see above */ /* see above */

View File

@@ -2004,6 +2004,36 @@ emit_pointer_event (ClutterEvent *event,
} }
} }
static inline void
emit_crossing_event (ClutterEvent *event,
ClutterInputDevice *device)
{
ClutterMainContext *context = _clutter_context_get_default ();
ClutterEventSequence *sequence = clutter_event_get_event_sequence (event);
ClutterActor *grab_actor = NULL;
if (_clutter_event_process_filters (event))
return;
if (sequence)
{
if (device->sequence_grab_actors != NULL)
grab_actor = g_hash_table_lookup (device->sequence_grab_actors, sequence);
}
else
{
if (context->pointer_grab_actor != NULL)
grab_actor = context->pointer_grab_actor;
else if (device != NULL && device->pointer_grab_actor != NULL)
grab_actor = device->pointer_grab_actor;
}
if (grab_actor != NULL)
clutter_actor_event (grab_actor, event, FALSE);
else
emit_event_chain (event);
}
static inline void static inline void
emit_touch_event (ClutterEvent *event, emit_touch_event (ClutterEvent *event,
ClutterInputDevice *device) ClutterInputDevice *device)
@@ -2177,7 +2207,7 @@ _clutter_process_event_details (ClutterActor *stage,
{ {
ClutterActor *actor = NULL; ClutterActor *actor = NULL;
emit_pointer_event (event, device); emit_crossing_event (event, device);
actor = _clutter_input_device_update (device, NULL, FALSE); actor = _clutter_input_device_update (device, NULL, FALSE);
if (actor != stage) if (actor != stage)
@@ -2189,12 +2219,12 @@ _clutter_process_event_details (ClutterActor *stage,
crossing->crossing.related = stage; crossing->crossing.related = stage;
crossing->crossing.source = actor; crossing->crossing.source = actor;
emit_pointer_event (crossing, device); emit_crossing_event (crossing, device);
clutter_event_free (crossing); clutter_event_free (crossing);
} }
} }
else else
emit_pointer_event (event, device); emit_crossing_event (event, device);
break; break;
case CLUTTER_LEAVE: case CLUTTER_LEAVE:
@@ -2213,10 +2243,10 @@ _clutter_process_event_details (ClutterActor *stage,
crossing->crossing.related = stage; crossing->crossing.related = stage;
crossing->crossing.source = device->cursor_actor; crossing->crossing.source = device->cursor_actor;
emit_pointer_event (crossing, device); emit_crossing_event (crossing, device);
clutter_event_free (crossing); clutter_event_free (crossing);
} }
emit_pointer_event (event, device); emit_crossing_event (event, device);
break; break;
case CLUTTER_DESTROY_NOTIFY: case CLUTTER_DESTROY_NOTIFY:

View File

@@ -120,6 +120,10 @@
framebuffers instead of window content, framebuffers instead of window content,
to manage HiDPI monitors. Does not to manage HiDPI monitors. Does not
require a restart. require a restart.
• “rt-scheduler” — makes mutter request a low priority
real-time scheduling. The executable
or user must have CAP_SYS_NICE.
Requires a restart.
</description> </description>
</key> </key>

View File

@@ -1,5 +1,5 @@
project('mutter', 'c', project('mutter', 'c',
version: '3.32.1', version: '3.33.1',
meson_version: '>= 0.48.0', meson_version: '>= 0.48.0',
license: 'GPLv2+' license: 'GPLv2+'
) )

View File

@@ -26,6 +26,7 @@ src/ui/theme.c
src/wayland/meta-wayland-tablet-pad.c src/wayland/meta-wayland-tablet-pad.c
src/x11/meta-x11-display.c src/x11/meta-x11-display.c
src/x11/meta-x11-errors.c src/x11/meta-x11-errors.c
src/x11/meta-x11-selection-input-stream.c
src/x11/session.c src/x11/session.c
src/x11/window-props.c src/x11/window-props.c
src/x11/xprops.c src/x11/xprops.c

View File

@@ -13,8 +13,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: mutter.master\n" "Project-Id-Version: mutter.master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"POT-Creation-Date: 2019-03-28 12:21+0000\n" "POT-Creation-Date: 2019-05-03 10:54+0000\n"
"PO-Revision-Date: 2019-03-01 12:17+0100\n" "PO-Revision-Date: 2019-05-03 14:28+0200\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n" "Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: es <gnome-es-list@gnome.org>\n" "Language-Team: es <gnome-es-list@gnome.org>\n"
"Language: es\n" "Language: es\n"
@@ -22,7 +22,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Gtranslator 3.31.90\n" "X-Generator: Gtranslator 3.32.0\n"
#: data/50-mutter-navigation.xml:6 #: data/50-mutter-navigation.xml:6
msgid "Navigation" msgid "Navigation"
@@ -534,7 +534,7 @@ msgstr ""
#. TRANSLATORS: This string refers to a button that switches between #. TRANSLATORS: This string refers to a button that switches between
#. * different modes. #. * different modes.
#. #.
#: src/backends/meta-input-settings.c:2424 #: src/backends/meta-input-settings.c:2426
#, c-format #, c-format
msgid "Mode Switch (Group %d)" msgid "Mode Switch (Group %d)"
msgstr "Cambiar modo (grupo %d)" msgstr "Cambiar modo (grupo %d)"
@@ -542,34 +542,34 @@ msgstr "Cambiar modo (grupo %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets' #. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs. #. * mapping through the available outputs.
#. #.
#: src/backends/meta-input-settings.c:2447 #: src/backends/meta-input-settings.c:2449
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Cambiar monitor" msgstr "Cambiar monitor"
#: src/backends/meta-input-settings.c:2449 #: src/backends/meta-input-settings.c:2451
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "Mostrar la ayuda en pantalla" msgstr "Mostrar la ayuda en pantalla"
#: src/backends/meta-monitor-manager.c:955 #: src/backends/meta-monitor-manager.c:976
msgid "Built-in display" msgid "Built-in display"
msgstr "Pantalla integrada" msgstr "Pantalla integrada"
#: src/backends/meta-monitor-manager.c:987 #: src/backends/meta-monitor-manager.c:1008
msgid "Unknown" msgid "Unknown"
msgstr "Desconocida" msgstr "Desconocida"
#: src/backends/meta-monitor-manager.c:989 #: src/backends/meta-monitor-manager.c:1010
msgid "Unknown Display" msgid "Unknown Display"
msgstr "Pantalla desconocida" msgstr "Pantalla desconocida"
#: src/backends/meta-monitor-manager.c:997 #: src/backends/meta-monitor-manager.c:1018
#, c-format #, c-format
msgctxt "" msgctxt ""
"This is a monitor vendor name, followed by a size in inches, like 'Dell 15\"'" "This is a monitor vendor name, followed by a size in inches, like 'Dell 15\"'"
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" msgstr "%s %s"
#: src/backends/meta-monitor-manager.c:1005 #: src/backends/meta-monitor-manager.c:1026
#, c-format #, c-format
msgctxt "" msgctxt ""
"This is a monitor vendor name followed by product/model name where size in " "This is a monitor vendor name followed by product/model name where size in "
@@ -579,7 +579,7 @@ msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running; #. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit #. * we have no way to get it to exit
#: src/compositor/compositor.c:482 #: src/compositor/compositor.c:508
#, c-format #, c-format
msgid "" msgid ""
"Another compositing manager is already running on screen %i on display “%s”." "Another compositing manager is already running on screen %i on display “%s”."
@@ -699,7 +699,7 @@ msgstr "Mutter fue compilado sin soporte para modo prolijo\n"
msgid "Mode Switch: Mode %d" msgid "Mode Switch: Mode %d"
msgstr "Cambiar modo: modo %d" msgstr "Cambiar modo: modo %d"
#: src/x11/meta-x11-display.c:666 #: src/x11/meta-x11-display.c:669
#, c-format #, c-format
msgid "" msgid ""
"Display “%s” already has a window manager; try using the --replace option to " "Display “%s” already has a window manager; try using the --replace option to "
@@ -708,20 +708,25 @@ msgstr ""
"La pantalla «%s» ya tiene un gestor de ventanas; pruebe a usar la opción «--" "La pantalla «%s» ya tiene un gestor de ventanas; pruebe a usar la opción «--"
"replace» para reemplazar el gestor de ventanas activo." "replace» para reemplazar el gestor de ventanas activo."
#: src/x11/meta-x11-display.c:1008 #: src/x11/meta-x11-display.c:1011
msgid "Failed to initialize GDK\n" msgid "Failed to initialize GDK\n"
msgstr "Falló al inicializar GDK\n" msgstr "Falló al inicializar GDK\n"
#: src/x11/meta-x11-display.c:1032 #: src/x11/meta-x11-display.c:1035
#, c-format #, c-format
msgid "Failed to open X Window System display “%s”\n" msgid "Failed to open X Window System display “%s”\n"
msgstr "Ocurrió un error al abrir la pantalla de X Window System «%s»\n" msgstr "Ocurrió un error al abrir la pantalla de X Window System «%s»\n"
#: src/x11/meta-x11-display.c:1113 #: src/x11/meta-x11-display.c:1116
#, c-format #, c-format
msgid "Screen %d on display “%s” is invalid\n" msgid "Screen %d on display “%s” is invalid\n"
msgstr "La ventana %d en la pantalla «%s» no es válida\n" msgstr "La ventana %d en la pantalla «%s» no es válida\n"
#: src/x11/meta-x11-selection-input-stream.c:445
#, c-format
msgid "Format %s not supported"
msgstr "Formato %s no soportado"
#: src/x11/session.c:1821 #: src/x11/session.c:1821
msgid "" msgid ""
"These windows do not support “save current setup” and will have to be " "These windows do not support “save current setup” and will have to be "

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: mutter master\n" "Project-Id-Version: mutter master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"POT-Creation-Date: 2019-02-04 17:52+0000\n" "POT-Creation-Date: 2019-05-03 17:25+0000\n"
"PO-Revision-Date: 2019-02-05 12:13+0100\n" "PO-Revision-Date: 2019-05-03 19:39+0200\n"
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n" "Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
"Language-Team: Friulian <fur@li.org>\n" "Language-Team: Friulian <fur@li.org>\n"
"Language: fur\n" "Language: fur\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.2\n" "X-Generator: Poedit 2.2.1\n"
#: data/50-mutter-navigation.xml:6 #: data/50-mutter-navigation.xml:6
msgid "Navigation" msgid "Navigation"
@@ -522,7 +522,7 @@ msgstr ""
#. TRANSLATORS: This string refers to a button that switches between #. TRANSLATORS: This string refers to a button that switches between
#. * different modes. #. * different modes.
#. #.
#: src/backends/meta-input-settings.c:2423 #: src/backends/meta-input-settings.c:2426
#, c-format #, c-format
msgid "Mode Switch (Group %d)" msgid "Mode Switch (Group %d)"
msgstr "Cambie mût (Grup %d)" msgstr "Cambie mût (Grup %d)"
@@ -530,34 +530,34 @@ msgstr "Cambie mût (Grup %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets' #. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs. #. * mapping through the available outputs.
#. #.
#: src/backends/meta-input-settings.c:2446 #: src/backends/meta-input-settings.c:2449
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Cambie visôr" msgstr "Cambie visôr"
#: src/backends/meta-input-settings.c:2448 #: src/backends/meta-input-settings.c:2451
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "Mostre jutori a schermi" msgstr "Mostre jutori a schermi"
#: src/backends/meta-monitor-manager.c:954 #: src/backends/meta-monitor-manager.c:976
msgid "Built-in display" msgid "Built-in display"
msgstr "Display integrât" msgstr "Display integrât"
#: src/backends/meta-monitor-manager.c:986 #: src/backends/meta-monitor-manager.c:1008
msgid "Unknown" msgid "Unknown"
msgstr "No cognossût" msgstr "No cognossût"
#: src/backends/meta-monitor-manager.c:988 #: src/backends/meta-monitor-manager.c:1010
msgid "Unknown Display" msgid "Unknown Display"
msgstr "Display no cognossût" msgstr "Display no cognossût"
#: src/backends/meta-monitor-manager.c:996 #: src/backends/meta-monitor-manager.c:1018
#, c-format #, c-format
msgctxt "" msgctxt ""
"This is a monitor vendor name, followed by a size in inches, like 'Dell 15\"'" "This is a monitor vendor name, followed by a size in inches, like 'Dell 15\"'"
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" msgstr "%s %s"
#: src/backends/meta-monitor-manager.c:1004 #: src/backends/meta-monitor-manager.c:1026
#, c-format #, c-format
msgctxt "" msgctxt ""
"This is a monitor vendor name followed by product/model name where size in " "This is a monitor vendor name followed by product/model name where size in "
@@ -567,7 +567,7 @@ msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running; #. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit #. * we have no way to get it to exit
#: src/compositor/compositor.c:482 #: src/compositor/compositor.c:508
#, c-format #, c-format
msgid "" msgid ""
"Another compositing manager is already running on screen %i on display “%s”." "Another compositing manager is already running on screen %i on display “%s”."
@@ -575,7 +575,7 @@ msgstr ""
"Un altri compositing manager al è za in esecuzion sul schermi %i sul display " "Un altri compositing manager al è za in esecuzion sul schermi %i sul display "
"“%s”." "“%s”."
#: src/core/bell.c:252 #: src/core/bell.c:192
msgid "Bell event" msgid "Bell event"
msgstr "Event cjampane" msgstr "Event cjampane"
@@ -624,16 +624,16 @@ msgid "Run with X11 backend"
msgstr "Eseguìs cul backend X11" msgstr "Eseguìs cul backend X11"
#. Translators: %s is a window title #. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:150 #: src/core/meta-close-dialog-default.c:151
#, c-format #, c-format
msgid "“%s” is not responding." msgid "“%s” is not responding."
msgstr "“%s” nol rispuint." msgstr "“%s” nol rispuint."
#: src/core/meta-close-dialog-default.c:152 #: src/core/meta-close-dialog-default.c:153
msgid "Application is not responding." msgid "Application is not responding."
msgstr "La aplicazion no rispuint." msgstr "La aplicazion no rispuint."
#: src/core/meta-close-dialog-default.c:157 #: src/core/meta-close-dialog-default.c:158
msgid "" msgid ""
"You may choose to wait a short while for it to continue or force the " "You may choose to wait a short while for it to continue or force the "
"application to quit entirely." "application to quit entirely."
@@ -641,11 +641,11 @@ msgstr ""
"Al è pussibil sielzi di spietâ un pôc lassant che la aplicazion e continui o " "Al è pussibil sielzi di spietâ un pôc lassant che la aplicazion e continui o "
"sfuarçâ la aplicazion par sierâle dal dut." "sfuarçâ la aplicazion par sierâle dal dut."
#: src/core/meta-close-dialog-default.c:164 #: src/core/meta-close-dialog-default.c:165
msgid "_Force Quit" msgid "_Force Quit"
msgstr "Sfuarce _Jessude" msgstr "Sfuarce _Jessude"
#: src/core/meta-close-dialog-default.c:164 #: src/core/meta-close-dialog-default.c:165
msgid "_Wait" msgid "_Wait"
msgstr "_Spiete" msgstr "_Spiete"
@@ -686,7 +686,7 @@ msgstr "Mutter al è stât compilât cence supuart pe modalitât fetose\n"
msgid "Mode Switch: Mode %d" msgid "Mode Switch: Mode %d"
msgstr "Cambie mût: mût %d" msgstr "Cambie mût: mût %d"
#: src/x11/meta-x11-display.c:666 #: src/x11/meta-x11-display.c:669
#, c-format #, c-format
msgid "" msgid ""
"Display “%s” already has a window manager; try using the --replace option to " "Display “%s” already has a window manager; try using the --replace option to "
@@ -695,20 +695,25 @@ msgstr ""
"Il display “%s” al à za un window manager; prove dopre la opzion --replace " "Il display “%s” al à za un window manager; prove dopre la opzion --replace "
"par rimplaçâ chel atuâl." "par rimplaçâ chel atuâl."
#: src/x11/meta-x11-display.c:1008 #: src/x11/meta-x11-display.c:1011
msgid "Failed to initialize GDK\n" msgid "Failed to initialize GDK\n"
msgstr "No si è rivâts a inizializâ GDK\n" msgstr "No si è rivâts a inizializâ GDK\n"
#: src/x11/meta-x11-display.c:1032 #: src/x11/meta-x11-display.c:1035
#, c-format #, c-format
msgid "Failed to open X Window System display “%s”\n" msgid "Failed to open X Window System display “%s”\n"
msgstr "Impussibil vierzi il display “%s” di X Window System\n" msgstr "Impussibil vierzi il display “%s” di X Window System\n"
#: src/x11/meta-x11-display.c:1115 #: src/x11/meta-x11-display.c:1116
#, c-format #, c-format
msgid "Screen %d on display “%s” is invalid\n" msgid "Screen %d on display “%s” is invalid\n"
msgstr "Schermi %d su display “%s” no valit\n" msgstr "Schermi %d su display “%s” no valit\n"
#: src/x11/meta-x11-selection-input-stream.c:445
#, c-format
msgid "Format %s not supported"
msgstr "Il formât %s nol è supuartât"
#: src/x11/session.c:1821 #: src/x11/session.c:1821
msgid "" msgid ""
"These windows do not support “save current setup” and will have to be " "These windows do not support “save current setup” and will have to be "
@@ -717,7 +722,7 @@ msgstr ""
"Chescj barcons no supuartin la funzion “salve impostazions atuâls” e si " "Chescj barcons no supuartin la funzion “salve impostazions atuâls” e si "
"scugnarà tornâ a inviâlis a man tal prossim acès." "scugnarà tornâ a inviâlis a man tal prossim acès."
#: src/x11/window-props.c:568 #: src/x11/window-props.c:569
#, c-format #, c-format
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (su %s)" msgstr "%s (su %s)"

View File

@@ -6,12 +6,13 @@
# Ahmad Riza H Nst <rizahnst@eriagempita.co.id>, 2006. # Ahmad Riza H Nst <rizahnst@eriagempita.co.id>, 2006.
# Dirgita <dirgitadevina@yahoo.co.id>, 2011, 2012, 2014. # Dirgita <dirgitadevina@yahoo.co.id>, 2011, 2012, 2014.
# Andika Triwidada <andika@gmail.com>, 2011-2015. # Andika Triwidada <andika@gmail.com>, 2011-2015.
# Kukuh Syafaat <kukuhsyafaat@gnome.org>, 2017, 2018, 2019.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: mutter master\n" "Project-Id-Version: mutter master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"POT-Creation-Date: 2019-02-04 17:52+0000\n" "POT-Creation-Date: 2019-05-06 16:50+0000\n"
"PO-Revision-Date: 2019-02-06 21:17+0700\n" "PO-Revision-Date: 2019-05-07 14:13+0700\n"
"Last-Translator: Kukuh Syafaat <kukuhsyafaat@gnome.org>\n" "Last-Translator: Kukuh Syafaat <kukuhsyafaat@gnome.org>\n"
"Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n" "Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n"
"Language: id\n" "Language: id\n"
@@ -526,7 +527,7 @@ msgstr ""
#. TRANSLATORS: This string refers to a button that switches between #. TRANSLATORS: This string refers to a button that switches between
#. * different modes. #. * different modes.
#. #.
#: src/backends/meta-input-settings.c:2423 #: src/backends/meta-input-settings.c:2426
#, c-format #, c-format
msgid "Mode Switch (Group %d)" msgid "Mode Switch (Group %d)"
msgstr "Tukar Mode: (Grup %d)" msgstr "Tukar Mode: (Grup %d)"
@@ -534,34 +535,34 @@ msgstr "Tukar Mode: (Grup %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets' #. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs. #. * mapping through the available outputs.
#. #.
#: src/backends/meta-input-settings.c:2446 #: src/backends/meta-input-settings.c:2449
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Berpindah monitor" msgstr "Berpindah monitor"
#: src/backends/meta-input-settings.c:2448 #: src/backends/meta-input-settings.c:2451
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "Tampilkan bantuan pada layar" msgstr "Tampilkan bantuan pada layar"
#: src/backends/meta-monitor-manager.c:954 #: src/backends/meta-monitor-manager.c:976
msgid "Built-in display" msgid "Built-in display"
msgstr "Tampilan bawaan" msgstr "Tampilan bawaan"
#: src/backends/meta-monitor-manager.c:986 #: src/backends/meta-monitor-manager.c:1008
msgid "Unknown" msgid "Unknown"
msgstr "Tak Dikenal" msgstr "Tak Dikenal"
#: src/backends/meta-monitor-manager.c:988 #: src/backends/meta-monitor-manager.c:1010
msgid "Unknown Display" msgid "Unknown Display"
msgstr "Tampilan Tak Dikenal" msgstr "Tampilan Tak Dikenal"
#: src/backends/meta-monitor-manager.c:996 #: src/backends/meta-monitor-manager.c:1018
#, c-format #, c-format
msgctxt "" msgctxt ""
"This is a monitor vendor name, followed by a size in inches, like 'Dell 15\"'" "This is a monitor vendor name, followed by a size in inches, like 'Dell 15\"'"
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" msgstr "%s %s"
#: src/backends/meta-monitor-manager.c:1004 #: src/backends/meta-monitor-manager.c:1026
#, c-format #, c-format
msgctxt "" msgctxt ""
"This is a monitor vendor name followed by product/model name where size in " "This is a monitor vendor name followed by product/model name where size in "
@@ -571,14 +572,14 @@ msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running; #. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit #. * we have no way to get it to exit
#: src/compositor/compositor.c:482 #: src/compositor/compositor.c:508
#, c-format #, c-format
msgid "" msgid ""
"Another compositing manager is already running on screen %i on display “%s”." "Another compositing manager is already running on screen %i on display “%s”."
msgstr "" msgstr ""
"Manajer komposit lain telah berjalan pada layar %i pada tampilan \"%s\"." "Manajer komposit lain telah berjalan pada layar %i pada tampilan \"%s\"."
#: src/core/bell.c:252 #: src/core/bell.c:192
msgid "Bell event" msgid "Bell event"
msgstr "Bel peristiwa" msgstr "Bel peristiwa"
@@ -627,27 +628,27 @@ msgid "Run with X11 backend"
msgstr "Jalankan dengan backend X11" msgstr "Jalankan dengan backend X11"
#. Translators: %s is a window title #. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:150 #: src/core/meta-close-dialog-default.c:151
#, c-format #, c-format
msgid "“%s” is not responding." msgid "“%s” is not responding."
msgstr "\"%s\" tak merespon." msgstr "\"%s\" tak merespon."
#: src/core/meta-close-dialog-default.c:152 #: src/core/meta-close-dialog-default.c:153
msgid "Application is not responding." msgid "Application is not responding."
msgstr "Aplikasi tak merespon." msgstr "Aplikasi tak merespon."
#: src/core/meta-close-dialog-default.c:157 #: src/core/meta-close-dialog-default.c:158
msgid "" msgid ""
"You may choose to wait a short while for it to continue or force the " "You may choose to wait a short while for it to continue or force the "
"application to quit entirely." "application to quit entirely."
msgstr "" msgstr ""
"Anda bisa memilih untuk menunggu sebentar atau memaksa aplikasi keluar." "Anda bisa memilih untuk menunggu sebentar atau memaksa aplikasi keluar."
#: src/core/meta-close-dialog-default.c:164 #: src/core/meta-close-dialog-default.c:165
msgid "_Force Quit" msgid "_Force Quit"
msgstr "_Matikan Paksa" msgstr "_Matikan Paksa"
#: src/core/meta-close-dialog-default.c:164 #: src/core/meta-close-dialog-default.c:165
msgid "_Wait" msgid "_Wait"
msgstr "_Tunggu" msgstr "_Tunggu"
@@ -689,7 +690,7 @@ msgstr "Muter dikompilasi tanpa dukungan mode riuh\n"
msgid "Mode Switch: Mode %d" msgid "Mode Switch: Mode %d"
msgstr "Tukar Mode: Mode %d" msgstr "Tukar Mode: Mode %d"
#: src/x11/meta-x11-display.c:666 #: src/x11/meta-x11-display.c:669
#, c-format #, c-format
msgid "" msgid ""
"Display “%s” already has a window manager; try using the --replace option to " "Display “%s” already has a window manager; try using the --replace option to "
@@ -698,20 +699,25 @@ msgstr ""
"Tampilan \"%s\" sudah memiliki manajer jendela; cobalah gunakan pilihan --" "Tampilan \"%s\" sudah memiliki manajer jendela; cobalah gunakan pilihan --"
"replace untuk mengganti manajer jendela saat ini." "replace untuk mengganti manajer jendela saat ini."
#: src/x11/meta-x11-display.c:1008 #: src/x11/meta-x11-display.c:1011
msgid "Failed to initialize GDK\n" msgid "Failed to initialize GDK\n"
msgstr "Gagal menginisialisasi GDK\n" msgstr "Gagal menginisialisasi GDK\n"
#: src/x11/meta-x11-display.c:1032 #: src/x11/meta-x11-display.c:1035
#, c-format #, c-format
msgid "Failed to open X Window System display “%s”\n" msgid "Failed to open X Window System display “%s”\n"
msgstr "Gagal membuka tampilan X Window System \"%s\"\n" msgstr "Gagal membuka tampilan X Window System \"%s\"\n"
#: src/x11/meta-x11-display.c:1115 #: src/x11/meta-x11-display.c:1116
#, c-format #, c-format
msgid "Screen %d on display “%s” is invalid\n" msgid "Screen %d on display “%s” is invalid\n"
msgstr "Layar %d pada tampilan \"%s\" tidak valid\n" msgstr "Layar %d pada tampilan \"%s\" tidak valid\n"
#: src/x11/meta-x11-selection-input-stream.c:445
#, c-format
msgid "Format %s not supported"
msgstr "Format %s tidak didukung"
#: src/x11/session.c:1821 #: src/x11/session.c:1821
msgid "" msgid ""
"These windows do not support “save current setup” and will have to be " "These windows do not support “save current setup” and will have to be "
@@ -720,7 +726,7 @@ msgstr ""
"Jendela ini tidak mendukung \"menyimpan setelan aktif saat ini\" dan mesti " "Jendela ini tidak mendukung \"menyimpan setelan aktif saat ini\" dan mesti "
"dijalankan ulang secara manual kala berikut Anda log masuk." "dijalankan ulang secara manual kala berikut Anda log masuk."
#: src/x11/window-props.c:568 #: src/x11/window-props.c:569
#, c-format #, c-format
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (pada %s)" msgstr "%s (pada %s)"

View File

@@ -381,7 +381,7 @@ guess_candidates (MetaInputMapper *mapper,
info->candidates[META_MATCH_SIZE] = matched_monitor; info->candidates[META_MATCH_SIZE] = matched_monitor;
} }
if (input->builtin) if (input->builtin || best == N_OUTPUT_MATCHES)
{ {
best = MIN (best, META_MATCH_IS_BUILTIN); best = MIN (best, META_MATCH_IS_BUILTIN);
find_builtin_output (mapper, &info->candidates[META_MATCH_IS_BUILTIN]); find_builtin_output (mapper, &info->candidates[META_MATCH_IS_BUILTIN]);

View File

@@ -33,6 +33,7 @@ typedef enum _MetaExperimentalFeature
META_EXPERIMENTAL_FEATURE_NONE = 0, META_EXPERIMENTAL_FEATURE_NONE = 0,
META_EXPERIMENTAL_FEATURE_SCALE_MONITOR_FRAMEBUFFER = (1 << 0), META_EXPERIMENTAL_FEATURE_SCALE_MONITOR_FRAMEBUFFER = (1 << 0),
META_EXPERIMENTAL_FEATURE_KMS_MODIFIERS = (1 << 1), META_EXPERIMENTAL_FEATURE_KMS_MODIFIERS = (1 << 1),
META_EXPERIMENTAL_FEATURE_RT_SCHEDULER = (1 << 2),
} MetaExperimentalFeature; } MetaExperimentalFeature;
#define META_TYPE_SETTINGS (meta_settings_get_type ()) #define META_TYPE_SETTINGS (meta_settings_get_type ())

View File

@@ -264,6 +264,8 @@ experimental_features_handler (GVariant *features_variant,
features |= META_EXPERIMENTAL_FEATURE_SCALE_MONITOR_FRAMEBUFFER; features |= META_EXPERIMENTAL_FEATURE_SCALE_MONITOR_FRAMEBUFFER;
else if (g_str_equal (feature, "kms-modifiers")) else if (g_str_equal (feature, "kms-modifiers"))
features |= META_EXPERIMENTAL_FEATURE_KMS_MODIFIERS; features |= META_EXPERIMENTAL_FEATURE_KMS_MODIFIERS;
else if (g_str_equal (feature, "rt-scheduler"))
features |= META_EXPERIMENTAL_FEATURE_RT_SCHEDULER;
else else
g_info ("Unknown experimental feature '%s'\n", feature); g_info ("Unknown experimental feature '%s'\n", feature);
} }

View File

@@ -37,6 +37,7 @@
#include "backends/native/meta-backend-native.h" #include "backends/native/meta-backend-native.h"
#include "backends/native/meta-backend-native-private.h" #include "backends/native/meta-backend-native-private.h"
#include <sched.h>
#include <stdlib.h> #include <stdlib.h>
#include "backends/meta-cursor-tracker-private.h" #include "backends/meta-cursor-tracker-private.h"
@@ -44,6 +45,7 @@
#include "backends/meta-logical-monitor.h" #include "backends/meta-logical-monitor.h"
#include "backends/meta-monitor-manager-private.h" #include "backends/meta-monitor-manager-private.h"
#include "backends/meta-pointer-constraint.h" #include "backends/meta-pointer-constraint.h"
#include "backends/meta-settings-private.h"
#include "backends/meta-stage-private.h" #include "backends/meta-stage-private.h"
#include "backends/native/meta-barrier-native.h" #include "backends/native/meta-barrier-native.h"
#include "backends/native/meta-clutter-backend-native.h" #include "backends/native/meta-clutter-backend-native.h"
@@ -331,6 +333,7 @@ static void
meta_backend_native_post_init (MetaBackend *backend) meta_backend_native_post_init (MetaBackend *backend)
{ {
ClutterDeviceManager *manager = clutter_device_manager_get_default (); ClutterDeviceManager *manager = clutter_device_manager_get_default ();
MetaSettings *settings = meta_backend_get_settings (backend);
META_BACKEND_CLASS (meta_backend_native_parent_class)->post_init (backend); META_BACKEND_CLASS (meta_backend_native_parent_class)->post_init (backend);
@@ -338,6 +341,20 @@ meta_backend_native_post_init (MetaBackend *backend)
NULL, NULL); NULL, NULL);
clutter_evdev_set_relative_motion_filter (manager, relative_motion_filter, clutter_evdev_set_relative_motion_filter (manager, relative_motion_filter,
meta_backend_get_monitor_manager (backend)); meta_backend_get_monitor_manager (backend));
if (meta_settings_is_experimental_feature_enabled (settings,
META_EXPERIMENTAL_FEATURE_RT_SCHEDULER))
{
int retval;
struct sched_param sp = {
.sched_priority = sched_get_priority_min (SCHED_RR)
};
retval = sched_setscheduler (0, SCHED_RR | SCHED_RESET_ON_FORK, &sp);
if (retval != 0)
g_warning ("Failed to set RT scheduler: %m");
}
} }
static MetaMonitorManager * static MetaMonitorManager *

View File

@@ -110,13 +110,24 @@ static void
meta_launch_context_constructed (GObject *object) meta_launch_context_constructed (GObject *object)
{ {
MetaLaunchContext *context = META_LAUNCH_CONTEXT (object); MetaLaunchContext *context = META_LAUNCH_CONTEXT (object);
const char *x11_display, *wayland_display;
G_OBJECT_CLASS (meta_launch_context_parent_class)->constructed (object); G_OBJECT_CLASS (meta_launch_context_parent_class)->constructed (object);
g_app_launch_context_setenv (G_APP_LAUNCH_CONTEXT (context), x11_display = getenv ("DISPLAY");
"DISPLAY", getenv ("DISPLAY")); wayland_display = getenv ("WAYLAND_DISPLAY");
g_app_launch_context_setenv (G_APP_LAUNCH_CONTEXT (context),
"WAYLAND_DISPLAY", getenv ("WAYLAND_DISPLAY")); if (x11_display)
{
g_app_launch_context_setenv (G_APP_LAUNCH_CONTEXT (context),
"DISPLAY", x11_display);
}
if (wayland_display)
{
g_app_launch_context_setenv (G_APP_LAUNCH_CONTEXT (context),
"WAYLAND_DISPLAY", wayland_display);
}
} }
static gchar * static gchar *

View File

@@ -692,7 +692,7 @@ meta_window_class_init (MetaWindowClass *klass)
* MetaWindow::size-changed: * MetaWindow::size-changed:
* @window: a #MetaWindow * @window: a #MetaWindow
* *
* This is emitted when the position of a window might * This is emitted when the size of a window might
* have changed. Specifically, this is emitted when the * have changed. Specifically, this is emitted when the
* size of the toplevel window has changed, or when the * size of the toplevel window has changed, or when the
* size of the client window has changed. * size of the client window has changed.

View File

@@ -253,16 +253,9 @@ meta_wayland_actor_surface_commit (MetaWaylandSurfaceRole *surface_role,
{ {
MetaWaylandActorSurface *actor_surface = MetaWaylandActorSurface *actor_surface =
META_WAYLAND_ACTOR_SURFACE (surface_role); META_WAYLAND_ACTOR_SURFACE (surface_role);
MetaWaylandSurface *surface =
meta_wayland_surface_role_get_surface (surface_role);
MetaWaylandSurface *toplevel_surface;
meta_wayland_actor_surface_queue_frame_callbacks (actor_surface, pending); meta_wayland_actor_surface_queue_frame_callbacks (actor_surface, pending);
toplevel_surface = meta_wayland_surface_get_toplevel (surface);
if (!toplevel_surface || !toplevel_surface->window)
return;
meta_wayland_actor_surface_sync_actor_state (actor_surface); meta_wayland_actor_surface_sync_actor_state (actor_surface);
} }

View File

@@ -45,8 +45,12 @@ dnd_surface_commit (MetaWaylandSurfaceRole *surface_role,
{ {
MetaWaylandSurface *surface = MetaWaylandSurface *surface =
meta_wayland_surface_role_get_surface (surface_role); meta_wayland_surface_role_get_surface (surface_role);
MetaWaylandSurfaceRoleClass *surface_role_class =
META_WAYLAND_SURFACE_ROLE_CLASS (meta_wayland_surface_role_dnd_parent_class);
meta_wayland_surface_queue_pending_state_frame_callbacks (surface, pending); meta_wayland_surface_queue_pending_state_frame_callbacks (surface, pending);
surface_role_class->commit (surface_role, pending);
} }
static void static void

View File

@@ -175,6 +175,22 @@ meta_wayland_shell_surface_surface_commit (MetaWaylandSurfaceRole *surface_role
window->buffer_rect.height = cogl_texture_get_height (texture) * scale; window->buffer_rect.height = cogl_texture_get_height (texture) * scale;
} }
static void
meta_wayland_shell_surface_sync_actor_state (MetaWaylandActorSurface *actor_surface)
{
MetaWaylandSurfaceRole *surface_role =
META_WAYLAND_SURFACE_ROLE (actor_surface);
MetaWaylandSurface *surface =
meta_wayland_surface_role_get_surface (surface_role);
MetaWaylandActorSurfaceClass *actor_surface_class =
META_WAYLAND_ACTOR_SURFACE_CLASS (meta_wayland_shell_surface_parent_class);
MetaWaylandSurface *toplevel_surface;
toplevel_surface = meta_wayland_surface_get_toplevel (surface);
if (toplevel_surface && toplevel_surface->window)
actor_surface_class->sync_actor_state (actor_surface);
}
static void static void
meta_wayland_shell_surface_init (MetaWaylandShellSurface *role) meta_wayland_shell_surface_init (MetaWaylandShellSurface *role)
{ {
@@ -185,6 +201,10 @@ meta_wayland_shell_surface_class_init (MetaWaylandShellSurfaceClass *klass)
{ {
MetaWaylandSurfaceRoleClass *surface_role_class = MetaWaylandSurfaceRoleClass *surface_role_class =
META_WAYLAND_SURFACE_ROLE_CLASS (klass); META_WAYLAND_SURFACE_ROLE_CLASS (klass);
MetaWaylandActorSurfaceClass *actor_surface_class =
META_WAYLAND_ACTOR_SURFACE_CLASS (klass);
surface_role_class->commit = meta_wayland_shell_surface_surface_commit; surface_role_class->commit = meta_wayland_shell_surface_surface_commit;
actor_surface_class->sync_actor_state =
meta_wayland_shell_surface_sync_actor_state;
} }

View File

@@ -199,8 +199,11 @@ meta_wayland_subsurface_sync_actor_state (MetaWaylandActorSurface *actor_surface
meta_wayland_surface_role_get_surface (surface_role); meta_wayland_surface_role_get_surface (surface_role);
MetaWaylandActorSurfaceClass *actor_surface_class = MetaWaylandActorSurfaceClass *actor_surface_class =
META_WAYLAND_ACTOR_SURFACE_CLASS (meta_wayland_subsurface_parent_class); META_WAYLAND_ACTOR_SURFACE_CLASS (meta_wayland_subsurface_parent_class);
MetaWaylandSurface *toplevel_surface;
actor_surface_class->sync_actor_state (actor_surface); toplevel_surface = meta_wayland_surface_get_toplevel (surface);
if (toplevel_surface && toplevel_surface->window)
actor_surface_class->sync_actor_state (actor_surface);
sync_actor_subsurface_state (surface); sync_actor_subsurface_state (surface);
} }

View File

@@ -647,6 +647,20 @@ xwayland_surface_get_toplevel (MetaWaylandSurfaceRole *surface_role)
return meta_wayland_surface_role_get_surface (surface_role); return meta_wayland_surface_role_get_surface (surface_role);
} }
static void
xwayland_surface_sync_actor_state (MetaWaylandActorSurface *actor_surface)
{
MetaWaylandSurfaceRole *surface_role =
META_WAYLAND_SURFACE_ROLE (actor_surface);
MetaWaylandSurface *surface =
meta_wayland_surface_role_get_surface (surface_role);
MetaWaylandActorSurfaceClass *actor_surface_class =
META_WAYLAND_ACTOR_SURFACE_CLASS (meta_wayland_surface_role_xwayland_parent_class);
if (surface->window)
actor_surface_class->sync_actor_state (actor_surface);
}
static void static void
meta_wayland_surface_role_xwayland_init (MetaWaylandSurfaceRoleXWayland *role) meta_wayland_surface_role_xwayland_init (MetaWaylandSurfaceRoleXWayland *role)
{ {
@@ -657,11 +671,15 @@ meta_wayland_surface_role_xwayland_class_init (MetaWaylandSurfaceRoleXWaylandCla
{ {
MetaWaylandSurfaceRoleClass *surface_role_class = MetaWaylandSurfaceRoleClass *surface_role_class =
META_WAYLAND_SURFACE_ROLE_CLASS (klass); META_WAYLAND_SURFACE_ROLE_CLASS (klass);
MetaWaylandActorSurfaceClass *actor_surface_class =
META_WAYLAND_ACTOR_SURFACE_CLASS (klass);
surface_role_class->assigned = xwayland_surface_assigned; surface_role_class->assigned = xwayland_surface_assigned;
surface_role_class->commit = xwayland_surface_commit; surface_role_class->commit = xwayland_surface_commit;
surface_role_class->get_toplevel = xwayland_surface_get_toplevel; surface_role_class->get_toplevel = xwayland_surface_get_toplevel;
actor_surface_class->sync_actor_state = xwayland_surface_sync_actor_state;
xwayland_surface_signals[XWAYLAND_SURFACE_WINDOW_ASSOCIATED] = xwayland_surface_signals[XWAYLAND_SURFACE_WINDOW_ASSOCIATED] =
g_signal_new ("window-associated", g_signal_new ("window-associated",
G_TYPE_FROM_CLASS (klass), G_TYPE_FROM_CLASS (klass),