Compare commits

..

15 Commits

Author SHA1 Message Date
Carlos Garnacho
7e3f96d972 backends: Prepare for virtual devices
Those have no backing libinput_device, and configuration does not
apply to those.

https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-07-26 18:45:26 +02:00
Carlos Garnacho
5f91d34f88 clutter/evdev: Implement ClutterVirtualInputDevice::notify_keyval
This is somewhat gross at the moment, because we're after all mimicking
real keyboard events, we can only lookup keycodes that are available
in the current map, and the control of levels is rather limited.

Eventually, we want to implement the text_input protocol, handle these
events separately to MetaWaylandKeyboard, so event->key.keyval is
is guaranteed to be the final result. Until then, this is the farthest
we can get.

https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-07-26 18:45:26 +02:00
Carlos Garnacho
d0a708b42c clutter: Add ClutterVirtualInputDevice vmethod to notify keysyms
Evcodes don't cut it when we have something already specifying the
character to be printed, despite the current group/level. This API
allows some more control on the intended output.

https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-07-26 18:45:26 +02:00
Carlos Garnacho
d940d5e581 clutter: Make ClutterVirtualInputDevice public
This includes adding documentation and introspection annotations,
and marking the functions as extern.

https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-07-26 18:45:26 +02:00
Carlos Garnacho
70f69e5de4 clutter/evdev: Allow specifying the ClutterInputMode of virtual devices
The seat core keyboard/pointer will be "master", the ones created through
ClutterVirtualInputDevice will be "slaves".

https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-07-26 18:45:25 +02:00
Jonas Ådahl
c2ce0e6795 ClutterVirtualInputDeviceEvdev: Forward button and key presses
https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-07-26 18:45:25 +02:00
Jonas Ådahl
adbd566f83 ClutterSeatEvdev: Keep track of button count
libinput does it for us, but only for physical devices. When we add
virtual devices to the same seat, we need to track button press count
ourself.

https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-07-26 18:45:25 +02:00
Jonas Ådahl
f511f65a14 ClutterVirtualInputDeviceEvdev: Forward motion events
https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-07-26 18:45:25 +02:00
Jonas Ådahl
0942d68f1a ClutterVirtualInputDeviceEvdev: Create associated ClutterInputDevice
https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-07-26 18:45:25 +02:00
Jonas Ådahl
73d5d837db ClutterVirtualInputDeviceEvdev: Construct with a specific seat
We are still single seated, so until we are properly multi seated its
always the main seat.

https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-07-26 18:45:25 +02:00
Jonas Ådahl
ea5b691ac6 ClutterVirtualInputDevice: Store the device type
https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-07-26 18:45:25 +02:00
Jonas Ådahl
53d1b11386 clutter/evdev: Move keyboard and pointer notification into seat
We notify per seat; so lets move the logic there. Touch and tablets to
follow later.

https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-07-26 18:45:25 +02:00
Jonas Ådahl
85e8feca67 ClutterVirtualInputDevice: Keep track of the device manager
https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-07-26 18:45:25 +02:00
Jonas Ådahl
fb47374629 ClutterDeviceManagerEvdev: Split out seat into a separate file
Split out ClutterSeatEvdev functionality into a separate file.

https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-07-26 18:45:25 +02:00
Jonas Ådahl
9a92d5fe89 clutter: Add virtual input device API
Virtual input devices aim to enable injecting input events as if they
came from hardware events. This is useful for things such as remote
controlling, for example via a remote desktop session.

The API so far only consists of stumps.

https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-07-26 18:45:25 +02:00
297 changed files with 17875 additions and 34034 deletions

9
.gitignore vendored
View File

@@ -41,14 +41,8 @@ stamp-h1
*~ *~
stamp-it stamp-it
.intltool-merge-cache .intltool-merge-cache
ABOUT-NLS
POTFILES POTFILES
Makevars.template
po/*.header
po/*.pot po/*.pot
po/*.sed
po/*.sin
Rules-quot
libmutter.pc libmutter.pc
mutter mutter
mutter-restart-helper mutter-restart-helper
@@ -83,10 +77,7 @@ src/relative-pointer-unstable-v*-protocol.c
src/relative-pointer-unstable-v*-server-protocol.h src/relative-pointer-unstable-v*-server-protocol.h
src/pointer-constraints-unstable-v*-protocol.c src/pointer-constraints-unstable-v*-protocol.c
src/pointer-constraints-unstable-v*-server-protocol.h src/pointer-constraints-unstable-v*-server-protocol.h
src/xdg-foreign-unstable-v*-protocol.c
src/xdg-foreign-unstable-v*-server-protocol.h
src/meta/meta-version.h src/meta/meta-version.h
src/libmutter-*.pc
doc/reference/*.args doc/reference/*.args
doc/reference/*.bak doc/reference/*.bak
doc/reference/*.hierarchy doc/reference/*.hierarchy

215
NEWS
View File

@@ -1,218 +1,3 @@
3.24.0
======
Translations:
Yuri Myasoedov [ru], Rūdolfs Mazurs [lv], Jordi Mas [ca]
3.23.92
=======
* Properly handle EGLOutput acquire errors [Jonas, Miguel; #779112]
* Fix crash when a window closes during Alt+Tab [Rui; #779483]
* Implement DnD handling code in wayland [Hyungwon; #765003]
* Fix fallout from pixel conversion optimization in 3.23.91 [Carlos; #779234]
* Fix mouse input stopping to work in applications [Carlos; #763246]
* Fix DnD between QT5 and GTK3 applications on wayland [Carlos; #779757]
* Make EDID reading less fragile [Jonas; #779837]
* Add support for tablet grouping [Carlos; #779986]
* Misc. bug fixes and cleanups [Rui, Jonas; #779436, #779001, #779745]
Contributors:
Jonas Ådahl, Miguel A. Vico, Olivier Fourdan, Carlos Garnacho,
Hyungwon Hwang, Rui Matos
Translations:
Chao-Hsiung Liao [zh_TW], Sveinn í Felli [is], Ask Hjorth Larsen [da],
Changwoo Ryu [ko], Aurimas Černius [lt], GNOME Translation Robot [gd],
Marek Černocký [cs], Fran Dieguez [gl], Dušan Kazik [sk]
3.23.91
=======
* Give libinput read-only access to /sys [Carlos; #778472]
* Allow edge-scrolling without 2-finger-scroll capable devices [Rui; #778554]
* Fullscreen windows on the requested monitor on wayland [Rui; #772525]
* Implement threaded swap_event fallback for NVIDIA driver [Owen; #779039]
* Avoid pixel conversions when storing textures from cairo [Carlos; #779234]
* Misc. bug fixes [Piotr, Rui, Florian; #772218, #776919, #778831, #642652]
Contributors:
Piotr Drąg, Carlos Garnacho, Rui Matos, Florian Müllner, Owen W. Taylor
Translations:
Inaki Larranaga Murgoitio [eu], Daniel Mustieles [es], Claude Paroz [fr],
Mario Blättermann [de], Kjartan Maraas [nb], Piotr Drąg [pl],
Andika Triwidada [id], Anders Jonsson [sv], Milo Casagrande [it],
Fabio Tomat [fur], Rafael Fontenelle [pt_BR],
Мирослав Николић [sr, sr@latin], Balázs Meskó [hu], Chao-Hsiung Liao [zh_TW]
3.23.90
=======
* Fix window menu placement with HiDPI [Jonas; #776055]
* Improve EGLStream support [Jonas; #773629]
* Start moving low-level monitor configuration into mutter [Jonas; #777732]
* Fix erroneous key event repeats [Rui; #774989]
* Don't hardcode seat ID in ClutterDeviceManager [Carlos; #778092]
* Fix "ghost" cursors in multi-monitor setups [Jonas; #771056]
* Use eglGetPlatformDisplay [Adam; #772422]
* Fix erratic raise_or_lower behavior [Jose; #705200]
* Fix coordinate mapping of absolute devices [Carlos; #774115]
* Show OSD on tablet mode switches [Carlos; #771098]
* Make mutter libs parallel installable [Jonas; #777317]
* Only apply keymap when not running nested [Jonas; #777800]
* Set right scale for tablet tool cursors on HiDPI [Carlos; #778474]
* Adjust server-side shadows to match Adwaita [Juraj; #744667]
* Misc. bug fixes [Jonas, Bastien, Carlos, Peter, Lionel, Jeremy, Florian;
#774891, #777389, #777691, #778262, #776543, #778684, #778699, #744667]
Contributors:
Jonas Ådahl, Jeremy Bicha, Piotr Drąg, Juraj Fiala, Carlos Garnacho,
Peter Hutterer, Adam Jackson, Lionel Landwerlin, Jose Marino, Rui Matos,
Florian Müllner, Bastien Nocera
Translations:
Kjartan Maraas [nb], Mandy Wang [zh_CN], Marek Černocký [cs],
Anders Jonsson [sv], Dušan Kazik [sk], Piotr Drąg [pl], Matej Urbančič [sl]
3.23.3
======
* Fix frequent freezes in multihead setups on wayland [Rui; #774557]
* Preserve root window mask on XSelectionRequest [Olivier; #776128]
* Misc. bug fixes [Carlos, Florian, Rui, Olivier; #775478, #774891, #775986,
#776036]
Contributors:
Olivier Fourdan, Carlos Garnacho, Rui Matos, Florian Müllner
3.23.2
======
* Stack docks below other windows on fullscreen monitors [Rui; #772937]
* Fix popup grabs blocking screen lock on wayland [Rui; #771235]
* Handle touchpad pinch gestures with more than two fingers [Carlos; #765937]
* Implement drawing tablet support on X11 [Carlos; #773779]
* Fix some Wine games starting minimized [Carlos; #774333]
* Fix switching between two finger- and edge scrolling on wayland [Rui; #771744]
* Implement support for EGLStream/EGLDevice [Jonas; #773629]
* Add size_changed vfunc to handle async client size changes [Rui; #770345]
* Change focus window on clicks with any modifiers [Rui; #746642]
* Misc. bug fixes and cleanups [Carlos, Daniel, Jonas, Rui; #771067, #774330, #774613,
#771297, #774135, #774827, #774923]
Contributors:
Jonas Ådahl, Carlos Garnacho, Rui Matos, Florian Müllner, Daniel Stone
Translations:
Kjartan Maraas [nb]
3.23.1
======
* Fix handling of Escape shortcut in force-quit dialog [Landry; #737109]
* Improve pointer constraints support [Jonas; #771859]
* Really fix framebuffer capture origin offset [Rui; #771502]
* Fix session going into idle mode immediately on startup [Rui; #772839]
* Fix mirror mode with stage views [Rui; #773115]
* Fall back to X with connectors spread across multiple GPUs [Ray; #771442]
* Fix various crashes on wayland [Jonas, Carlos; #771646, #771858, #772929]
* Fix various placement issues on wayland [Olivier, Jonas, Sjoerd; #772729,
#768039, #771841, #771841, #773141]
* Misc. bug fixes [Rui, Jonas, Olivier; #771019, #773116, #772914, #773210]
Contributors:
Jonas Ådahl, Olivier Fourdan, Carlos Garnacho, Rui Matos, Landry MINOZA,
Sjoerd Simons, Ray Strode
Translations:
Theppitak Karoonboonyanan [th], Kjartan Maraas [nb], Hannie Dumoleyn [nl],
liushuyu [zh_CN]
3.22.1
======
* Fix feedback loop between StClipboard and X11 bridge [Carlos; #760745]
* Fall back gracefully if DRM plane rotation fails [Carlos; #772512]
* Approximate native monitor backend behavior to X [Rui; #772176]
* Fix crash on VT switch on wayland [Jonas; #771646]
* Expose Flatpak ID for application matching [Florian; #772613, #772614]
Contributors:
Jonas Ådahl, Carlos Garnacho, Rui Matos, Florian Müllner, Olav Vitters
Translations:
Inaki Larranaga Murgoitio [eu], Milo Casagrande [it]
3.22.0
======
* Fix wayland crashes [Jonas; #771305, #771345, #770940, #771495]
* Fix display rotation on wayland [Jonas; #770672]
* Fix framebuffer capture origin offset [Rui; #771502]
* Misc. bug fixes [Jonas, Florian, Carlos; #770937, #771536, #771628, #771549]
Contributors:
Jonas Ådahl, Carlos Garnacho, Rui Matos, Florian Müllner
Translations:
Ask Hjorth Larsen [da], Charles Monzat [fr], Stas Solovey [ru],
Tom Tryfonidis [el], David King [en_GB]
3.21.92
=======
* Fix absolute pointer motion events on wayland [Jonas; #770557]
* Default to using stage views [Jonas; #770366]
* Fix animated cursors on wayland [Rui; #749913]
* Fix various crashes on wayland [Jonas; #757568, #770727, #770992]
* Fix screen capture for stage views not at (0, 0) [Jonas; #770127]
* Compress motion events instead of discarding them [Jonas; #771049]
* Fix XWayland pointer warp emulation [Jonas; #771050]
* Add common monitor modes in KMS backend [Rui; #744544]
* Temporarily use g-s-d schemas for tablet configuration [Carlos; #771315]
* Misc. bug fixes [Jonas, Carlos; #770402, #770647, #770991, #770994, #770929]
Contributors:
Jonas Ådahl, Olivier Fourdan, Carlos Garnacho, Rui Matos, Florian Müllner
Translations:
Changwoo Ryu [ko], Baurzhan Muftakhidinov [kk], Anders Jonsson [sv],
Tiago Santos [pt], Rafael Fontenelle [pt_BR], Mario Blättermann [de],
Alexander Shopov [bg], Rūdolfs Mazurs [lv], Fran Dieguez [gl],
Trần Ngọc Quân [vi], Piotr Drąg [pl], Мирослав Николић [sr, sr@latin]
3.21.91
=======
* Add support for xdg-foreign protocol [Jonas; #769786]
* Support monitor rotation on wayland [Carlos; #745079]
* Port xdg-shell implementation to unstable v6 [Jonas; #769936]
* Handle unsupported buffer sizes more gracefully [Olivier; #770387]
* Use the same output naming logic as the X server on wayland [Rui; #770338]
* Fix replies in gnome-shell's chat notifications on wayland [Florian; #758167]
* Misc. bug fixes and cleanups [Bastien, Sjoerd, Jonas; #769276, #769636,
#770131, #770324, #769731]
Contributors:
Jonas Ådahl, Olivier Fourdan, Carlos Garnacho, Rui Matos, Florian Müllner,
Bastien Nocera, Sjoerd Simons
Translations:
Piotr Drąg [pl], Mario Blättermann [de], Andika Triwidada [id],
Enrico Nicoletto [pt_BR], Мирослав Николић [sr, sr@latin]
3.21.90
=======
* Consider XDG_SESSION_TYPE when determining session type [Jouke; #759388]
* Re-add support for edge scrolling on some touchpads [Bastien; #768245]
* Support mouse and trackball acceleration profile [Jonas; #769179]
* Draw monitor contentn to individual framebuffer [Jonas; #768976]
* Support virtual input devices [Jonas, Carlos; #765009]
* Set correct output scale on hotplug [Jonas; #769505]
* Misc. bug fixes and cleanups [Florian, Jonas, Thomas, Bastien, Carlos;
#769014, #769024, #769054, #769070, #769036, #769305, #769578, #769800,
#769073]
Contributors:
Jonas Ådahl, Carlos Garnacho, Thomas Hindoe Paaboel Andersen, Simon McVittie,
Alberts Muktupāvels, Florian Müllner, Bastien Nocera, Jouke Witteveen
Translations:
Daniel Mustieles [es], Aurimas Černius [lt], Dušan Kazik [sk],
Fabio Tomat [fur], Balázs Úr [hu], Yosef Or Boczko [he], Marek Černocký [cs],
Matej Urbančič [sl]
3.21.4 3.21.4
====== ======
* Fix missing frame border around GTK+ dialogs [Florian; #745060] * Fix missing frame border around GTK+ dialogs [Florian; #745060]

View File

@@ -6,21 +6,16 @@ test -z "$srcdir" && srcdir=.
REQUIRED_AUTOMAKE_VERSION=1.11 REQUIRED_AUTOMAKE_VERSION=1.11
pushd $srcdir (test -f $srcdir/configure.ac \
&& test -d $srcdir/src) || {
(test -f configure.ac \
&& test -d src) || {
echo -n "**Error**: Directory "\`$srcdir\'" does not look like the" echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
echo " top-level mutter directory" echo " top-level metacity directory"
exit 1 exit 1
} }
aclocal --install || exit 1 which gnome-autogen.sh || {
intltoolize --force --copy --automake || exit 1 echo "You need to install gnome-common from GNOME Subversion (or from"
autoreconf --verbose --force --install || exit 1 echo "your distribution's package manager)."
exit 1
popd }
. gnome-autogen.sh
if [ "$NOCONFIGURE" = "" ]; then
$srcdir/configure "$@" || exit 1
fi

View File

@@ -25,7 +25,6 @@ AM_CPPFLAGS = \
-I$(top_builddir)/clutter \ -I$(top_builddir)/clutter \
-I$(top_srcdir)/../cogl \ -I$(top_srcdir)/../cogl \
-I$(top_builddir)/../cogl \ -I$(top_builddir)/../cogl \
-I$(top_builddir)/../cogl/cogl \
$(CLUTTER_DEPRECATED_CFLAGS) \ $(CLUTTER_DEPRECATED_CFLAGS) \
$(CLUTTER_DEBUG_CFLAGS) \ $(CLUTTER_DEBUG_CFLAGS) \
$(CLUTTER_HIDDEN_VISIBILITY_CFLAGS) \ $(CLUTTER_HIDDEN_VISIBILITY_CFLAGS) \
@@ -37,7 +36,7 @@ AM_CFLAGS = $(CLUTTER_CFLAGS) $(MAINTAINER_CFLAGS)
INTROSPECTION_GIRS = INTROSPECTION_GIRS =
# the base include path for headers # the base include path for headers
clutter_base_includedir = $(includedir)/mutter/clutter-$(LIBMUTTER_API_VERSION) clutter_base_includedir = $(includedir)/mutter/clutter-$(CLUTTER_API_VERSION)
clutter_includedir = $(clutter_base_includedir)/clutter clutter_includedir = $(clutter_base_includedir)/clutter
clutter_deprecateddir = $(clutter_base_includedir)/clutter/deprecated clutter_deprecateddir = $(clutter_base_includedir)/clutter/deprecated
@@ -113,6 +112,7 @@ source_h = \
clutter-snap-constraint.h \ clutter-snap-constraint.h \
clutter-stage.h \ clutter-stage.h \
clutter-stage-manager.h \ clutter-stage-manager.h \
clutter-stage-view.h \
clutter-tap-action.h \ clutter-tap-action.h \
clutter-test-utils.h \ clutter-test-utils.h \
clutter-texture.h \ clutter-texture.h \
@@ -198,6 +198,7 @@ source_c = \
clutter-snap-constraint.c \ clutter-snap-constraint.c \
clutter-stage.c \ clutter-stage.c \
clutter-stage-manager.c \ clutter-stage-manager.c \
clutter-stage-view.c \
clutter-stage-window.c \ clutter-stage-window.c \
clutter-tap-action.c \ clutter-tap-action.c \
clutter-test-utils.c \ clutter-test-utils.c \
@@ -239,7 +240,6 @@ source_h_priv = \
clutter-settings-private.h \ clutter-settings-private.h \
clutter-stage-manager-private.h \ clutter-stage-manager-private.h \
clutter-stage-private.h \ clutter-stage-private.h \
clutter-stage-view.h \
clutter-stage-window.h \ clutter-stage-window.h \
$(NULL) $(NULL)
@@ -248,7 +248,6 @@ source_c_priv = \
clutter-easing.c \ clutter-easing.c \
clutter-event-translator.c \ clutter-event-translator.c \
clutter-id-pool.c \ clutter-id-pool.c \
clutter-stage-view.c \
$(NULL) $(NULL)
# deprecated installed headers # deprecated installed headers
@@ -356,7 +355,7 @@ EXTRA_DIST += clutter-version.h.in clutter-version.h
# key symbol update script # key symbol update script
EXTRA_DIST += clutter-keysyms-update.pl EXTRA_DIST += clutter-keysyms-update.pl
pc_files += mutter-clutter-$(LIBMUTTER_API_VERSION).pc pc_files += mutter-clutter-$(CLUTTER_API_VERSION).pc
# in order to be compatible with Clutter < 1.10, when we shipped a single # in order to be compatible with Clutter < 1.10, when we shipped a single
# shared library whose name was determined by the single backend it # shared library whose name was determined by the single backend it
@@ -414,13 +413,11 @@ x11_source_c_priv = \
x11_source_c += \ x11_source_c += \
x11/clutter-device-manager-xi2.c \ x11/clutter-device-manager-xi2.c \
x11/clutter-input-device-xi2.c \ x11/clutter-input-device-xi2.c \
x11/clutter-input-device-tool-xi2.c \
$(NULL) $(NULL)
x11_source_h_priv += \ x11_source_h_priv += \
x11/clutter-device-manager-xi2.h \ x11/clutter-device-manager-xi2.h \
x11/clutter-input-device-xi2.h \ x11/clutter-input-device-xi2.h \
x11/clutter-input-device-tool-xi2.h \
$(NULL) $(NULL)
x11_source_c += \ x11_source_c += \
@@ -442,10 +439,10 @@ x11_introspection = $(x11_source_c) $(x11_source_h)
clutterx11_includedir = $(clutter_includedir)/x11 clutterx11_includedir = $(clutter_includedir)/x11
clutterx11_include_HEADERS = $(x11_source_h) clutterx11_include_HEADERS = $(x11_source_h)
mutter-clutter-x11-@LIBMUTTER_API_VERSION@.pc: mutter-clutter-$(LIBMUTTER_API_VERSION).pc mutter-clutter-x11-$(CLUTTER_API_VERSION).pc: mutter-clutter-$(CLUTTER_API_VERSION).pc
$(QUIET_GEN)cp -f $< $(@F) $(QUIET_GEN)cp -f $< $(@F)
pc_files += mutter-clutter-x11-$(LIBMUTTER_API_VERSION).pc pc_files += mutter-clutter-x11-$(CLUTTER_API_VERSION).pc
# Shared cogl backend files # Shared cogl backend files
cogl_source_h = cogl_source_h =
@@ -583,17 +580,17 @@ nodist_clutter_include_HEADERS = clutter-config.h $(built_source_h)
clutter_deprecated_HEADERS = $(deprecated_h) clutter_deprecated_HEADERS = $(deprecated_h)
mutterlibdir = $(libdir)/mutter mutterlibdir = $(libdir)/mutter
mutterlib_LTLIBRARIES = libmutter-clutter-@LIBMUTTER_API_VERSION@.la mutterlib_LTLIBRARIES = libmutter-clutter-@CLUTTER_API_VERSION@.la
libmutter_clutter_@LIBMUTTER_API_VERSION@_la_LIBADD = \ libmutter_clutter_@CLUTTER_API_VERSION@_la_LIBADD = \
$(LIBM) \ $(LIBM) \
$(CLUTTER_LIBS) \ $(CLUTTER_LIBS) \
$(top_builddir)/../cogl/cogl/libmutter-cogl-$(LIBMUTTER_API_VERSION).la \ $(top_builddir)/../cogl/cogl/libmutter-cogl.la \
$(top_builddir)/../cogl/cogl-pango/libmutter-cogl-pango-$(LIBMUTTER_API_VERSION).la \ $(top_builddir)/../cogl/cogl-pango/libmutter-cogl-pango.la \
$(top_builddir)/../cogl/cogl-path/libmutter-cogl-path-$(LIBMUTTER_API_VERSION).la \ $(top_builddir)/../cogl/cogl-path/libmutter-cogl-path.la \
$(NULL) $(NULL)
libmutter_clutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \ libmutter_clutter_@CLUTTER_API_VERSION@_la_SOURCES = \
$(backend_source_c) \ $(backend_source_c) \
$(backend_source_h) \ $(backend_source_h) \
$(backend_source_c_priv) \ $(backend_source_c_priv) \
@@ -611,12 +608,12 @@ libmutter_clutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
$(cally_sources_private) \ $(cally_sources_private) \
$(NULL) $(NULL)
nodist_libmutter_clutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \ nodist_libmutter_clutter_@CLUTTER_API_VERSION@_la_SOURCES = \
$(backend_source_built) \ $(backend_source_built) \
$(built_source_c) \ $(built_source_c) \
$(built_source_h) $(built_source_h)
libmutter_clutter_@LIBMUTTER_API_VERSION@_la_LDFLAGS = \ libmutter_clutter_@CLUTTER_API_VERSION@_la_LDFLAGS = \
$(CLUTTER_LINK_FLAGS) \ $(CLUTTER_LINK_FLAGS) \
$(CLUTTER_LT_LDFLAGS) \ $(CLUTTER_LT_LDFLAGS) \
-export-dynamic \ -export-dynamic \
@@ -630,13 +627,13 @@ install-exec-local:
rm -f $$lib.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION); \ rm -f $$lib.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION); \
) ; \ ) ; \
(cd $(DESTDIR)$(mutterlibdir) && \ (cd $(DESTDIR)$(mutterlibdir) && \
{ ln -s -f libmutter-clutter-$(LIBMUTTER_API_VERSION).so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib.0 || \ { ln -s -f libmutter-clutter-$(CLUTTER_API_VERSION).so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib.0 || \
{ rm -f $$lib.0 && ln -s libmutter-clutter-$(LIBMUTTER_API_VERSION).so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib.0; }; \ { rm -f $$lib.0 && ln -s libmutter-clutter-1.0.so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib.0; }; \
} \ } \
) ; \ ) ; \
(cd $(DESTDIR)$(mutterlibdir) && \ (cd $(DESTDIR)$(mutterlibdir) && \
{ ln -s -f libmutter-clutter-$(LIBMUTTER_API_VERSION).so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib || \ { ln -s -f libmutter-clutter-$(CLUTTER_API_VERSION).so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib || \
{ rm -f $$lib && ln -s libmutter-clutter-$(LIBMUTTER_API_VERSION).so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib; }; \ { rm -f $$lib && ln -s libmutter-clutter-1.0.so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib; }; \
} \ } \
) ; \ ) ; \
done done
@@ -644,65 +641,59 @@ install-exec-local:
# gobject-introspection rules # gobject-introspection rules
-include $(INTROSPECTION_MAKEFILE) -include $(INTROSPECTION_MAKEFILE)
INTROSPECTION_SCANNER_ARGS = \ INTROSPECTION_SCANNER_ARGS = --add-include-path=$(top_builddir)/../cogl/cogl --add-include-path=$(top_builddir)/../cogl/cogl-pango
--add-include-path=$(top_builddir)/../cogl/cogl \ INTROSPECTION_COMPILER_ARGS = --includedir=$(top_builddir)/../cogl/cogl --includedir=$(top_builddir)/../cogl/cogl-pango
--add-include-path=$(top_builddir)/../cogl/cogl-pango
INTROSPECTION_COMPILER_ARGS = \
--includedir=$(top_builddir)/../cogl/cogl \
--includedir=$(top_builddir)/../cogl/cogl-pango
INTROSPECTION_SCANNER_ENV = \
PKG_CONFIG_PATH=$(top_builddir)/../cogl/cogl/:$(top_builddir)/../cogl/cogl-pango/:$${PKG_CONFIG_PATH}
Clutter-@LIBMUTTER_API_VERSION@.gir: libmutter-clutter-@LIBMUTTER_API_VERSION@.la Makefile Clutter-@CLUTTER_API_VERSION@.gir: libmutter-clutter-@CLUTTER_API_VERSION@.la Makefile
Clutter_@LIBMUTTER_API_VERSION@_gir_NAMESPACE = Clutter Clutter_@CLUTTER_API_VERSION_AM@_gir_NAMESPACE = Clutter
Clutter_@LIBMUTTER_API_VERSION@_gir_VERSION = @LIBMUTTER_API_VERSION@ Clutter_@CLUTTER_API_VERSION_AM@_gir_VERSION = @CLUTTER_API_VERSION@
Clutter_@LIBMUTTER_API_VERSION@_gir_LIBS = libmutter-clutter-@LIBMUTTER_API_VERSION@.la Clutter_@CLUTTER_API_VERSION_AM@_gir_LIBS = libmutter-clutter-@CLUTTER_API_VERSION@.la
Clutter_@LIBMUTTER_API_VERSION@_gir_FILES = \ Clutter_@CLUTTER_API_VERSION_AM@_gir_FILES = \
$(clutter_include_HEADERS) \ $(clutter_include_HEADERS) \
$(clutter_deprecated_HEADERS) \ $(clutter_deprecated_HEADERS) \
$(nodist_clutter_include_HEADERS) \ $(nodist_clutter_include_HEADERS) \
$(source_c) \ $(source_c) \
$(deprecated_c) \ $(deprecated_c) \
$(built_source_c) $(built_source_c)
Clutter_@LIBMUTTER_API_VERSION@_gir_CFLAGS = $(AM_CPPFLAGS) $(CLUTTER_CFLAGS) Clutter_@CLUTTER_API_VERSION_AM@_gir_CFLAGS = $(AM_CPPFLAGS) $(CLUTTER_CFLAGS)
Clutter_@LIBMUTTER_API_VERSION@_gir_INCLUDES = GL-1.0 GObject-2.0 cairo-1.0 Cogl-@LIBMUTTER_API_VERSION@ CoglPango-@LIBMUTTER_API_VERSION@ Atk-1.0 Json-1.0 Clutter_@CLUTTER_API_VERSION_AM@_gir_INCLUDES = GL-1.0 GObject-2.0 cairo-1.0 Cogl-1.0 CoglPango-1.0 Atk-1.0 Json-1.0
Clutter_@LIBMUTTER_API_VERSION@_gir_SCANNERFLAGS = \ Clutter_@CLUTTER_API_VERSION_AM@_gir_SCANNERFLAGS = \
--warn-all \ --warn-all \
--c-include='clutter/clutter.h' \ --c-include='clutter/clutter.h' \
--pkg-export=mutter-clutter-@LIBMUTTER_API_VERSION@ --pkg-export=mutter-clutter-@CLUTTER_API_VERSION@
INTROSPECTION_GIRS += Clutter-@LIBMUTTER_API_VERSION@.gir INTROSPECTION_GIRS += Clutter-@CLUTTER_API_VERSION@.gir
Cally-@LIBMUTTER_API_VERSION@.gir: Makefile Clutter-@LIBMUTTER_API_VERSION@.gir Cally-@CLUTTER_API_VERSION@.gir: Makefile Clutter-@CLUTTER_API_VERSION@.gir
Cally_@LIBMUTTER_API_VERSION@_gir_NAMESPACE = Cally Cally_@CLUTTER_API_VERSION_AM@_gir_NAMESPACE = Cally
Cally_@LIBMUTTER_API_VERSION@_gir_VERSION = @LIBMUTTER_API_VERSION@ Cally_@CLUTTER_API_VERSION_AM@_gir_VERSION = @CLUTTER_API_VERSION@
Cally_@LIBMUTTER_API_VERSION@_gir_LIBS = libmutter-clutter-@LIBMUTTER_API_VERSION@.la Cally_@CLUTTER_API_VERSION_AM@_gir_LIBS = libmutter-clutter-@CLUTTER_API_VERSION@.la
Cally_@LIBMUTTER_API_VERSION@_gir_FILES = $(cally_sources_h) $(cally_sources_c) Cally_@CLUTTER_API_VERSION_AM@_gir_FILES = $(cally_sources_h) $(cally_sources_c)
Cally_@LIBMUTTER_API_VERSION@_gir_CFLAGS = $(AM_CPPFLAGS) $(CLUTTER_CFLAGS) Cally_@CLUTTER_API_VERSION_AM@_gir_CFLAGS = $(AM_CPPFLAGS) $(CLUTTER_CFLAGS)
Cally_@LIBMUTTER_API_VERSION@_gir_SCANNERFLAGS = \ Cally_@CLUTTER_API_VERSION_AM@_gir_SCANNERFLAGS = \
--warn-all \ --warn-all \
--c-include='cally/cally.h' \ --c-include='cally/cally.h' \
--pkg-export=mutter-cally-@LIBMUTTER_API_VERSION@ \ --pkg-export=mutter-cally-@CLUTTER_API_VERSION@ \
--include-uninstalled=$(top_builddir)/clutter/Clutter-@LIBMUTTER_API_VERSION@.gir --include-uninstalled=$(top_builddir)/clutter/Clutter-@CLUTTER_API_VERSION@.gir
INTROSPECTION_GIRS += Cally-@LIBMUTTER_API_VERSION@.gir INTROSPECTION_GIRS += Cally-@CLUTTER_API_VERSION@.gir
ClutterX11-@LIBMUTTER_API_VERSION@.gir: Makefile Clutter-@LIBMUTTER_API_VERSION@.gir ClutterX11-@CLUTTER_API_VERSION@.gir: Makefile Clutter-@CLUTTER_API_VERSION@.gir
ClutterX11_@LIBMUTTER_API_VERSION@_gir_NAMESPACE = ClutterX11 ClutterX11_@CLUTTER_API_VERSION_AM@_gir_NAMESPACE = ClutterX11
ClutterX11_@LIBMUTTER_API_VERSION@_gir_INCLUDES = xlib-2.0 ClutterX11_@CLUTTER_API_VERSION_AM@_gir_INCLUDES = xlib-2.0
ClutterX11_@LIBMUTTER_API_VERSION@_gir_LIBS = libmutter-clutter-@LIBMUTTER_API_VERSION@.la ClutterX11_@CLUTTER_API_VERSION_AM@_gir_LIBS = libmutter-clutter-@CLUTTER_API_VERSION@.la
ClutterX11_@LIBMUTTER_API_VERSION@_gir_FILES = $(x11_introspection) ClutterX11_@CLUTTER_API_VERSION_AM@_gir_FILES = $(x11_introspection)
ClutterX11_@LIBMUTTER_API_VERSION@_gir_CFLAGS = $(AM_CPPFLAGS) $(CLUTTER_CFLAGS) ClutterX11_@CLUTTER_API_VERSION_AM@_gir_CFLAGS = $(AM_CPPFLAGS) $(CLUTTER_CFLAGS)
ClutterX11_@LIBMUTTER_API_VERSION@_gir_SCANNERFLAGS = \ ClutterX11_@CLUTTER_API_VERSION_AM@_gir_SCANNERFLAGS = \
--warn-all \ --warn-all \
--c-include='clutter/x11/clutter-x11.h' \ --c-include='clutter/x11/clutter-x11.h' \
--pkg-export=mutter-clutter-x11-@LIBMUTTER_API_VERSION@ \ --pkg-export=mutter-clutter-x11-@CLUTTER_API_VERSION@ \
--include-uninstalled=$(top_builddir)/clutter/Clutter-@LIBMUTTER_API_VERSION@.gir --include-uninstalled=$(top_builddir)/clutter/Clutter-@CLUTTER_API_VERSION@.gir
INTROSPECTION_GIRS += ClutterX11-@LIBMUTTER_API_VERSION@.gir INTROSPECTION_GIRS += ClutterX11-@CLUTTER_API_VERSION@.gir
# INTROSPECTION_GIRDIR/INTROSPECTION_TYPELIBDIR aren't the right place to # INTROSPECTION_GIRDIR/INTROSPECTION_TYPELIBDIR aren't the right place to
# install anything - we need to install inside our prefix. # install anything - we need to install inside our prefix.

View File

@@ -401,7 +401,7 @@ clutter_canvas_emit_draw (ClutterCanvas *self)
gboolean res; gboolean res;
cairo_t *cr; cairo_t *cr;
g_assert (priv->height > 0 && priv->width > 0); g_assert (priv->width > 0 && priv->width > 0);
priv->dirty = TRUE; priv->dirty = TRUE;

View File

@@ -54,7 +54,6 @@
struct _ClutterClonePrivate struct _ClutterClonePrivate
{ {
ClutterActor *clone_source; ClutterActor *clone_source;
gulong source_destroy_id;
}; };
G_DEFINE_TYPE_WITH_PRIVATE (ClutterClone, clutter_clone, CLUTTER_TYPE_ACTOR) G_DEFINE_TYPE_WITH_PRIVATE (ClutterClone, clutter_clone, CLUTTER_TYPE_ACTOR)
@@ -377,13 +376,6 @@ clutter_clone_new (ClutterActor *source)
return g_object_new (CLUTTER_TYPE_CLONE, "source", source, NULL); return g_object_new (CLUTTER_TYPE_CLONE, "source", source, NULL);
} }
static void
on_source_destroyed (ClutterActor *source,
ClutterClone *self)
{
clutter_clone_set_source_internal (self, NULL);
}
static void static void
clutter_clone_set_source_internal (ClutterClone *self, clutter_clone_set_source_internal (ClutterClone *self,
ClutterActor *source) ClutterActor *source)
@@ -395,8 +387,6 @@ clutter_clone_set_source_internal (ClutterClone *self,
if (priv->clone_source != NULL) if (priv->clone_source != NULL)
{ {
g_signal_handler_disconnect (priv->clone_source, priv->source_destroy_id);
priv->source_destroy_id = 0;
_clutter_actor_detach_clone (priv->clone_source, CLUTTER_ACTOR (self)); _clutter_actor_detach_clone (priv->clone_source, CLUTTER_ACTOR (self));
g_object_unref (priv->clone_source); g_object_unref (priv->clone_source);
priv->clone_source = NULL; priv->clone_source = NULL;
@@ -406,8 +396,6 @@ clutter_clone_set_source_internal (ClutterClone *self,
{ {
priv->clone_source = g_object_ref (source); priv->clone_source = g_object_ref (source);
_clutter_actor_attach_clone (priv->clone_source, CLUTTER_ACTOR (self)); _clutter_actor_attach_clone (priv->clone_source, CLUTTER_ACTOR (self));
priv->source_destroy_id = g_signal_connect (priv->clone_source, "destroy",
G_CALLBACK (on_source_destroyed), self);
} }
g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_SOURCE]); g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_SOURCE]);

View File

@@ -154,15 +154,6 @@ struct _ClutterInputDeviceClass
guint *evdev_keycode); guint *evdev_keycode);
void (* update_from_tool) (ClutterInputDevice *device, void (* update_from_tool) (ClutterInputDevice *device,
ClutterInputDeviceTool *tool); ClutterInputDeviceTool *tool);
gboolean (* is_mode_switch_button) (ClutterInputDevice *device,
guint group,
guint button);
gint (* get_group_n_modes) (ClutterInputDevice *device,
gint group);
gboolean (* is_grouped) (ClutterInputDevice *device,
ClutterInputDevice *other_device);
}; };
/* Platform-dependent interface */ /* Platform-dependent interface */
@@ -197,10 +188,6 @@ void _clutter_device_manager_select_stage_events (ClutterDeviceMa
ClutterStage *stage); ClutterStage *stage);
ClutterBackend *_clutter_device_manager_get_backend (ClutterDeviceManager *device_manager); ClutterBackend *_clutter_device_manager_get_backend (ClutterDeviceManager *device_manager);
void _clutter_device_manager_compress_motion (ClutterDeviceManager *device_manger,
ClutterEvent *event,
const ClutterEvent *to_discard);
/* input device */ /* input device */
gboolean _clutter_input_device_has_sequence (ClutterInputDevice *device, gboolean _clutter_input_device_has_sequence (ClutterInputDevice *device,
ClutterEventSequence *sequence); ClutterEventSequence *sequence);

View File

@@ -48,7 +48,6 @@
#include "clutter-private.h" #include "clutter-private.h"
#include "clutter-stage-private.h" #include "clutter-stage-private.h"
#include "clutter-virtual-input-device.h" #include "clutter-virtual-input-device.h"
#include "clutter-input-device-tool.h"
struct _ClutterDeviceManagerPrivate struct _ClutterDeviceManagerPrivate
{ {
@@ -71,7 +70,6 @@ enum
{ {
DEVICE_ADDED, DEVICE_ADDED,
DEVICE_REMOVED, DEVICE_REMOVED,
TOOL_CHANGED,
LAST_SIGNAL LAST_SIGNAL
}; };
@@ -186,16 +184,6 @@ clutter_device_manager_class_init (ClutterDeviceManagerClass *klass)
_clutter_marshal_VOID__OBJECT, _clutter_marshal_VOID__OBJECT,
G_TYPE_NONE, 1, G_TYPE_NONE, 1,
CLUTTER_TYPE_INPUT_DEVICE); CLUTTER_TYPE_INPUT_DEVICE);
manager_signals[TOOL_CHANGED] =
g_signal_new (I_("tool-changed"),
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST,
0, NULL, NULL,
_clutter_marshal_VOID__OBJECT_OBJECT,
G_TYPE_NONE, 2,
CLUTTER_TYPE_INPUT_DEVICE,
CLUTTER_TYPE_INPUT_DEVICE_TOOL);
} }
static void static void
@@ -470,20 +458,3 @@ clutter_device_manager_create_virtual_device (ClutterDeviceManager *device_man
return manager_class->create_virtual_device (device_manager, return manager_class->create_virtual_device (device_manager,
device_type); device_type);
} }
void
_clutter_device_manager_compress_motion (ClutterDeviceManager *device_manager,
ClutterEvent *event,
const ClutterEvent *to_discard)
{
ClutterDeviceManagerClass *manager_class;
g_return_if_fail (CLUTTER_IS_DEVICE_MANAGER (device_manager));
manager_class = CLUTTER_DEVICE_MANAGER_GET_CLASS (device_manager);
if (!manager_class->compress_motion)
return;
manager_class->compress_motion (device_manager, event, to_discard);
}

View File

@@ -83,14 +83,11 @@ struct _ClutterDeviceManagerClass
ClutterInputDevice *device); ClutterInputDevice *device);
void (* select_stage_events) (ClutterDeviceManager *manager, void (* select_stage_events) (ClutterDeviceManager *manager,
ClutterStage *stage); ClutterStage *stage);
ClutterVirtualInputDevice *(* create_virtual_device) (ClutterDeviceManager *device_manager, ClutterVirtualInputDevice *(* create_virtual_device) (ClutterDeviceManager *manager,
ClutterInputDeviceType device_type); ClutterInputDeviceType device_type);
void (* compress_motion) (ClutterDeviceManager *device_manger,
ClutterEvent *event,
const ClutterEvent *to_discard);
/* padding */ /* padding */
gpointer _padding[6]; gpointer _padding[7];
}; };
CLUTTER_AVAILABLE_IN_1_2 CLUTTER_AVAILABLE_IN_1_2

View File

@@ -1990,28 +1990,22 @@ clutter_event_remove_filter (guint id)
} }
/** /**
* clutter_event_get_touchpad_gesture_finger_count: * clutter_event_get_gesture_swipe_finger_count:
* @event: a touchpad swipe/pinch event * @event: a touchpad swipe event
* *
* Returns the number of fingers that is triggering the touchpad gesture. * Returns the number of fingers that is triggering the touchpad gesture.
* *
* Returns: the number of fingers in the gesture. * Returns: the number of fingers swiping.
* *
* Since: 1.24 * Since: 1.24
**/ **/
guint guint
clutter_event_get_touchpad_gesture_finger_count (const ClutterEvent *event) clutter_event_get_gesture_swipe_finger_count (const ClutterEvent *event)
{ {
g_return_val_if_fail (event != NULL, 0); g_return_val_if_fail (event != NULL, 0);
g_return_val_if_fail (event->type == CLUTTER_TOUCHPAD_SWIPE || g_return_val_if_fail (event->type == CLUTTER_TOUCHPAD_SWIPE, 0);
event->type == CLUTTER_TOUCHPAD_PINCH, 0);
if (event->type == CLUTTER_TOUCHPAD_SWIPE) return event->touchpad_swipe.n_fingers;
return event->touchpad_swipe.n_fingers;
else if (event->type == CLUTTER_TOUCHPAD_PINCH)
return event->touchpad_pinch.n_fingers;
return 0;
} }
/** /**

View File

@@ -459,7 +459,6 @@ struct _ClutterTouchpadPinchEvent
gfloat dy; gfloat dy;
gfloat angle_delta; gfloat angle_delta;
gfloat scale; gfloat scale;
guint n_fingers;
}; };
/** /**
@@ -508,7 +507,6 @@ struct _ClutterPadButtonEvent
guint32 button; guint32 button;
guint32 group; guint32 group;
ClutterInputDevice *device; ClutterInputDevice *device;
guint32 mode;
}; };
struct _ClutterPadStripEvent struct _ClutterPadStripEvent
@@ -524,7 +522,6 @@ struct _ClutterPadStripEvent
guint32 strip_number; guint32 strip_number;
guint32 group; guint32 group;
gdouble value; gdouble value;
guint32 mode;
}; };
struct _ClutterPadRingEvent struct _ClutterPadRingEvent
@@ -540,7 +537,6 @@ struct _ClutterPadRingEvent
guint32 ring_number; guint32 ring_number;
guint32 group; guint32 group;
gdouble angle; gdouble angle;
guint32 mode;
}; };
/** /**
@@ -756,7 +752,7 @@ CLUTTER_AVAILABLE_IN_1_2
const ClutterEvent * clutter_get_current_event (void); const ClutterEvent * clutter_get_current_event (void);
CLUTTER_AVAILABLE_IN_1_24 CLUTTER_AVAILABLE_IN_1_24
guint clutter_event_get_touchpad_gesture_finger_count (const ClutterEvent *event); guint clutter_event_get_gesture_swipe_finger_count (const ClutterEvent *event);
CLUTTER_AVAILABLE_IN_1_24 CLUTTER_AVAILABLE_IN_1_24
gdouble clutter_event_get_gesture_pinch_angle_delta (const ClutterEvent *event); gdouble clutter_event_get_gesture_pinch_angle_delta (const ClutterEvent *event);

View File

@@ -2175,63 +2175,6 @@ clutter_input_device_get_n_mode_groups (ClutterInputDevice *device)
return device->n_mode_groups; return device->n_mode_groups;
} }
gint
clutter_input_device_get_group_n_modes (ClutterInputDevice *device,
gint group)
{
ClutterInputDeviceClass *device_class;
g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE (device), 0);
g_return_val_if_fail (clutter_input_device_get_device_type (device) ==
CLUTTER_PAD_DEVICE, 0);
g_return_val_if_fail (group >= 0, 0);
device_class = CLUTTER_INPUT_DEVICE_GET_CLASS (device);
if (device_class->get_group_n_modes)
return device_class->get_group_n_modes (device, group);
return 0;
}
gboolean
clutter_input_device_is_mode_switch_button (ClutterInputDevice *device,
guint group,
guint button)
{
ClutterInputDeviceClass *device_class;
g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE (device), FALSE);
g_return_val_if_fail (clutter_input_device_get_device_type (device) ==
CLUTTER_PAD_DEVICE, FALSE);
device_class = CLUTTER_INPUT_DEVICE_GET_CLASS (device);
if (device_class->is_mode_switch_button)
return device_class->is_mode_switch_button (device, group, button);
return FALSE;
}
gint
clutter_input_device_get_mode_switch_button_group (ClutterInputDevice *device,
guint button)
{
gint group;
g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE (device), -1);
g_return_val_if_fail (clutter_input_device_get_device_type (device) ==
CLUTTER_PAD_DEVICE, -1);
for (group = 0; group < device->n_mode_groups; group++)
{
if (clutter_input_device_is_mode_switch_button (device, group, button))
return group;
}
return -1;
}
const gchar * const gchar *
clutter_input_device_get_device_node (ClutterInputDevice *device) clutter_input_device_get_device_node (ClutterInputDevice *device)
{ {
@@ -2266,13 +2209,3 @@ clutter_input_device_set_mapping_mode (ClutterInputDevice *device,
device->mapping_mode = mapping; device->mapping_mode = mapping;
g_object_notify (G_OBJECT (device), "mapping-mode"); g_object_notify (G_OBJECT (device), "mapping-mode");
} }
gboolean
clutter_input_device_is_grouped (ClutterInputDevice *device,
ClutterInputDevice *other_device)
{
g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE (device), FALSE);
g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE (other_device), FALSE);
return CLUTTER_INPUT_DEVICE_GET_CLASS (device)->is_grouped (device, other_device);
}

View File

@@ -147,18 +147,6 @@ gint clutter_input_device_get_n_strips (ClutterInputDev
CLUTTER_AVAILABLE_IN_ALL CLUTTER_AVAILABLE_IN_ALL
gint clutter_input_device_get_n_mode_groups (ClutterInputDevice *device); gint clutter_input_device_get_n_mode_groups (ClutterInputDevice *device);
CLUTTER_AVAILABLE_IN_ALL
gint clutter_input_device_get_group_n_modes (ClutterInputDevice *device,
gint group);
CLUTTER_AVAILABLE_IN_ALL
gboolean clutter_input_device_is_mode_switch_button (ClutterInputDevice *device,
guint group,
guint button);
CLUTTER_AVAILABLE_IN_ALL
gint clutter_input_device_get_mode_switch_button_group (ClutterInputDevice *device,
guint button);
CLUTTER_AVAILABLE_IN_ALL CLUTTER_AVAILABLE_IN_ALL
const gchar * clutter_input_device_get_device_node (ClutterInputDevice *device); const gchar * clutter_input_device_get_device_node (ClutterInputDevice *device);
@@ -168,9 +156,6 @@ ClutterInputDeviceMapping clutter_input_device_get_mapping_mode (ClutterInputDev
CLUTTER_AVAILABLE_IN_ALL CLUTTER_AVAILABLE_IN_ALL
void clutter_input_device_set_mapping_mode (ClutterInputDevice *device, void clutter_input_device_set_mapping_mode (ClutterInputDevice *device,
ClutterInputDeviceMapping mapping); ClutterInputDeviceMapping mapping);
CLUTTER_AVAILABLE_IN_ALL
gboolean clutter_input_device_is_grouped (ClutterInputDevice *device,
ClutterInputDevice *other_device);
G_END_DECLS G_END_DECLS

View File

@@ -719,8 +719,14 @@ clutter_get_text_direction (void)
} }
else else
{ {
/* Re-use GTK+'s LTR/RTL handling */ /* Translators: Leave this UNTRANSLATED if your language is
const char *e = g_dgettext ("gtk30", "default:LTR"); * left-to-right. If your language is right-to-left
* (e.g. Hebrew, Arabic), translate it to "default:RTL".
*
* Do NOT translate it to non-English e.g. "predefinito:LTR"! If
* it isn't default:LTR or default:RTL it will not work.
*/
char *e = _("default:LTR");
if (strcmp (e, "default:RTL") == 0) if (strcmp (e, "default:RTL") == 0)
dir = CLUTTER_TEXT_DIRECTION_RTL; dir = CLUTTER_TEXT_DIRECTION_RTL;

View File

@@ -23,7 +23,6 @@ VOID:OBJECT
VOID:OBJECT,FLAGS VOID:OBJECT,FLAGS
VOID:OBJECT,FLOAT,FLOAT VOID:OBJECT,FLOAT,FLOAT
VOID:OBJECT,FLOAT,FLOAT,FLAGS VOID:OBJECT,FLOAT,FLOAT,FLAGS
VOID:OBJECT,OBJECT
VOID:OBJECT,PARAM VOID:OBJECT,PARAM
VOID:OBJECT,POINTER VOID:OBJECT,POINTER
VOID:OBJECT,UINT VOID:OBJECT,UINT

View File

@@ -27,7 +27,6 @@ enum
PROP_LAYOUT, PROP_LAYOUT,
PROP_FRAMEBUFFER, PROP_FRAMEBUFFER,
PROP_OFFSCREEN,
PROP_LAST PROP_LAST
}; };
@@ -38,10 +37,6 @@ typedef struct _ClutterStageViewPrivate
{ {
cairo_rectangle_int_t layout; cairo_rectangle_int_t layout;
CoglFramebuffer *framebuffer; CoglFramebuffer *framebuffer;
CoglOffscreen *offscreen;
CoglPipeline *pipeline;
guint dirty_viewport : 1; guint dirty_viewport : 1;
guint dirty_projection : 1; guint dirty_projection : 1;
} ClutterStageViewPrivate; } ClutterStageViewPrivate;
@@ -60,18 +55,6 @@ clutter_stage_view_get_layout (ClutterStageView *view,
CoglFramebuffer * CoglFramebuffer *
clutter_stage_view_get_framebuffer (ClutterStageView *view) clutter_stage_view_get_framebuffer (ClutterStageView *view)
{
ClutterStageViewPrivate *priv =
clutter_stage_view_get_instance_private (view);
if (priv->offscreen)
return priv->offscreen;
else
return priv->framebuffer;
}
CoglFramebuffer *
clutter_stage_view_get_onscreen (ClutterStageView *view)
{ {
ClutterStageViewPrivate *priv = ClutterStageViewPrivate *priv =
clutter_stage_view_get_instance_private (view); clutter_stage_view_get_instance_private (view);
@@ -79,68 +62,6 @@ clutter_stage_view_get_onscreen (ClutterStageView *view)
return priv->framebuffer; return priv->framebuffer;
} }
static void
clutter_stage_view_ensure_offscreen_blit_pipeline (ClutterStageView *view)
{
ClutterStageViewPrivate *priv =
clutter_stage_view_get_instance_private (view);
ClutterStageViewClass *view_class =
CLUTTER_STAGE_VIEW_GET_CLASS (view);
g_assert (priv->offscreen != NULL);
if (priv->pipeline)
return;
priv->pipeline =
cogl_pipeline_new (cogl_framebuffer_get_context (priv->offscreen));
cogl_pipeline_set_layer_filters (priv->pipeline, 0,
COGL_PIPELINE_FILTER_NEAREST,
COGL_PIPELINE_FILTER_NEAREST);
cogl_pipeline_set_layer_texture (priv->pipeline, 0,
cogl_offscreen_get_texture (priv->offscreen));
cogl_pipeline_set_layer_wrap_mode (priv->pipeline, 0,
COGL_PIPELINE_WRAP_MODE_CLAMP_TO_EDGE);
if (view_class->setup_offscreen_blit_pipeline)
view_class->setup_offscreen_blit_pipeline (view, priv->pipeline);
}
void
clutter_stage_view_invalidate_offscreen_blit_pipeline (ClutterStageView *view)
{
ClutterStageViewPrivate *priv =
clutter_stage_view_get_instance_private (view);
g_clear_pointer (&priv->pipeline, cogl_object_unref);
}
void
clutter_stage_view_blit_offscreen (ClutterStageView *view,
const cairo_rectangle_int_t *rect)
{
ClutterStageViewPrivate *priv =
clutter_stage_view_get_instance_private (view);
CoglMatrix matrix;
clutter_stage_view_ensure_offscreen_blit_pipeline (view);
cogl_framebuffer_push_matrix (priv->framebuffer);
/* Set transform so 0,0 is on the top left corner and 1,1 on
* the bottom right corner.
*/
cogl_matrix_init_identity (&matrix);
cogl_matrix_translate (&matrix, -1, 1, 0);
cogl_matrix_scale (&matrix, 2, -2, 0);
cogl_framebuffer_set_projection_matrix (priv->framebuffer, &matrix);
cogl_framebuffer_draw_rectangle (priv->framebuffer,
priv->pipeline,
0, 0, 1, 1);
cogl_framebuffer_pop_matrix (priv->framebuffer);
}
gboolean gboolean
clutter_stage_view_is_dirty_viewport (ClutterStageView *view) clutter_stage_view_is_dirty_viewport (ClutterStageView *view)
{ {
@@ -179,35 +100,6 @@ clutter_stage_view_set_dirty_projection (ClutterStageView *view,
priv->dirty_projection = dirty; priv->dirty_projection = dirty;
} }
void
clutter_stage_view_get_offscreen_transformation_matrix (ClutterStageView *view,
CoglMatrix *matrix)
{
ClutterStageViewClass *view_class = CLUTTER_STAGE_VIEW_GET_CLASS (view);
view_class->get_offscreen_transformation_matrix (view, matrix);
}
void
clutter_stage_view_transform_to_onscreen (ClutterStageView *view,
gfloat *x,
gfloat *y)
{
gfloat z = 0, w = 1;
CoglMatrix matrix;
clutter_stage_view_get_offscreen_transformation_matrix (view, &matrix);
cogl_matrix_get_inverse (&matrix, &matrix);
cogl_matrix_transform_point (&matrix, x, y, &z, &w);
}
static void
clutter_stage_default_get_offscreen_transformation_matrix (ClutterStageView *view,
CoglMatrix *matrix)
{
cogl_matrix_init_identity (matrix);
}
static void static void
clutter_stage_view_get_property (GObject *object, clutter_stage_view_get_property (GObject *object,
guint prop_id, guint prop_id,
@@ -226,11 +118,6 @@ clutter_stage_view_get_property (GObject *object,
case PROP_FRAMEBUFFER: case PROP_FRAMEBUFFER:
g_value_set_boxed (value, priv->framebuffer); g_value_set_boxed (value, priv->framebuffer);
break; break;
case PROP_OFFSCREEN:
g_value_set_boxed (value, priv->offscreen);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
} }
} }
@@ -254,11 +141,6 @@ clutter_stage_view_set_property (GObject *object,
case PROP_FRAMEBUFFER: case PROP_FRAMEBUFFER:
priv->framebuffer = g_value_dup_boxed (value); priv->framebuffer = g_value_dup_boxed (value);
break; break;
case PROP_OFFSCREEN:
priv->offscreen = g_value_dup_boxed (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
} }
} }
@@ -270,20 +152,11 @@ clutter_stage_view_dispose (GObject *object)
clutter_stage_view_get_instance_private (view); clutter_stage_view_get_instance_private (view);
g_clear_pointer (&priv->framebuffer, cogl_object_unref); g_clear_pointer (&priv->framebuffer, cogl_object_unref);
g_clear_pointer (&priv->offscreen, cogl_object_unref);
g_clear_pointer (&priv->pipeline, cogl_object_unref);
G_OBJECT_CLASS (clutter_stage_view_parent_class)->dispose (object);
} }
static void static void
clutter_stage_view_init (ClutterStageView *view) clutter_stage_view_init (ClutterStageView *view)
{ {
ClutterStageViewPrivate *priv =
clutter_stage_view_get_instance_private (view);
priv->dirty_viewport = TRUE;
priv->dirty_projection = TRUE;
} }
static void static void
@@ -291,9 +164,6 @@ clutter_stage_view_class_init (ClutterStageViewClass *klass)
{ {
GObjectClass *object_class = G_OBJECT_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass);
klass->get_offscreen_transformation_matrix =
clutter_stage_default_get_offscreen_transformation_matrix;
object_class->get_property = clutter_stage_view_get_property; object_class->get_property = clutter_stage_view_get_property;
object_class->set_property = clutter_stage_view_set_property; object_class->set_property = clutter_stage_view_set_property;
object_class->dispose = clutter_stage_view_dispose; object_class->dispose = clutter_stage_view_dispose;
@@ -309,19 +179,10 @@ clutter_stage_view_class_init (ClutterStageViewClass *klass)
obj_props[PROP_FRAMEBUFFER] = obj_props[PROP_FRAMEBUFFER] =
g_param_spec_boxed ("framebuffer", g_param_spec_boxed ("framebuffer",
"View framebuffer", "View framebuffer",
"The front buffer of the view", "The framebuffer of the view",
COGL_TYPE_HANDLE, COGL_TYPE_HANDLE,
G_PARAM_READWRITE | G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS); G_PARAM_STATIC_STRINGS);
obj_props[PROP_OFFSCREEN] =
g_param_spec_boxed ("offscreen",
"Offscreen buffer",
"Framebuffer used as intermediate buffer",
COGL_TYPE_HANDLE,
G_PARAM_READWRITE |
G_PARAM_CONSTRUCT_ONLY |
G_PARAM_STATIC_STRINGS);
g_object_class_install_properties (object_class, PROP_LAST, obj_props); g_object_class_install_properties (object_class, PROP_LAST, obj_props);
} }

View File

@@ -33,12 +33,6 @@ G_DECLARE_DERIVABLE_TYPE (ClutterStageView, clutter_stage_view,
struct _ClutterStageViewClass struct _ClutterStageViewClass
{ {
GObjectClass parent_class; GObjectClass parent_class;
void (* setup_offscreen_blit_pipeline) (ClutterStageView *view,
CoglPipeline *pipeline);
void (* get_offscreen_transformation_matrix) (ClutterStageView *view,
CoglMatrix *matrix);
}; };
CLUTTER_AVAILABLE_IN_MUTTER CLUTTER_AVAILABLE_IN_MUTTER
@@ -47,18 +41,6 @@ void clutter_stage_view_get_layout (ClutterStageView *view,
CLUTTER_AVAILABLE_IN_MUTTER CLUTTER_AVAILABLE_IN_MUTTER
CoglFramebuffer *clutter_stage_view_get_framebuffer (ClutterStageView *view); CoglFramebuffer *clutter_stage_view_get_framebuffer (ClutterStageView *view);
CLUTTER_AVAILABLE_IN_MUTTER
CoglFramebuffer *clutter_stage_view_get_onscreen (ClutterStageView *view);
CLUTTER_AVAILABLE_IN_MUTTER
void clutter_stage_view_invalidate_offscreen_blit_pipeline (ClutterStageView *view);
CLUTTER_AVAILABLE_IN_MUTTER
void clutter_stage_view_transform_to_onscreen (ClutterStageView *view,
gfloat *x,
gfloat *y);
void clutter_stage_view_blit_offscreen (ClutterStageView *view,
const cairo_rectangle_int_t *clip);
gboolean clutter_stage_view_is_dirty_viewport (ClutterStageView *view); gboolean clutter_stage_view_is_dirty_viewport (ClutterStageView *view);
@@ -70,8 +52,4 @@ gboolean clutter_stage_view_is_dirty_projection (ClutterStageView *view);
void clutter_stage_view_set_dirty_projection (ClutterStageView *view, void clutter_stage_view_set_dirty_projection (ClutterStageView *view,
gboolean dirty); gboolean dirty);
CLUTTER_AVAILABLE_IN_MUTTER
void clutter_stage_view_get_offscreen_transformation_matrix (ClutterStageView *view,
CoglMatrix *matrix);
#endif /* __CLUTTER_STAGE_VIEW_H__ */ #endif /* __CLUTTER_STAGE_VIEW_H__ */

View File

@@ -998,16 +998,6 @@ _clutter_stage_process_queued_events (ClutterStage *stage)
"Omitting motion event at %d, %d", "Omitting motion event at %d, %d",
(int) event->motion.x, (int) event->motion.x,
(int) event->motion.y); (int) event->motion.y);
if (next_event->type == CLUTTER_MOTION)
{
ClutterDeviceManager *device_manager =
clutter_device_manager_get_default ();
_clutter_device_manager_compress_motion (device_manager,
next_event, event);
}
goto next_event; goto next_event;
} }
else if (event->type == CLUTTER_TOUCH_UPDATE && else if (event->type == CLUTTER_TOUCH_UPDATE &&
@@ -1404,6 +1394,8 @@ _clutter_stage_do_pick_on_view (ClutterStage *stage,
view_layout.height); view_layout.height);
_clutter_stage_window_get_dirty_pixel (priv->impl, view, &dirty_x, &dirty_y); _clutter_stage_window_get_dirty_pixel (priv->impl, view, &dirty_x, &dirty_y);
dirty_x -= view_layout.x;
dirty_y -= view_layout.y;
if (G_LIKELY (!(clutter_pick_debug_flags & CLUTTER_DEBUG_DUMP_PICK_BUFFERS))) if (G_LIKELY (!(clutter_pick_debug_flags & CLUTTER_DEBUG_DUMP_PICK_BUFFERS)))
{ {
@@ -1454,10 +1446,10 @@ _clutter_stage_do_pick_on_view (ClutterStage *stage,
used. The format is requested as pre-multiplied because Cogl used. The format is requested as pre-multiplied because Cogl
assumes that all pixels in the framebuffer are premultiplied so assumes that all pixels in the framebuffer are premultiplied so
it avoids a conversion. */ it avoids a conversion. */
cogl_framebuffer_read_pixels (fb, cogl_read_pixels (read_x, read_y, 1, 1,
read_x, read_y, 1, 1, COGL_READ_PIXELS_COLOR_BUFFER,
COGL_PIXEL_FORMAT_RGBA_8888_PRE, COGL_PIXEL_FORMAT_RGBA_8888_PRE,
pixel); pixel);
if (G_UNLIKELY (clutter_pick_debug_flags & CLUTTER_DEBUG_DUMP_PICK_BUFFERS)) if (G_UNLIKELY (clutter_pick_debug_flags & CLUTTER_DEBUG_DUMP_PICK_BUFFERS))
{ {
@@ -4684,7 +4676,6 @@ capture_view (ClutterStage *stage,
uint8_t *data; uint8_t *data;
int stride; int stride;
CoglBitmap *bitmap; CoglBitmap *bitmap;
cairo_rectangle_int_t view_layout;
framebuffer = clutter_stage_view_get_framebuffer (view); framebuffer = clutter_stage_view_get_framebuffer (view);
@@ -4709,11 +4700,8 @@ capture_view (ClutterStage *stage,
stride, stride,
data); data);
clutter_stage_view_get_layout (view, &view_layout);
cogl_framebuffer_read_pixels_into_bitmap (framebuffer, cogl_framebuffer_read_pixels_into_bitmap (framebuffer,
rect->x - view_layout.x, rect->x, rect->y,
rect->y - view_layout.y,
COGL_READ_PIXELS_COLOR_BUFFER, COGL_READ_PIXELS_COLOR_BUFFER,
bitmap); bitmap);

View File

@@ -37,7 +37,6 @@
#include "clutter-stage-cogl.h" #include "clutter-stage-cogl.h"
#include <stdlib.h> #include <stdlib.h>
#include <math.h>
#include "clutter-actor-private.h" #include "clutter-actor-private.h"
#include "clutter-backend-private.h" #include "clutter-backend-private.h"
@@ -358,7 +357,7 @@ swap_framebuffer (ClutterStageWindow *stage_window,
cairo_rectangle_int_t *swap_region, cairo_rectangle_int_t *swap_region,
gboolean swap_with_damage) gboolean swap_with_damage)
{ {
CoglFramebuffer *framebuffer = clutter_stage_view_get_onscreen (view); CoglFramebuffer *framebuffer = clutter_stage_view_get_framebuffer (view);
int damage[4], ndamage; int damage[4], ndamage;
damage[0] = swap_region->x; damage[0] = swap_region->x;
@@ -420,12 +419,6 @@ paint_stage (ClutterStageCogl *stage_cogl,
_clutter_stage_maybe_setup_viewport (stage, view); _clutter_stage_maybe_setup_viewport (stage, view);
_clutter_stage_paint_view (stage, view, clip); _clutter_stage_paint_view (stage, view, clip);
if (clutter_stage_view_get_onscreen (view) !=
clutter_stage_view_get_framebuffer (view))
{
clutter_stage_view_blit_offscreen (view, clip);
}
} }
static void static void
@@ -445,42 +438,6 @@ fill_current_damage_history_and_step (ClutterStageView *view)
view_priv->damage_index++; view_priv->damage_index++;
} }
static void
transform_swap_region_to_onscreen (ClutterStageView *view,
cairo_rectangle_int_t *swap_region)
{
CoglFramebuffer *framebuffer;
cairo_rectangle_int_t layout;
gfloat x1, y1, x2, y2;
gint width, height;
framebuffer = clutter_stage_view_get_onscreen (view);
clutter_stage_view_get_layout (view, &layout);
x1 = (float) swap_region->x / layout.width;
y1 = (float) swap_region->y / layout.height;
x2 = (float) (swap_region->x + swap_region->width) / layout.width;
y2 = (float) (swap_region->y + swap_region->height) / layout.height;
clutter_stage_view_transform_to_onscreen (view, &x1, &y1);
clutter_stage_view_transform_to_onscreen (view, &x2, &y2);
width = cogl_framebuffer_get_width (framebuffer);
height = cogl_framebuffer_get_height (framebuffer);
x1 = floor (x1 * width);
y1 = floor (height - (y1 * height));
x2 = ceil (x2 * width);
y2 = ceil (height - (y2 * height));
*swap_region = (cairo_rectangle_int_t) {
.x = x1,
.y = y1,
.width = x2 - x1,
.height = y2 - y1
};
}
static gboolean static gboolean
clutter_stage_cogl_redraw_view (ClutterStageWindow *stage_window, clutter_stage_cogl_redraw_view (ClutterStageWindow *stage_window,
ClutterStageView *view) ClutterStageView *view)
@@ -751,12 +708,6 @@ clutter_stage_cogl_redraw_view (ClutterStageWindow *stage_window,
if (do_swap_buffer) if (do_swap_buffer)
{ {
if (clutter_stage_view_get_onscreen (view) !=
clutter_stage_view_get_framebuffer (view))
{
transform_swap_region_to_onscreen (view, &swap_region);
}
return swap_framebuffer (stage_window, return swap_framebuffer (stage_window,
view, view,
&swap_region, &swap_region,
@@ -806,9 +757,7 @@ clutter_stage_cogl_get_dirty_pixel (ClutterStageWindow *stage_window,
int *x, int *x,
int *y) int *y)
{ {
CoglFramebuffer *framebuffer = clutter_stage_view_get_framebuffer (view);
gboolean has_buffer_age = gboolean has_buffer_age =
cogl_is_onscreen (framebuffer) &&
cogl_clutter_winsys_has_feature (COGL_WINSYS_FEATURE_BUFFER_AGE); cogl_clutter_winsys_has_feature (COGL_WINSYS_FEATURE_BUFFER_AGE);
cairo_rectangle_int_t *rect; cairo_rectangle_int_t *rect;
@@ -822,13 +771,10 @@ clutter_stage_cogl_get_dirty_pixel (ClutterStageWindow *stage_window,
ClutterStageViewCogl *view_cogl = CLUTTER_STAGE_VIEW_COGL (view); ClutterStageViewCogl *view_cogl = CLUTTER_STAGE_VIEW_COGL (view);
ClutterStageViewCoglPrivate *view_priv = ClutterStageViewCoglPrivate *view_priv =
clutter_stage_view_cogl_get_instance_private (view_cogl); clutter_stage_view_cogl_get_instance_private (view_cogl);
cairo_rectangle_int_t view_layout;
clutter_stage_view_get_layout (view, &view_layout);
rect = &view_priv->damage_history[DAMAGE_HISTORY (view_priv->damage_index - 1)]; rect = &view_priv->damage_history[DAMAGE_HISTORY (view_priv->damage_index - 1)];
*x = rect->x - view_layout.x; *x = rect->x;
*y = rect->y - view_layout.y; *y = rect->y;
} }
} }

View File

@@ -124,7 +124,6 @@ G_DEFINE_TYPE_WITH_CODE (ClutterDeviceManagerEvdev,
static ClutterOpenDeviceCallback device_open_callback; static ClutterOpenDeviceCallback device_open_callback;
static ClutterCloseDeviceCallback device_close_callback; static ClutterCloseDeviceCallback device_close_callback;
static gpointer device_callback_data; static gpointer device_callback_data;
static gchar * evdev_seat_id;
#ifdef CLUTTER_ENABLE_DEBUG #ifdef CLUTTER_ENABLE_DEBUG
static const char *device_type_str[] = { static const char *device_type_str[] = {
@@ -312,9 +311,6 @@ new_absolute_motion_event (ClutterInputDevice *input_device,
_clutter_xkb_translate_state (event, seat->xkb, seat->button_state); _clutter_xkb_translate_state (event, seat->xkb, seat->button_state);
event->motion.x = x; event->motion.x = x;
event->motion.y = y; event->motion.y = y;
clutter_input_device_evdev_translate_coordinates (input_device, stage,
&event->motion.x,
&event->motion.y);
event->motion.axes = axes; event->motion.axes = axes;
clutter_event_set_source_device (event, input_device); clutter_event_set_source_device (event, input_device);
@@ -513,10 +509,6 @@ notify_touch_event (ClutterInputDevice *input_device,
event->touch.device = seat->core_pointer; event->touch.device = seat->core_pointer;
event->touch.x = x; event->touch.x = x;
event->touch.y = y; event->touch.y = y;
clutter_input_device_evdev_translate_coordinates (input_device, stage,
&event->touch.x,
&event->touch.y);
/* "NULL" sequences are special cased in clutter */ /* "NULL" sequences are special cased in clutter */
event->touch.sequence = GINT_TO_POINTER (slot + 1); event->touch.sequence = GINT_TO_POINTER (slot + 1);
_clutter_xkb_translate_state (event, seat->xkb, seat->button_state); _clutter_xkb_translate_state (event, seat->xkb, seat->button_state);
@@ -538,8 +530,7 @@ notify_pinch_gesture_event (ClutterInputDevice *input_device,
gdouble dx, gdouble dx,
gdouble dy, gdouble dy,
gdouble angle_delta, gdouble angle_delta,
gdouble scale, gdouble scale)
guint n_fingers)
{ {
ClutterInputDeviceEvdev *device_evdev; ClutterInputDeviceEvdev *device_evdev;
ClutterSeatEvdev *seat; ClutterSeatEvdev *seat;
@@ -570,7 +561,6 @@ notify_pinch_gesture_event (ClutterInputDevice *input_device,
event->touchpad_pinch.dy = dy; event->touchpad_pinch.dy = dy;
event->touchpad_pinch.angle_delta = angle_delta; event->touchpad_pinch.angle_delta = angle_delta;
event->touchpad_pinch.scale = scale; event->touchpad_pinch.scale = scale;
event->touchpad_pinch.n_fingers = n_fingers;
_clutter_xkb_translate_state (event, seat->xkb, seat->button_state); _clutter_xkb_translate_state (event, seat->xkb, seat->button_state);
@@ -668,7 +658,6 @@ notify_pad_button (ClutterInputDevice *input_device,
guint64 time_us, guint64 time_us,
guint32 button, guint32 button,
guint32 mode_group, guint32 mode_group,
guint32 mode,
guint32 pressed) guint32 pressed)
{ {
ClutterInputDeviceEvdev *device_evdev; ClutterInputDeviceEvdev *device_evdev;
@@ -694,7 +683,6 @@ notify_pad_button (ClutterInputDevice *input_device,
event->pad_button.stage = stage; event->pad_button.stage = stage;
event->pad_button.button = button; event->pad_button.button = button;
event->pad_button.group = mode_group; event->pad_button.group = mode_group;
event->pad_button.mode = mode;
clutter_event_set_device (event, input_device); clutter_event_set_device (event, input_device);
clutter_event_set_source_device (event, input_device); clutter_event_set_source_device (event, input_device);
clutter_event_set_time (event, us2ms (time_us)); clutter_event_set_time (event, us2ms (time_us));
@@ -710,7 +698,6 @@ notify_pad_strip (ClutterInputDevice *input_device,
guint32 strip_number, guint32 strip_number,
guint32 strip_source, guint32 strip_source,
guint32 mode_group, guint32 mode_group,
guint32 mode,
gdouble value) gdouble value)
{ {
ClutterInputDeviceEvdev *device_evdev; ClutterInputDeviceEvdev *device_evdev;
@@ -740,7 +727,6 @@ notify_pad_strip (ClutterInputDevice *input_device,
event->pad_strip.strip_number = strip_number; event->pad_strip.strip_number = strip_number;
event->pad_strip.value = value; event->pad_strip.value = value;
event->pad_strip.group = mode_group; event->pad_strip.group = mode_group;
event->pad_strip.mode = mode;
clutter_event_set_device (event, input_device); clutter_event_set_device (event, input_device);
clutter_event_set_source_device (event, input_device); clutter_event_set_source_device (event, input_device);
clutter_event_set_time (event, us2ms (time_us)); clutter_event_set_time (event, us2ms (time_us));
@@ -756,7 +742,6 @@ notify_pad_ring (ClutterInputDevice *input_device,
guint32 ring_number, guint32 ring_number,
guint32 ring_source, guint32 ring_source,
guint32 mode_group, guint32 mode_group,
guint32 mode,
gdouble angle) gdouble angle)
{ {
ClutterInputDeviceEvdev *device_evdev; ClutterInputDeviceEvdev *device_evdev;
@@ -786,7 +771,6 @@ notify_pad_ring (ClutterInputDevice *input_device,
event->pad_ring.ring_number = ring_number; event->pad_ring.ring_number = ring_number;
event->pad_ring.angle = angle; event->pad_ring.angle = angle;
event->pad_ring.group = mode_group; event->pad_ring.group = mode_group;
event->pad_ring.mode = mode;
clutter_event_set_device (event, input_device); clutter_event_set_device (event, input_device);
clutter_event_set_source_device (event, input_device); clutter_event_set_source_device (event, input_device);
clutter_event_set_time (event, us2ms (time_us)); clutter_event_set_time (event, us2ms (time_us));
@@ -925,9 +909,13 @@ evdev_add_device (ClutterDeviceManagerEvdev *manager_evdev,
* which are located on the main seat. Make whatever seat comes first the * which are located on the main seat. Make whatever seat comes first the
* main seat. */ * main seat. */
if (priv->main_seat->libinput_seat == NULL) if (priv->main_seat->libinput_seat == NULL)
seat = priv->main_seat; {
seat = priv->main_seat;
}
else else
seat = clutter_seat_evdev_new (manager_evdev); {
seat = clutter_seat_evdev_new (manager_evdev);
}
clutter_seat_evdev_set_libinput_seat (seat, libinput_seat); clutter_seat_evdev_set_libinput_seat (seat, libinput_seat);
priv->seats = g_slist_append (priv->seats, seat); priv->seats = g_slist_append (priv->seats, seat);
@@ -1224,17 +1212,11 @@ input_device_update_tool (ClutterInputDevice *input_device,
} }
} }
if (evdev_device->last_tool != tool) evdev_device->last_tool = tool;
{
evdev_device->last_tool = tool;
g_signal_emit_by_name (clutter_device_manager_get_default (),
"tool-changed", input_device, tool);
}
} }
static gdouble * static gdouble *
translate_tablet_axes (struct libinput_event_tablet_tool *tablet_event, translate_tablet_axes (struct libinput_event_tablet_tool *tablet_event)
ClutterInputDeviceTool *tool)
{ {
GArray *axes = g_array_new (FALSE, FALSE, sizeof (gdouble)); GArray *axes = g_array_new (FALSE, FALSE, sizeof (gdouble));
struct libinput_tablet_tool *libinput_tool; struct libinput_tablet_tool *libinput_tool;
@@ -1256,7 +1238,6 @@ translate_tablet_axes (struct libinput_event_tablet_tool *tablet_event,
if (libinput_tablet_tool_has_pressure (libinput_tool)) if (libinput_tablet_tool_has_pressure (libinput_tool))
{ {
value = libinput_event_tablet_tool_get_pressure (tablet_event); value = libinput_event_tablet_tool_get_pressure (tablet_event);
value = clutter_input_device_tool_evdev_translate_pressure (tool, value);
g_array_append_val (axes, value); g_array_append_val (axes, value);
} }
@@ -1640,7 +1621,6 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev,
struct libinput_event_gesture *gesture_event = struct libinput_event_gesture *gesture_event =
libinput_event_get_gesture_event (event); libinput_event_get_gesture_event (event);
ClutterTouchpadGesturePhase phase; ClutterTouchpadGesturePhase phase;
guint n_fingers;
guint64 time_us; guint64 time_us;
if (libinput_event_get_type (event) == LIBINPUT_EVENT_GESTURE_PINCH_BEGIN) if (libinput_event_get_type (event) == LIBINPUT_EVENT_GESTURE_PINCH_BEGIN)
@@ -1649,10 +1629,9 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev,
phase = libinput_event_gesture_get_cancelled (gesture_event) ? phase = libinput_event_gesture_get_cancelled (gesture_event) ?
CLUTTER_TOUCHPAD_GESTURE_PHASE_CANCEL : CLUTTER_TOUCHPAD_GESTURE_PHASE_END; CLUTTER_TOUCHPAD_GESTURE_PHASE_CANCEL : CLUTTER_TOUCHPAD_GESTURE_PHASE_END;
n_fingers = libinput_event_gesture_get_finger_count (gesture_event);
device = libinput_device_get_user_data (libinput_device); device = libinput_device_get_user_data (libinput_device);
time_us = libinput_event_gesture_get_time_usec (gesture_event); time_us = libinput_event_gesture_get_time_usec (gesture_event);
notify_pinch_gesture_event (device, phase, time_us, 0, 0, 0, 0, n_fingers); notify_pinch_gesture_event (device, phase, time_us, 0, 0, 0, 0);
break; break;
} }
case LIBINPUT_EVENT_GESTURE_PINCH_UPDATE: case LIBINPUT_EVENT_GESTURE_PINCH_UPDATE:
@@ -1660,10 +1639,8 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev,
struct libinput_event_gesture *gesture_event = struct libinput_event_gesture *gesture_event =
libinput_event_get_gesture_event (event); libinput_event_get_gesture_event (event);
gdouble angle_delta, scale, dx, dy; gdouble angle_delta, scale, dx, dy;
guint n_fingers;
guint64 time_us; guint64 time_us;
n_fingers = libinput_event_gesture_get_finger_count (gesture_event);
device = libinput_device_get_user_data (libinput_device); device = libinput_device_get_user_data (libinput_device);
time_us = libinput_event_gesture_get_time_usec (gesture_event); time_us = libinput_event_gesture_get_time_usec (gesture_event);
angle_delta = libinput_event_gesture_get_angle_delta (gesture_event); angle_delta = libinput_event_gesture_get_angle_delta (gesture_event);
@@ -1673,7 +1650,7 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev,
notify_pinch_gesture_event (device, notify_pinch_gesture_event (device,
CLUTTER_TOUCHPAD_GESTURE_PHASE_UPDATE, CLUTTER_TOUCHPAD_GESTURE_PHASE_UPDATE,
time_us, dx, dy, angle_delta, scale, n_fingers); time_us, dx, dy, angle_delta, scale);
break; break;
} }
case LIBINPUT_EVENT_GESTURE_SWIPE_BEGIN: case LIBINPUT_EVENT_GESTURE_SWIPE_BEGIN:
@@ -1734,8 +1711,7 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev,
if (!stage) if (!stage)
break; break;
axes = translate_tablet_axes (tablet_event, axes = translate_tablet_axes (tablet_event);
evdev_device->last_tool);
if (!axes) if (!axes)
break; break;
@@ -1775,11 +1751,8 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev,
libinput_tool = libinput_event_tablet_tool_get_tool (tablet_event); libinput_tool = libinput_event_tablet_tool_get_tool (tablet_event);
if (state == LIBINPUT_TABLET_TOOL_PROXIMITY_STATE_IN) input_device_update_tool (device, libinput_tool);
input_device_update_tool (device, libinput_tool);
notify_proximity (device, time, state == LIBINPUT_TABLET_TOOL_PROXIMITY_STATE_IN); notify_proximity (device, time, state == LIBINPUT_TABLET_TOOL_PROXIMITY_STATE_IN);
if (state == LIBINPUT_TABLET_TOOL_PROXIMITY_STATE_OUT)
input_device_update_tool (device, NULL);
break; break;
} }
case LIBINPUT_EVENT_TABLET_TOOL_BUTTON: case LIBINPUT_EVENT_TABLET_TOOL_BUTTON:
@@ -1821,7 +1794,7 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev,
case LIBINPUT_EVENT_TABLET_PAD_BUTTON: case LIBINPUT_EVENT_TABLET_PAD_BUTTON:
{ {
guint64 time; guint64 time;
guint32 button_state, button, group, mode; guint32 button_state, button, group;
struct libinput_tablet_pad_mode_group *mode_group; struct libinput_tablet_pad_mode_group *mode_group;
struct libinput_event_tablet_pad *pad_event = struct libinput_event_tablet_pad *pad_event =
libinput_event_get_tablet_pad_event (event); libinput_event_get_tablet_pad_event (event);
@@ -1831,18 +1804,17 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev,
mode_group = libinput_event_tablet_pad_get_mode_group (pad_event); mode_group = libinput_event_tablet_pad_get_mode_group (pad_event);
group = libinput_tablet_pad_mode_group_get_index (mode_group); group = libinput_tablet_pad_mode_group_get_index (mode_group);
mode = libinput_event_tablet_pad_get_mode (pad_event);
button = libinput_event_tablet_pad_get_button_number (pad_event); button = libinput_event_tablet_pad_get_button_number (pad_event);
button_state = libinput_event_tablet_pad_get_button_state (pad_event) == button_state = libinput_event_tablet_pad_get_button_state (pad_event) ==
LIBINPUT_BUTTON_STATE_PRESSED; LIBINPUT_BUTTON_STATE_PRESSED;
notify_pad_button (device, time, button, group, mode, button_state); notify_pad_button (device, time, button, group, button_state);
break; break;
} }
case LIBINPUT_EVENT_TABLET_PAD_STRIP: case LIBINPUT_EVENT_TABLET_PAD_STRIP:
{ {
guint64 time; guint64 time;
guint32 number, source, group, mode; guint32 number, source, group;
struct libinput_tablet_pad_mode_group *mode_group; struct libinput_tablet_pad_mode_group *mode_group;
struct libinput_event_tablet_pad *pad_event = struct libinput_event_tablet_pad *pad_event =
libinput_event_get_tablet_pad_event (event); libinput_event_get_tablet_pad_event (event);
@@ -1856,15 +1828,14 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev,
mode_group = libinput_event_tablet_pad_get_mode_group (pad_event); mode_group = libinput_event_tablet_pad_get_mode_group (pad_event);
group = libinput_tablet_pad_mode_group_get_index (mode_group); group = libinput_tablet_pad_mode_group_get_index (mode_group);
mode = libinput_event_tablet_pad_get_mode (pad_event);
notify_pad_strip (device, time, number, source, group, mode, value); notify_pad_strip (device, time, number, source, group, value);
break; break;
} }
case LIBINPUT_EVENT_TABLET_PAD_RING: case LIBINPUT_EVENT_TABLET_PAD_RING:
{ {
guint64 time; guint64 time;
guint32 number, source, group, mode; guint32 number, source, group;
struct libinput_tablet_pad_mode_group *mode_group; struct libinput_tablet_pad_mode_group *mode_group;
struct libinput_event_tablet_pad *pad_event = struct libinput_event_tablet_pad *pad_event =
libinput_event_get_tablet_pad_event (event); libinput_event_get_tablet_pad_event (event);
@@ -1878,9 +1849,8 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev,
mode_group = libinput_event_tablet_pad_get_mode_group (pad_event); mode_group = libinput_event_tablet_pad_get_mode_group (pad_event);
group = libinput_tablet_pad_mode_group_get_index (mode_group); group = libinput_tablet_pad_mode_group_get_index (mode_group);
mode = libinput_event_tablet_pad_get_mode (pad_event);
notify_pad_ring (device, time, number, source, group, mode, angle); notify_pad_ring (device, time, number, source, group, angle);
break; break;
} }
default: default:
@@ -2004,31 +1974,6 @@ clutter_device_manager_evdev_create_virtual_device (ClutterDeviceManager *manag
NULL); NULL);
} }
static void
clutter_device_manager_evdev_compress_motion (ClutterDeviceManager *device_manger,
ClutterEvent *event,
const ClutterEvent *to_discard)
{
double dx, dy;
double dx_unaccel, dy_unaccel;
double dst_dx = 0.0, dst_dy = 0.0;
double dst_dx_unaccel = 0.0, dst_dy_unaccel = 0.0;
if (!clutter_evdev_event_get_relative_motion (to_discard,
&dx, &dy,
&dx_unaccel, &dy_unaccel))
return;
clutter_evdev_event_get_relative_motion (event,
&dst_dx, &dst_dy,
&dst_dx_unaccel, &dst_dy_unaccel);
_clutter_evdev_event_set_relative_motion (event,
dx + dst_dx,
dy + dst_dy,
dx_unaccel + dst_dx_unaccel,
dy_unaccel + dst_dy_unaccel);
}
/* /*
* GObject implementation * GObject implementation
*/ */
@@ -2062,8 +2007,7 @@ clutter_device_manager_evdev_constructed (GObject *gobject)
return; return;
} }
if (libinput_udev_assign_seat (priv->libinput, if (libinput_udev_assign_seat (priv->libinput, "seat0") == -1)
evdev_seat_id ? evdev_seat_id : "seat0") == -1)
{ {
g_critical ("Failed to assign a seat to the libinput object."); g_critical ("Failed to assign a seat to the libinput object.");
libinput_unref (priv->libinput); libinput_unref (priv->libinput);
@@ -2170,7 +2114,6 @@ clutter_device_manager_evdev_class_init (ClutterDeviceManagerEvdevClass *klass)
manager_class->get_core_device = clutter_device_manager_evdev_get_core_device; manager_class->get_core_device = clutter_device_manager_evdev_get_core_device;
manager_class->get_device = clutter_device_manager_evdev_get_device; manager_class->get_device = clutter_device_manager_evdev_get_device;
manager_class->create_virtual_device = clutter_device_manager_evdev_create_virtual_device; manager_class->create_virtual_device = clutter_device_manager_evdev_create_virtual_device;
manager_class->compress_motion = clutter_device_manager_evdev_compress_motion;
} }
static void static void
@@ -2296,12 +2239,6 @@ _clutter_device_manager_evdev_acquire_device_id (ClutterDeviceManagerEvdev *mana
return next_id; return next_id;
} }
void
_clutter_device_manager_evdev_dispatch (ClutterDeviceManagerEvdev *manager_evdev)
{
dispatch_libinput (manager_evdev);
}
static int static int
compare_ids (gconstpointer a, compare_ids (gconstpointer a,
gconstpointer b) gconstpointer b)
@@ -2571,60 +2508,6 @@ clutter_evdev_set_keyboard_layout_index (ClutterDeviceManager *evdev,
xkb_state_update_mask (state, depressed_mods, latched_mods, locked_mods, 0, 0, idx); xkb_state_update_mask (state, depressed_mods, latched_mods, locked_mods, 0, 0, idx);
} }
/**
* clutter_evdev_set_keyboard_numlock: (skip)
* @evdev: the #ClutterDeviceManager created by the evdev backend
* @numlock_set: TRUE to set NumLock ON, FALSE otherwise.
*
* Sets the NumLock state on the backend's #xkb_state .
*
* Stability: unstable
*/
void
clutter_evdev_set_keyboard_numlock (ClutterDeviceManager *evdev,
gboolean numlock_state)
{
ClutterDeviceManagerEvdev *manager_evdev;
ClutterDeviceManagerEvdevPrivate *priv;
GSList *iter;
xkb_mod_mask_t numlock;
g_return_if_fail (CLUTTER_IS_DEVICE_MANAGER_EVDEV (evdev));
manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (evdev);
priv = manager_evdev->priv;
numlock = (1 << xkb_keymap_mod_get_index(priv->keymap, "Mod2"));
for (iter = priv->seats; iter; iter = iter->next)
{
ClutterSeatEvdev *seat = iter->data;
xkb_mod_mask_t depressed_mods;
xkb_mod_mask_t latched_mods;
xkb_mod_mask_t locked_mods;
xkb_mod_mask_t group_mods;
depressed_mods = xkb_state_serialize_mods (seat->xkb, XKB_STATE_MODS_DEPRESSED);
latched_mods = xkb_state_serialize_mods (seat->xkb, XKB_STATE_MODS_LATCHED);
locked_mods = xkb_state_serialize_mods (seat->xkb, XKB_STATE_MODS_LOCKED);
group_mods = xkb_state_serialize_layout (seat->xkb, XKB_STATE_LAYOUT_EFFECTIVE);
if (numlock_state)
locked_mods |= numlock;
else
locked_mods &= ~numlock;
xkb_state_update_mask (seat->xkb,
depressed_mods,
latched_mods,
locked_mods,
0, 0,
group_mods);
clutter_seat_evdev_sync_leds (seat);
}
}
/** /**
* clutter_evdev_set_pointer_constrain_callback: * clutter_evdev_set_pointer_constrain_callback:
* @evdev: the #ClutterDeviceManager created by the evdev backend * @evdev: the #ClutterDeviceManager created by the evdev backend
@@ -2812,18 +2695,3 @@ clutter_evdev_warp_pointer (ClutterInputDevice *pointer_device,
{ {
notify_absolute_motion (pointer_device, ms2us(time_), x, y, NULL); notify_absolute_motion (pointer_device, ms2us(time_), x, y, NULL);
} }
/**
* clutter_evdev_set_seat_id:
* @seat_id: The seat ID
*
* Sets the seat to assign to the libinput context.
*
* For reliable effects, this function must be called before clutter_init().
*/
void
clutter_evdev_set_seat_id (const gchar *seat_id)
{
g_free (evdev_seat_id);
evdev_seat_id = g_strdup (seat_id);
}

View File

@@ -76,8 +76,6 @@ void _clutter_device_manager_evdev_constrain_pointer (ClutterDeviceManagerEvdev
float *new_x, float *new_x,
float *new_y); float *new_y);
void _clutter_device_manager_evdev_dispatch (ClutterDeviceManagerEvdev *manager_evdev);
static inline guint64 static inline guint64
us (guint64 us) us (guint64 us)
{ {

View File

@@ -57,9 +57,6 @@ void clutter_evdev_set_device_callbacks (ClutterOpenDeviceCallback open_callba
ClutterCloseDeviceCallback close_callback, ClutterCloseDeviceCallback close_callback,
gpointer user_data); gpointer user_data);
CLUTTER_AVAILABLE_IN_ALL
void clutter_evdev_set_seat_id (const gchar *seat_id);
CLUTTER_AVAILABLE_IN_1_10 CLUTTER_AVAILABLE_IN_1_10
void clutter_evdev_release_devices (void); void clutter_evdev_release_devices (void);
CLUTTER_AVAILABLE_IN_1_10 CLUTTER_AVAILABLE_IN_1_10
@@ -108,10 +105,6 @@ CLUTTER_AVAILABLE_IN_1_20
void clutter_evdev_set_keyboard_layout_index (ClutterDeviceManager *evdev, void clutter_evdev_set_keyboard_layout_index (ClutterDeviceManager *evdev,
xkb_layout_index_t idx); xkb_layout_index_t idx);
CLUTTER_AVAILABLE_IN_1_26
void clutter_evdev_set_keyboard_numlock (ClutterDeviceManager *evdev,
gboolean numlock_state);
CLUTTER_AVAILABLE_IN_1_18 CLUTTER_AVAILABLE_IN_1_18
void clutter_evdev_set_keyboard_repeat (ClutterDeviceManager *evdev, void clutter_evdev_set_keyboard_repeat (ClutterDeviceManager *evdev,
gboolean repeat, gboolean repeat,
@@ -153,14 +146,6 @@ gboolean clutter_evdev_event_get_relative_motion (const ClutterEvent *event,
double *dx_unaccel, double *dx_unaccel,
double *dy_unaccel); double *dy_unaccel);
CLUTTER_AVAILABLE_IN_ALL
void clutter_evdev_input_device_tool_set_pressure_curve (ClutterInputDeviceTool *tool,
gdouble curve[4]);
CLUTTER_AVAILABLE_IN_ALL
void clutter_evdev_input_device_tool_set_button_code (ClutterInputDeviceTool *tool,
guint button,
guint evcode);
G_END_DECLS G_END_DECLS
#endif /* __CLUTTER_EVDEV_H__ */ #endif /* __CLUTTER_EVDEV_H__ */

View File

@@ -35,8 +35,6 @@
#include "clutter-input-device-evdev.h" #include "clutter-input-device-evdev.h"
#include "clutter-device-manager-evdev.h" #include "clutter-device-manager-evdev.h"
#include "cairo-gobject.h"
typedef struct _ClutterInputDeviceClass ClutterInputDeviceEvdevClass; typedef struct _ClutterInputDeviceClass ClutterInputDeviceEvdevClass;
#define clutter_input_device_evdev_get_type _clutter_input_device_evdev_get_type #define clutter_input_device_evdev_get_type _clutter_input_device_evdev_get_type
@@ -45,15 +43,6 @@ G_DEFINE_TYPE (ClutterInputDeviceEvdev,
clutter_input_device_evdev, clutter_input_device_evdev,
CLUTTER_TYPE_INPUT_DEVICE) CLUTTER_TYPE_INPUT_DEVICE)
enum {
PROP_0,
PROP_DEVICE_MATRIX,
PROP_OUTPUT_ASPECT_RATIO,
N_PROPS
};
static GParamSpec *obj_props[N_PROPS] = { 0 };
static void static void
clutter_input_device_evdev_finalize (GObject *object) clutter_input_device_evdev_finalize (GObject *object)
{ {
@@ -70,53 +59,6 @@ clutter_input_device_evdev_finalize (GObject *object)
G_OBJECT_CLASS (clutter_input_device_evdev_parent_class)->finalize (object); G_OBJECT_CLASS (clutter_input_device_evdev_parent_class)->finalize (object);
} }
static void
clutter_input_device_evdev_set_property (GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec)
{
ClutterInputDeviceEvdev *device = CLUTTER_INPUT_DEVICE_EVDEV (object);
switch (prop_id)
{
case PROP_DEVICE_MATRIX:
{
const cairo_matrix_t *matrix = g_value_get_boxed (value);
cairo_matrix_init_identity (&device->device_matrix);
cairo_matrix_multiply (&device->device_matrix,
&device->device_matrix, matrix);
break;
}
case PROP_OUTPUT_ASPECT_RATIO:
device->output_ratio = g_value_get_double (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
}
static void
clutter_input_device_evdev_get_property (GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec)
{
ClutterInputDeviceEvdev *device = CLUTTER_INPUT_DEVICE_EVDEV (object);
switch (prop_id)
{
case PROP_DEVICE_MATRIX:
g_value_set_boxed (value, &device->device_matrix);
break;
case PROP_OUTPUT_ASPECT_RATIO:
g_value_set_double (value, device->output_ratio);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
}
static gboolean static gboolean
clutter_input_device_evdev_keycode_to_evdev (ClutterInputDevice *device, clutter_input_device_evdev_keycode_to_evdev (ClutterInputDevice *device,
guint hardware_keycode, guint hardware_keycode,
@@ -166,83 +108,19 @@ clutter_input_device_evdev_update_from_tool (ClutterInputDevice *device,
g_object_thaw_notify (G_OBJECT (device)); g_object_thaw_notify (G_OBJECT (device));
} }
static gboolean
clutter_input_device_evdev_is_mode_switch_button (ClutterInputDevice *device,
guint group,
guint button)
{
struct libinput_device *libinput_device;
struct libinput_tablet_pad_mode_group *mode_group;
libinput_device = clutter_evdev_input_device_get_libinput_device (device);
mode_group = libinput_device_tablet_pad_get_mode_group (libinput_device, group);
return libinput_tablet_pad_mode_group_button_is_toggle (mode_group, button) != 0;
}
static gint
clutter_input_device_evdev_get_group_n_modes (ClutterInputDevice *device,
gint group)
{
struct libinput_device *libinput_device;
struct libinput_tablet_pad_mode_group *mode_group;
libinput_device = clutter_evdev_input_device_get_libinput_device (device);
mode_group = libinput_device_tablet_pad_get_mode_group (libinput_device, group);
return libinput_tablet_pad_mode_group_get_num_modes (mode_group);
}
static gboolean
clutter_input_device_evdev_is_grouped (ClutterInputDevice *device,
ClutterInputDevice *other_device)
{
struct libinput_device *libinput_device, *other_libinput_device;
libinput_device = clutter_evdev_input_device_get_libinput_device (device);
other_libinput_device = clutter_evdev_input_device_get_libinput_device (other_device);
return libinput_device_get_device_group (libinput_device) ==
libinput_device_get_device_group (other_libinput_device);
}
static void static void
clutter_input_device_evdev_class_init (ClutterInputDeviceEvdevClass *klass) clutter_input_device_evdev_class_init (ClutterInputDeviceEvdevClass *klass)
{ {
GObjectClass *object_class = G_OBJECT_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->finalize = clutter_input_device_evdev_finalize; object_class->finalize = clutter_input_device_evdev_finalize;
object_class->set_property = clutter_input_device_evdev_set_property;
object_class->get_property = clutter_input_device_evdev_get_property;
klass->keycode_to_evdev = clutter_input_device_evdev_keycode_to_evdev; klass->keycode_to_evdev = clutter_input_device_evdev_keycode_to_evdev;
klass->update_from_tool = clutter_input_device_evdev_update_from_tool; klass->update_from_tool = clutter_input_device_evdev_update_from_tool;
klass->is_mode_switch_button = clutter_input_device_evdev_is_mode_switch_button;
klass->get_group_n_modes = clutter_input_device_evdev_get_group_n_modes;
klass->is_grouped = clutter_input_device_evdev_is_grouped;
obj_props[PROP_DEVICE_MATRIX] =
g_param_spec_boxed ("device-matrix",
P_("Device input matrix"),
P_("Device input matrix"),
CAIRO_GOBJECT_TYPE_MATRIX,
CLUTTER_PARAM_READWRITE);
obj_props[PROP_OUTPUT_ASPECT_RATIO] =
g_param_spec_double ("output-aspect-ratio",
P_("Output aspect ratio"),
P_("Output aspect ratio"),
0, G_MAXDOUBLE, 0,
CLUTTER_PARAM_READWRITE);
g_object_class_install_properties (object_class, N_PROPS, obj_props);
} }
static void static void
clutter_input_device_evdev_init (ClutterInputDeviceEvdev *self) clutter_input_device_evdev_init (ClutterInputDeviceEvdev *self)
{ {
cairo_matrix_init_identity (&self->device_matrix);
self->device_aspect_ratio = 0;
self->output_ratio = 0;
} }
/* /*
@@ -265,7 +143,6 @@ _clutter_input_device_evdev_new (ClutterDeviceManager *manager,
gchar *vendor, *product; gchar *vendor, *product;
gint device_id, n_rings = 0, n_strips = 0, n_groups = 1; gint device_id, n_rings = 0, n_strips = 0, n_groups = 1;
gchar *node_path; gchar *node_path;
gdouble width, height;
type = _clutter_input_device_evdev_determine_type (libinput_device); type = _clutter_input_device_evdev_determine_type (libinput_device);
vendor = g_strdup_printf ("%.4x", libinput_device_get_id_vendor (libinput_device)); vendor = g_strdup_printf ("%.4x", libinput_device_get_id_vendor (libinput_device));
@@ -305,9 +182,6 @@ _clutter_input_device_evdev_new (ClutterDeviceManager *manager,
g_free (vendor); g_free (vendor);
g_free (product); g_free (product);
if (libinput_device_get_size (libinput_device, &width, &height) == 0)
device->device_aspect_ratio = width / height;
return CLUTTER_INPUT_DEVICE (device); return CLUTTER_INPUT_DEVICE (device);
} }
@@ -439,39 +313,3 @@ clutter_evdev_event_sequence_get_slot (const ClutterEventSequence *sequence)
return GPOINTER_TO_INT (sequence) - 1; return GPOINTER_TO_INT (sequence) - 1;
} }
void
clutter_input_device_evdev_translate_coordinates (ClutterInputDevice *device,
ClutterStage *stage,
gfloat *x,
gfloat *y)
{
ClutterInputDeviceEvdev *device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (device);
double min_x = 0, min_y = 0, max_x = 1, max_y = 1;
gdouble stage_width, stage_height;
double x_d, y_d;
stage_width = clutter_actor_get_width (CLUTTER_ACTOR (stage));
stage_height = clutter_actor_get_height (CLUTTER_ACTOR (stage));
x_d = *x / stage_width;
y_d = *y / stage_height;
/* Apply aspect ratio */
if (device_evdev->output_ratio > 0 &&
device_evdev->device_aspect_ratio > 0)
{
gdouble ratio = device_evdev->device_aspect_ratio / device_evdev->output_ratio;
if (ratio > 1)
x_d *= ratio;
else if (ratio < 1)
y_d *= 1 / ratio;
}
cairo_matrix_transform_point (&device_evdev->device_matrix, &min_x, &min_y);
cairo_matrix_transform_point (&device_evdev->device_matrix, &max_x, &max_y);
cairo_matrix_transform_point (&device_evdev->device_matrix, &x_d, &y_d);
*x = CLAMP (x_d, MIN (min_x, max_x), MAX (min_x, max_x)) * stage_width;
*y = CLAMP (y_d, MIN (min_y, max_y), MAX (min_y, max_y)) * stage_height;
}

View File

@@ -66,10 +66,6 @@ struct _ClutterInputDeviceEvdev
struct libinput_device *libinput_device; struct libinput_device *libinput_device;
ClutterSeatEvdev *seat; ClutterSeatEvdev *seat;
ClutterInputDeviceTool *last_tool; ClutterInputDeviceTool *last_tool;
cairo_matrix_t device_matrix;
gdouble device_aspect_ratio; /* w:h */
gdouble output_ratio; /* w:h */
}; };
GType _clutter_input_device_evdev_get_type (void) G_GNUC_CONST; GType _clutter_input_device_evdev_get_type (void) G_GNUC_CONST;
@@ -106,11 +102,6 @@ void _clutter_evdev_event_set_relative_motion (ClutterEvent *event,
double dx_unaccel, double dx_unaccel,
double dy_unaccel); double dy_unaccel);
void clutter_input_device_evdev_translate_coordinates (ClutterInputDevice *device,
ClutterStage *stage,
gfloat *x,
gfloat *y);
G_END_DECLS G_END_DECLS
#endif /* __CLUTTER_INPUT_DEVICE_EVDEV_H__ */ #endif /* __CLUTTER_INPUT_DEVICE_EVDEV_H__ */

View File

@@ -26,7 +26,6 @@
#endif #endif
#include "clutter-input-device-tool-evdev.h" #include "clutter-input-device-tool-evdev.h"
#include "clutter-evdev.h"
G_DEFINE_TYPE (ClutterInputDeviceToolEvdev, clutter_input_device_tool_evdev, G_DEFINE_TYPE (ClutterInputDeviceToolEvdev, clutter_input_device_tool_evdev,
CLUTTER_TYPE_INPUT_DEVICE_TOOL) CLUTTER_TYPE_INPUT_DEVICE_TOOL)
@@ -36,7 +35,6 @@ clutter_input_device_tool_evdev_finalize (GObject *object)
{ {
ClutterInputDeviceToolEvdev *tool = CLUTTER_INPUT_DEVICE_TOOL_EVDEV (object); ClutterInputDeviceToolEvdev *tool = CLUTTER_INPUT_DEVICE_TOOL_EVDEV (object);
g_hash_table_unref (tool->button_map);
libinput_tablet_tool_unref (tool->tool); libinput_tablet_tool_unref (tool->tool);
G_OBJECT_CLASS (clutter_input_device_tool_evdev_parent_class)->finalize (object); G_OBJECT_CLASS (clutter_input_device_tool_evdev_parent_class)->finalize (object);
@@ -53,7 +51,6 @@ clutter_input_device_tool_evdev_class_init (ClutterInputDeviceToolEvdevClass *kl
static void static void
clutter_input_device_tool_evdev_init (ClutterInputDeviceToolEvdev *tool) clutter_input_device_tool_evdev_init (ClutterInputDeviceToolEvdev *tool)
{ {
tool->button_map = g_hash_table_new (NULL, NULL);
} }
ClutterInputDeviceTool * ClutterInputDeviceTool *
@@ -73,96 +70,3 @@ clutter_input_device_tool_evdev_new (struct libinput_tablet_tool *tool,
return CLUTTER_INPUT_DEVICE_TOOL (evdev_tool); return CLUTTER_INPUT_DEVICE_TOOL (evdev_tool);
} }
void
clutter_evdev_input_device_tool_set_pressure_curve (ClutterInputDeviceTool *tool,
gdouble curve[4])
{
ClutterInputDeviceToolEvdev *evdev_tool;
g_return_if_fail (CLUTTER_IS_INPUT_DEVICE_TOOL_EVDEV (tool));
g_return_if_fail (curve[0] >= 0 && curve[0] <= 1 &&
curve[1] >= 0 && curve[1] <= 1 &&
curve[2] >= 0 && curve[2] <= 1 &&
curve[3] >= 0 && curve[3] <= 1);
evdev_tool = CLUTTER_INPUT_DEVICE_TOOL_EVDEV (tool);
evdev_tool->pressure_curve[0] = curve[0];
evdev_tool->pressure_curve[1] = curve[1];
evdev_tool->pressure_curve[2] = curve[2];
evdev_tool->pressure_curve[3] = curve[3];
}
void
clutter_evdev_input_device_tool_set_button_code (ClutterInputDeviceTool *tool,
guint button,
guint evcode)
{
ClutterInputDeviceToolEvdev *evdev_tool;
g_return_if_fail (CLUTTER_IS_INPUT_DEVICE_TOOL_EVDEV (tool));
evdev_tool = CLUTTER_INPUT_DEVICE_TOOL_EVDEV (tool);
if (evcode == 0)
{
g_hash_table_remove (evdev_tool->button_map, GUINT_TO_POINTER (button));
}
else
{
g_hash_table_insert (evdev_tool->button_map, GUINT_TO_POINTER (button),
GUINT_TO_POINTER (evcode));
}
}
static gdouble
calculate_bezier_position (gdouble pos,
gdouble x1,
gdouble y1,
gdouble x2,
gdouble y2)
{
gdouble int1_y, int2_y;
pos = CLAMP (pos, 0, 1);
/* Intersection between 0,0 and x1,y1 */
int1_y = pos * y1;
/* Intersection between x2,y2 and 1,1 */
int2_y = (pos * (1 - y2)) + y2;
/* Find the new position in the line traced by the previous points */
return (pos * (int2_y - int1_y)) + int1_y;
}
gdouble
clutter_input_device_tool_evdev_translate_pressure (ClutterInputDeviceTool *tool,
gdouble pressure)
{
ClutterInputDeviceToolEvdev *evdev_tool;
g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE_TOOL (tool), pressure);
evdev_tool = CLUTTER_INPUT_DEVICE_TOOL_EVDEV (tool);
return calculate_bezier_position (CLAMP (pressure, 0, 1),
evdev_tool->pressure_curve[0],
evdev_tool->pressure_curve[1],
evdev_tool->pressure_curve[2],
evdev_tool->pressure_curve[3]);
}
guint
clutter_input_device_tool_evdev_get_button_code (ClutterInputDeviceTool *tool,
guint button)
{
ClutterInputDeviceToolEvdev *evdev_tool;
g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE_TOOL (tool), 0);
evdev_tool = CLUTTER_INPUT_DEVICE_TOOL_EVDEV (tool);
return GPOINTER_TO_UINT (g_hash_table_lookup (evdev_tool->button_map,
GUINT_TO_POINTER (button)));
}

View File

@@ -59,8 +59,6 @@ struct _ClutterInputDeviceToolEvdev
{ {
ClutterInputDeviceTool parent_instance; ClutterInputDeviceTool parent_instance;
struct libinput_tablet_tool *tool; struct libinput_tablet_tool *tool;
GHashTable *button_map;
gdouble pressure_curve[4];
}; };
struct _ClutterInputDeviceToolEvdevClass struct _ClutterInputDeviceToolEvdevClass
@@ -74,11 +72,6 @@ ClutterInputDeviceTool * clutter_input_device_tool_evdev_new (struct libinp
guint64 serial, guint64 serial,
ClutterInputDeviceToolType type); ClutterInputDeviceToolType type);
gdouble clutter_input_device_tool_evdev_translate_pressure (ClutterInputDeviceTool *tool,
gdouble pressure);
guint clutter_input_device_tool_evdev_get_button_code (ClutterInputDeviceTool *tool,
guint button);
G_END_DECLS G_END_DECLS
#endif /* __CLUTTER_INPUT_DEVICE_EVDEV_TOOL_H__ */ #endif /* __CLUTTER_INPUT_DEVICE_EVDEV_TOOL_H__ */

View File

@@ -32,7 +32,6 @@
#include "clutter-event-private.h" #include "clutter-event-private.h"
#include "clutter-input-device-evdev.h" #include "clutter-input-device-evdev.h"
#include "clutter-input-device-tool-evdev.h"
#include "clutter-main.h" #include "clutter-main.h"
/* Try to keep the pointer inside the stage. Hopefully no one is using /* Try to keep the pointer inside the stage. Hopefully no one is using
@@ -186,19 +185,15 @@ keyboard_repeat (gpointer data)
{ {
ClutterSeatEvdev *seat = data; ClutterSeatEvdev *seat = data;
GSource *source; GSource *source;
guint32 time_ms;
/* There might be events queued in libinput that could cancel the
repeat timer. */
_clutter_device_manager_evdev_dispatch (seat->manager_evdev);
if (!seat->repeat_timer)
return G_SOURCE_REMOVE;
g_return_val_if_fail (seat->repeat_device != NULL, G_SOURCE_REMOVE); g_return_val_if_fail (seat->repeat_device != NULL, G_SOURCE_REMOVE);
source = g_main_context_find_source_by_id (NULL, seat->repeat_timer); source = g_main_context_find_source_by_id (NULL, seat->repeat_timer);
time_ms = g_source_get_time (source) / 1000;
clutter_seat_evdev_notify_key (seat, clutter_seat_evdev_notify_key (seat,
seat->repeat_device, seat->repeat_device,
g_source_get_time (source), ms2us (time_ms),
seat->repeat_key, seat->repeat_key,
AUTOREPEAT_VALUE, AUTOREPEAT_VALUE,
FALSE); FALSE);
@@ -426,7 +421,7 @@ void clutter_seat_evdev_notify_absolute_motion (ClutterSeatEvdev *seat,
{ {
ClutterEvent *event; ClutterEvent *event;
event = new_absolute_motion_event (seat, input_device, time_us, x, y, axes); event = new_absolute_motion_event (seat, input_device, time_us, x, x, axes);
queue_event (event); queue_event (event);
} }
@@ -438,7 +433,6 @@ clutter_seat_evdev_notify_button (ClutterSeatEvdev *seat,
uint32_t button, uint32_t button,
uint32_t state) uint32_t state)
{ {
ClutterInputDeviceEvdev *device_evdev = (ClutterInputDeviceEvdev *) input_device;
ClutterStage *stage; ClutterStage *stage;
ClutterEvent *event = NULL; ClutterEvent *event = NULL;
gint button_nr; gint button_nr;
@@ -534,21 +528,13 @@ clutter_seat_evdev_notify_button (ClutterSeatEvdev *seat,
clutter_event_set_device (event, seat->core_pointer); clutter_event_set_device (event, seat->core_pointer);
clutter_event_set_source_device (event, input_device); clutter_event_set_source_device (event, input_device);
if (device_evdev->last_tool)
{
/* Apply the button event code as per the tool mapping */
guint mapped_button;
mapped_button = clutter_input_device_tool_evdev_get_button_code (device_evdev->last_tool,
button_nr);
if (mapped_button != 0)
button = mapped_button;
}
_clutter_evdev_event_set_event_code (event, button); _clutter_evdev_event_set_event_code (event, button);
if (clutter_input_device_get_device_type (input_device) == CLUTTER_TABLET_DEVICE) if (clutter_input_device_get_device_type (input_device) == CLUTTER_TABLET_DEVICE)
{ {
ClutterInputDeviceEvdev *device_evdev =
CLUTTER_INPUT_DEVICE_EVDEV (input_device);
clutter_event_set_device_tool (event, device_evdev->last_tool); clutter_event_set_device_tool (event, device_evdev->last_tool);
clutter_event_set_device (event, input_device); clutter_event_set_device (event, input_device);
} }

View File

@@ -71,9 +71,17 @@ update_button_count (ClutterVirtualInputDeviceEvdev *virtual_evdev,
uint32_t state) uint32_t state)
{ {
if (state) if (state)
return ++virtual_evdev->button_count[button]; {
return ++virtual_evdev->button_count[button];
}
else else
return --virtual_evdev->button_count[button]; {
/* Handle cases where we newer saw the initial pressed event. */
if (virtual_evdev->button_count[button] == 0)
return 0;
return --virtual_evdev->button_count[button];
}
} }
static EvdevButtonType static EvdevButtonType
@@ -124,9 +132,6 @@ release_pressed_buttons (ClutterVirtualInputDevice *virtual_device)
for (code = 0; code < G_N_ELEMENTS (virtual_evdev->button_count); code++) for (code = 0; code < G_N_ELEMENTS (virtual_evdev->button_count); code++)
{ {
if (virtual_evdev->button_count[code] == 0)
continue;
switch (get_button_type (code)) switch (get_button_type (code))
{ {
case EVDEV_BUTTON_TYPE_KEY: case EVDEV_BUTTON_TYPE_KEY:
@@ -197,11 +202,10 @@ clutter_virtual_input_device_evdev_notify_button (ClutterVirtualInputDevice *vir
} }
button_count = update_button_count (virtual_evdev, button, button_state); button_count = update_button_count (virtual_evdev, button, button_state);
if (button_count < 0 || button_count > 1) if (button_count > 1)
{ {
g_warning ("Received multiple virtual 0x%x button %s (ignoring)", button, g_warning ("Received multiple virtual 0x%x button presses (ignoring)",
button_state == CLUTTER_BUTTON_STATE_PRESSED ? "presses" : "releases"); button);
update_button_count (virtual_evdev, button, 1 - button_state);
return; return;
} }
@@ -229,11 +233,10 @@ clutter_virtual_input_device_evdev_notify_key (ClutterVirtualInputDevice *virtua
} }
key_count = update_button_count (virtual_evdev, key, key_state); key_count = update_button_count (virtual_evdev, key, key_state);
if (key_count < 0 || key_count > 1) if (key_count > 1)
{ {
g_warning ("Received multiple virtual 0x%x key %s (ignoring)", key, g_warning ("Received multiple virtual 0x%x key presses (ignoring)",
key_state == CLUTTER_KEY_STATE_PRESSED ? "presses" : "releases"); key);
update_button_count (virtual_evdev, key, 1 - key_state);
return; return;
} }
@@ -360,11 +363,10 @@ clutter_virtual_input_device_evdev_notify_keyval (ClutterVirtualInputDevice *vir
} }
key_count = update_button_count (virtual_evdev, evcode, key_state); key_count = update_button_count (virtual_evdev, evcode, key_state);
if (key_count < 0 || key_count > 1) if (key_count > 1)
{ {
g_warning ("Received multiple virtual 0x%x key %s (ignoring)", keycode, g_warning ("Received multiple virtual 0x%x key presses (ignoring)",
key_state == CLUTTER_KEY_STATE_PRESSED ? "presses" : "releases"); keycode);
update_button_count (virtual_evdev, evcode, 1 - key_state);
return; return;
} }

View File

@@ -3,8 +3,8 @@ exec_prefix=@exec_prefix@
libdir=@libdir@/mutter libdir=@libdir@/mutter
includedir=@includedir@/mutter includedir=@includedir@/mutter
apiversion=@LIBMUTTER_API_VERSION@ apiversion=@CLUTTER_API_VERSION@
requires=@CLUTTER_REQUIRES@ mutter-cogl-@LIBMUTTER_API_VERSION@ requires=@CLUTTER_REQUIRES@ mutter-cogl-1.0
requires_private=@CLUTTER_REQUIRES_PRIVATE@ requires_private=@CLUTTER_REQUIRES_PRIVATE@
backends=@CLUTTER_BACKENDS@ backends=@CLUTTER_BACKENDS@
@@ -17,7 +17,7 @@ cogl_driver=deprecated
Name: Mutter Clutter Name: Mutter Clutter
Description: Mutter's Clutter Private Library Description: Mutter's Clutter Private Library
Version: @MUTTER_VERSION@ Version: @VERSION@
Libs: -L${libdir} -lmutter-clutter-${apiversion} Libs: -L${libdir} -lmutter-clutter-${apiversion}
Cflags: -I${includedir}/clutter-${apiversion} Cflags: -I${includedir}/clutter-${apiversion}
Requires: ${requires} Requires: ${requires}

View File

@@ -29,8 +29,6 @@
#include "clutter-backend-x11.h" #include "clutter-backend-x11.h"
#include "clutter-input-device-xi2.h" #include "clutter-input-device-xi2.h"
#include "clutter-input-device-tool-xi2.h"
#include "clutter-virtual-input-device-x11.h"
#include "clutter-stage-x11.h" #include "clutter-stage-x11.h"
#include "clutter-backend.h" #include "clutter-backend.h"
@@ -396,8 +394,6 @@ create_device (ClutterDeviceManagerXI2 *manager_xi2,
source = CLUTTER_ERASER_DEVICE; source = CLUTTER_ERASER_DEVICE;
else if (strstr (name, "cursor") != NULL) else if (strstr (name, "cursor") != NULL)
source = CLUTTER_CURSOR_DEVICE; source = CLUTTER_CURSOR_DEVICE;
else if (strstr (name, " pad") != NULL)
source = CLUTTER_PAD_DEVICE;
else if (strstr (name, "wacom") != NULL || strstr (name, "pen") != NULL) else if (strstr (name, "wacom") != NULL || strstr (name, "pen") != NULL)
source = CLUTTER_PEN_DEVICE; source = CLUTTER_PEN_DEVICE;
else if (strstr (name, "touchpad") != NULL) else if (strstr (name, "touchpad") != NULL)
@@ -464,46 +460,6 @@ create_device (ClutterDeviceManagerXI2 *manager_xi2,
return retval; return retval;
} }
static void
pad_passive_button_grab (ClutterInputDevice *device)
{
XIGrabModifiers xi_grab_mods = { XIAnyModifier, };
XIEventMask xi_event_mask;
gint device_id, rc;
device_id = clutter_input_device_get_device_id (device);
xi_event_mask.deviceid = device_id;
xi_event_mask.mask_len = XIMaskLen (XI_LASTEVENT);
xi_event_mask.mask = g_new0 (unsigned char, xi_event_mask.mask_len);
XISetMask (xi_event_mask.mask, XI_Motion);
XISetMask (xi_event_mask.mask, XI_ButtonPress);
XISetMask (xi_event_mask.mask, XI_ButtonRelease);
clutter_x11_trap_x_errors ();
rc = XIGrabButton (clutter_x11_get_default_display (),
device_id, XIAnyButton,
clutter_x11_get_root_window (), None,
XIGrabModeSync, XIGrabModeSync,
True, &xi_event_mask, 1, &xi_grab_mods);
if (rc != 0)
{
g_warning ("Could not passively grab pad device: %s",
clutter_input_device_get_device_name (device));
}
else
{
XIAllowEvents (clutter_x11_get_default_display (),
device_id, XIAsyncDevice,
CLUTTER_CURRENT_TIME);
}
clutter_x11_untrap_x_errors ();
g_free (xi_event_mask.mask);
}
static ClutterInputDevice * static ClutterInputDevice *
add_device (ClutterDeviceManagerXI2 *manager_xi2, add_device (ClutterDeviceManagerXI2 *manager_xi2,
ClutterBackendX11 *backend_x11, ClutterBackendX11 *backend_x11,
@@ -538,9 +494,6 @@ add_device (ClutterDeviceManagerXI2 *manager_xi2,
g_warning ("Unhandled device: %s", g_warning ("Unhandled device: %s",
clutter_input_device_get_device_name (device)); clutter_input_device_get_device_name (device));
if (clutter_input_device_get_device_type (device) == CLUTTER_PAD_DEVICE)
pad_passive_button_grab (device);
/* relationships between devices and signal emissions are not /* relationships between devices and signal emissions are not
* necessary while we're constructing the device manager instance * necessary while we're constructing the device manager instance
*/ */
@@ -953,78 +906,6 @@ clutter_device_manager_xi2_select_stage_events (ClutterDeviceManager *manager,
g_free (mask); g_free (mask);
} }
static guint
device_get_tool_serial (ClutterBackendX11 *backend_x11,
ClutterInputDevice *device)
{
gulong nitems, bytes_after;
guint32 *data = NULL;
guint serial_id = 0;
int rc, format;
Atom type;
Atom prop;
prop = XInternAtom (backend_x11->xdpy, "Wacom Serial IDs", True);
if (prop == None)
return 0;
clutter_x11_trap_x_errors ();
rc = XIGetProperty (backend_x11->xdpy,
clutter_input_device_get_device_id (device),
prop, 0, 4, FALSE, XA_INTEGER, &type, &format, &nitems, &bytes_after,
(guchar **) &data);
clutter_x11_untrap_x_errors ();
if (rc == Success && type == XA_INTEGER && format == 32 && nitems >= 4)
serial_id = data[3];
XFree (data);
return serial_id;
}
static void
handle_property_event (ClutterDeviceManagerXI2 *manager_xi2,
XIEvent *event)
{
XIPropertyEvent *xev = (XIPropertyEvent *) event;
ClutterBackendX11 *backend_x11 = CLUTTER_BACKEND_X11 (clutter_get_default_backend ());
Atom serial_ids_prop = XInternAtom (backend_x11->xdpy, "Wacom Serial IDs", True);
ClutterInputDevice *device;
device = g_hash_table_lookup (manager_xi2->devices_by_id,
GINT_TO_POINTER (xev->deviceid));
if (!device)
return;
if (xev->property == serial_ids_prop)
{
ClutterInputDeviceTool *tool = NULL;
ClutterInputDeviceToolType type;
guint serial_id;
serial_id = device_get_tool_serial (backend_x11, device);
if (serial_id != 0)
{
tool = g_hash_table_lookup (manager_xi2->tools_by_serial,
GUINT_TO_POINTER (serial_id));
if (!tool)
{
type = clutter_input_device_get_device_type (device) == CLUTTER_ERASER_DEVICE ?
CLUTTER_INPUT_DEVICE_TOOL_ERASER : CLUTTER_INPUT_DEVICE_TOOL_PEN;
tool = clutter_input_device_tool_xi2_new (serial_id, type);
g_hash_table_insert (manager_xi2->tools_by_serial,
GUINT_TO_POINTER (serial_id),
tool);
}
}
clutter_input_device_xi2_update_tool (device, tool);
g_signal_emit_by_name (manager_xi2, "tool-changed", device, tool);
}
}
static ClutterTranslateReturn static ClutterTranslateReturn
clutter_device_manager_xi2_translate_event (ClutterEventTranslator *translator, clutter_device_manager_xi2_translate_event (ClutterEventTranslator *translator,
gpointer native, gpointer native,
@@ -1056,8 +937,7 @@ clutter_device_manager_xi2_translate_event (ClutterEventTranslator *translator,
return CLUTTER_TRANSLATE_REMOVE; return CLUTTER_TRANSLATE_REMOVE;
if (!(xi_event->evtype == XI_HierarchyChanged || if (!(xi_event->evtype == XI_HierarchyChanged ||
xi_event->evtype == XI_DeviceChanged || xi_event->evtype == XI_DeviceChanged))
xi_event->evtype == XI_PropertyEvent))
{ {
stage = get_event_stage (translator, xi_event); stage = get_event_stage (translator, xi_event);
if (stage == NULL || CLUTTER_ACTOR_IN_DESTRUCTION (stage)) if (stage == NULL || CLUTTER_ACTOR_IN_DESTRUCTION (stage))
@@ -1198,50 +1078,6 @@ clutter_device_manager_xi2_translate_event (ClutterEventTranslator *translator,
stage != NULL) stage != NULL)
_clutter_input_device_set_stage (device, stage); _clutter_input_device_set_stage (device, stage);
if (clutter_input_device_get_device_type (source_device) == CLUTTER_PAD_DEVICE)
{
/* We got these events because of the passive button grab */
XIAllowEvents (clutter_x11_get_default_display (),
xev->sourceid,
XIAsyncDevice,
xev->time);
/* Ignore 4-7 buttons */
if (xev->detail >= 4 && xev->detail <= 7)
return CLUTTER_TRANSLATE_REMOVE;
event->pad_button.type =
(xi_event->evtype == XI_ButtonPress) ? CLUTTER_PAD_BUTTON_PRESS
: CLUTTER_PAD_BUTTON_RELEASE;
event->pad_button.time = xev->time;
event->pad_button.stage = stage;
/* The 4-7 button range is taken as non-existent on pad devices,
* let the buttons above that take over this range.
*/
if (xev->detail > 7)
xev->detail -= 4;
/* Pad buttons are 0-indexed */
event->pad_button.button = xev->detail - 1;
clutter_event_set_source_device (event, source_device);
CLUTTER_NOTE (EVENT,
"%s: win:0x%x, device:%d '%s', time:%d "
"(button:%d)",
event->any.type == CLUTTER_BUTTON_PRESS
? "pad button press "
: "pad button release",
(unsigned int) stage_x11->xwin,
device->id,
device->device_name,
event->any.time,
event->pad_button.button);
retval = CLUTTER_TRANSLATE_QUEUE;
break;
}
switch (xev->detail) switch (xev->detail)
{ {
case 4: case 4:
@@ -1321,8 +1157,6 @@ clutter_device_manager_xi2_translate_event (ClutterEventTranslator *translator,
clutter_event_set_source_device (event, source_device); clutter_event_set_source_device (event, source_device);
clutter_event_set_device (event, device); clutter_event_set_device (event, device);
clutter_event_set_device_tool (event,
clutter_input_device_xi2_get_current_tool (source_device));
event->button.axes = translate_axes (event->button.device, event->button.axes = translate_axes (event->button.device,
event->button.x, event->button.x,
@@ -1431,8 +1265,6 @@ clutter_device_manager_xi2_translate_event (ClutterEventTranslator *translator,
clutter_event_set_source_device (event, source_device); clutter_event_set_source_device (event, source_device);
clutter_event_set_device (event, device); clutter_event_set_device (event, device);
clutter_event_set_device_tool (event,
clutter_input_device_xi2_get_current_tool (source_device));
event->motion.axes = translate_axes (event->motion.device, event->motion.axes = translate_axes (event->motion.device,
event->motion.x, event->motion.x,
@@ -1634,10 +1466,6 @@ clutter_device_manager_xi2_translate_event (ClutterEventTranslator *translator,
case XI_FocusOut: case XI_FocusOut:
retval = CLUTTER_TRANSLATE_CONTINUE; retval = CLUTTER_TRANSLATE_CONTINUE;
break; break;
case XI_PropertyEvent:
handle_property_event (manager_xi2, xi_event);
retval = CLUTTER_TRANSLATE_CONTINUE;
break;
} }
return retval; return retval;
@@ -1815,7 +1643,6 @@ clutter_device_manager_xi2_constructed (GObject *gobject)
XISetMask (mask, XI_HierarchyChanged); XISetMask (mask, XI_HierarchyChanged);
XISetMask (mask, XI_DeviceChanged); XISetMask (mask, XI_DeviceChanged);
XISetMask (mask, XI_PropertyEvent);
event_mask.deviceid = XIAllDevices; event_mask.deviceid = XIAllDevices;
event_mask.mask_len = sizeof (mask); event_mask.mask_len = sizeof (mask);
@@ -1851,16 +1678,6 @@ clutter_device_manager_xi2_set_property (GObject *gobject,
} }
} }
static ClutterVirtualInputDevice *
clutter_device_manager_xi2_create_virtual_device (ClutterDeviceManager *manager,
ClutterInputDeviceType device_type)
{
return g_object_new (CLUTTER_TYPE_VIRTUAL_INPUT_DEVICE_X11,
"device-manager", manager,
"device-type", device_type,
NULL);
}
static void static void
clutter_device_manager_xi2_class_init (ClutterDeviceManagerXI2Class *klass) clutter_device_manager_xi2_class_init (ClutterDeviceManagerXI2Class *klass)
{ {
@@ -1888,7 +1705,6 @@ clutter_device_manager_xi2_class_init (ClutterDeviceManagerXI2Class *klass)
manager_class->get_core_device = clutter_device_manager_xi2_get_core_device; manager_class->get_core_device = clutter_device_manager_xi2_get_core_device;
manager_class->get_device = clutter_device_manager_xi2_get_device; manager_class->get_device = clutter_device_manager_xi2_get_device;
manager_class->select_stage_events = clutter_device_manager_xi2_select_stage_events; manager_class->select_stage_events = clutter_device_manager_xi2_select_stage_events;
manager_class->create_virtual_device = clutter_device_manager_xi2_create_virtual_device;
} }
static void static void
@@ -1897,6 +1713,4 @@ clutter_device_manager_xi2_init (ClutterDeviceManagerXI2 *self)
self->devices_by_id = g_hash_table_new_full (NULL, NULL, self->devices_by_id = g_hash_table_new_full (NULL, NULL,
NULL, NULL,
(GDestroyNotify) g_object_unref); (GDestroyNotify) g_object_unref);
self->tools_by_serial = g_hash_table_new_full (NULL, NULL, NULL,
(GDestroyNotify) g_object_unref);
} }

View File

@@ -43,7 +43,6 @@ struct _ClutterDeviceManagerXI2
ClutterDeviceManager parent_instance; ClutterDeviceManager parent_instance;
GHashTable *devices_by_id; GHashTable *devices_by_id;
GHashTable *tools_by_serial;
GSList *all_devices; GSList *all_devices;

View File

@@ -1,51 +0,0 @@
/*
* Clutter.
*
* An OpenGL based 'interactive canvas' library.
*
* Copyright © 2016 Red Hat
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
* Author: Carlos Garnacho <carlosg@gnome.org>
*/
#ifdef HAVE_CONFIG_H
#include "clutter-build-config.h"
#endif
#include "clutter-input-device-tool-xi2.h"
G_DEFINE_TYPE (ClutterInputDeviceToolXI2, clutter_input_device_tool_xi2,
CLUTTER_TYPE_INPUT_DEVICE_TOOL)
static void
clutter_input_device_tool_xi2_class_init (ClutterInputDeviceToolXI2Class *klass)
{
}
static void
clutter_input_device_tool_xi2_init (ClutterInputDeviceToolXI2 *tool)
{
}
ClutterInputDeviceTool *
clutter_input_device_tool_xi2_new (guint serial,
ClutterInputDeviceToolType type)
{
return g_object_new (CLUTTER_TYPE_INPUT_DEVICE_TOOL_XI2,
"type", type,
"serial", serial,
NULL);
}

View File

@@ -1,74 +0,0 @@
/*
* Clutter.
*
* An OpenGL based 'interactive canvas' library.
*
* Copyright © 2016 Red Hat
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
* Author: Carlos Garnacho <carlosg@gnome.org>
*/
#ifndef __CLUTTER_INPUT_DEVICE_XI2_TOOL_H__
#define __CLUTTER_INPUT_DEVICE_XI2_TOOL_H__
#include <clutter/clutter-input-device-tool.h>
G_BEGIN_DECLS
#define CLUTTER_TYPE_INPUT_DEVICE_TOOL_XI2 (clutter_input_device_tool_xi2_get_type ())
#define CLUTTER_INPUT_DEVICE_TOOL_XI2(o) \
(G_TYPE_CHECK_INSTANCE_CAST ((o), \
CLUTTER_TYPE_INPUT_DEVICE_TOOL_XI2, ClutterInputDeviceToolXI2))
#define CLUTTER_IS_INPUT_DEVICE_TOOL_XI2(o) \
(G_TYPE_CHECK_INSTANCE_TYPE ((o), \
CLUTTER_TYPE_INPUT_DEVICE_TOOL_XI2))
#define CLUTTER_INPUT_DEVICE_TOOL_XI2_CLASS(c) \
(G_TYPE_CHECK_CLASS_CAST ((c), \
CLUTTER_TYPE_INPUT_DEVICE_TOOL_XI2, ClutterInputDeviceToolXI2Class))
#define CLUTTER_IS_INPUT_DEVICE_TOOL_XI2_CLASS(c) \
(G_TYPE_CHECK_CLASS_TYPE ((c), \
CLUTTER_TYPE_INPUT_DEVICE_TOOL_XI2))
#define CLUTTER_INPUT_DEVICE_TOOL_XI2_GET_CLASS(o) \
(G_TYPE_INSTANCE_GET_CLASS ((o), \
CLUTTER_TYPE_INPUT_DEVICE_TOOL_XI2, ClutterInputDeviceToolXI2Class))
typedef struct _ClutterInputDeviceToolXI2 ClutterInputDeviceToolXI2;
typedef struct _ClutterInputDeviceToolXI2Class ClutterInputDeviceToolXI2Class;
struct _ClutterInputDeviceToolXI2
{
ClutterInputDeviceTool parent_instance;
struct libinput_tablet_tool *tool;
};
struct _ClutterInputDeviceToolXI2Class
{
ClutterInputDeviceToolClass parent_class;
};
GType clutter_input_device_tool_xi2_get_type (void) G_GNUC_CONST;
ClutterInputDeviceTool * clutter_input_device_tool_xi2_new (guint serial,
ClutterInputDeviceToolType type);
G_END_DECLS
#endif /* __CLUTTER_INPUT_DEVICE_XI2_TOOL_H__ */

View File

@@ -44,7 +44,6 @@ struct _ClutterInputDeviceXI2
ClutterInputDevice device; ClutterInputDevice device;
gint device_id; gint device_id;
ClutterInputDeviceTool *current_tool;
}; };
#define N_BUTTONS 5 #define N_BUTTONS 5
@@ -80,13 +79,6 @@ clutter_input_device_xi2_keycode_to_evdev (ClutterInputDevice *device,
return TRUE; return TRUE;
} }
static gboolean
clutter_input_device_xi2_is_grouped (ClutterInputDevice *device,
ClutterInputDevice *other_device)
{
return FALSE;
}
static void static void
clutter_input_device_xi2_class_init (ClutterInputDeviceXI2Class *klass) clutter_input_device_xi2_class_init (ClutterInputDeviceXI2Class *klass)
{ {
@@ -96,7 +88,6 @@ clutter_input_device_xi2_class_init (ClutterInputDeviceXI2Class *klass)
gobject_class->constructed = clutter_input_device_xi2_constructed; gobject_class->constructed = clutter_input_device_xi2_constructed;
device_class->keycode_to_evdev = clutter_input_device_xi2_keycode_to_evdev; device_class->keycode_to_evdev = clutter_input_device_xi2_keycode_to_evdev;
device_class->is_grouped = clutter_input_device_xi2_is_grouped;
} }
static void static void
@@ -181,18 +172,3 @@ _clutter_input_device_xi2_translate_state (ClutterEvent *event,
_clutter_event_set_state_full (event, button, base, latched, locked, effective); _clutter_event_set_state_full (event, button, base, latched, locked, effective);
} }
void
clutter_input_device_xi2_update_tool (ClutterInputDevice *device,
ClutterInputDeviceTool *tool)
{
ClutterInputDeviceXI2 *device_xi2 = CLUTTER_INPUT_DEVICE_XI2 (device);
g_set_object (&device_xi2->current_tool, tool);
}
ClutterInputDeviceTool *
clutter_input_device_xi2_get_current_tool (ClutterInputDevice *device)
{
ClutterInputDeviceXI2 *device_xi2 = CLUTTER_INPUT_DEVICE_XI2 (device);
return device_xi2->current_tool;
}

View File

@@ -41,9 +41,6 @@ void _clutter_input_device_xi2_translate_state (ClutterEvent *event,
XIModifierState *modifiers_state, XIModifierState *modifiers_state,
XIButtonState *buttons_state, XIButtonState *buttons_state,
XIGroupState *group_state); XIGroupState *group_state);
void clutter_input_device_xi2_update_tool (ClutterInputDevice *device,
ClutterInputDeviceTool *tool);
ClutterInputDeviceTool * clutter_input_device_xi2_get_current_tool (ClutterInputDevice *device);
G_END_DECLS G_END_DECLS

View File

@@ -27,9 +27,6 @@
#include <glib-object.h> #include <glib-object.h>
#include "clutter-x11.h"
#include "X11/extensions/XTest.h"
#include "clutter-virtual-input-device.h" #include "clutter-virtual-input-device.h"
#include "x11/clutter-virtual-input-device-x11.h" #include "x11/clutter-virtual-input-device-x11.h"
@@ -64,8 +61,6 @@ clutter_virtual_input_device_x11_notify_button (ClutterVirtualInputDevice *virtu
uint32_t button, uint32_t button,
ClutterButtonState button_state) ClutterButtonState button_state)
{ {
XTestFakeButtonEvent (clutter_x11_get_default_display (),
button, button_state == CLUTTER_BUTTON_STATE_PRESSED, 0);
} }
static void static void
@@ -74,21 +69,6 @@ clutter_virtual_input_device_x11_notify_key (ClutterVirtualInputDevice *virtual_
uint32_t key, uint32_t key,
ClutterKeyState key_state) ClutterKeyState key_state)
{ {
XTestFakeKeyEvent (clutter_x11_get_default_display (),
key, key_state == CLUTTER_KEY_STATE_PRESSED, 0);
}
static void
clutter_virtual_input_device_x11_notify_keyval (ClutterVirtualInputDevice *virtual_device,
uint64_t time_us,
uint32_t keyval,
ClutterKeyState key_state)
{
KeyCode keycode;
keycode = XKeysymToKeycode (clutter_x11_get_default_display (), keyval);
XTestFakeKeyEvent (clutter_x11_get_default_display (),
keycode, key_state == CLUTTER_KEY_STATE_PRESSED, 0);
} }
static void static void
@@ -106,5 +86,4 @@ clutter_virtual_input_device_x11_class_init (ClutterVirtualInputDeviceX11Class *
virtual_input_device_class->notify_absolute_motion = clutter_virtual_input_device_x11_notify_absolute_motion; virtual_input_device_class->notify_absolute_motion = clutter_virtual_input_device_x11_notify_absolute_motion;
virtual_input_device_class->notify_button = clutter_virtual_input_device_x11_notify_button; virtual_input_device_class->notify_button = clutter_virtual_input_device_x11_notify_button;
virtual_input_device_class->notify_key = clutter_virtual_input_device_x11_notify_key; virtual_input_device_class->notify_key = clutter_virtual_input_device_x11_notify_key;
virtual_input_device_class->notify_keyval = clutter_virtual_input_device_x11_notify_keyval;
} }

View File

@@ -42,6 +42,9 @@ m4_define([clutter_release_status],
m4_define([clutter_version], [clutter_major_version.clutter_minor_version.clutter_micro_version]) m4_define([clutter_version], [clutter_major_version.clutter_minor_version.clutter_micro_version])
# change this only when breaking the API
m4_define([clutter_api_version], [1.0])
AC_PREREQ([2.63]) AC_PREREQ([2.63])
AC_INIT([clutter], AC_INIT([clutter],
@@ -58,18 +61,12 @@ AC_CONFIG_MACRO_DIR([build/autotools])
AM_INIT_AUTOMAKE([1.11 foreign -Wno-portability no-define no-dist-gzip dist-xz tar-ustar]) AM_INIT_AUTOMAKE([1.11 foreign -Wno-portability no-define no-dist-gzip dist-xz tar-ustar])
AM_SILENT_RULES([yes]) AM_SILENT_RULES([yes])
dnl = Check that we are configured by mutter ==============================
AC_ARG_VAR([MUTTER_VERSION])
AC_ARG_VAR([LIBMUTTER_API_VERSION])
AS_IF([test "x$MUTTER_VERSION" = "x"],
[AC_MSG_ERROR([Clutter can only be configured by mutter])],)
AC_SUBST([CLUTTER_MAJOR_VERSION], [clutter_major_version]) AC_SUBST([CLUTTER_MAJOR_VERSION], [clutter_major_version])
AC_SUBST([CLUTTER_MINOR_VERSION], [clutter_minor_version]) AC_SUBST([CLUTTER_MINOR_VERSION], [clutter_minor_version])
AC_SUBST([CLUTTER_MICRO_VERSION], [clutter_micro_version]) AC_SUBST([CLUTTER_MICRO_VERSION], [clutter_micro_version])
AC_SUBST([CLUTTER_VERSION], [clutter_version]) AC_SUBST([CLUTTER_VERSION], [clutter_version])
AC_SUBST([CLUTTER_API_VERSION], [clutter_api_version])
AC_SUBST([CLUTTER_API_VERSION_AM], [$CLUTTER_MAJOR_VERSION\_0])
AC_SUBST([CLUTTER_RELEASE_STATUS], [clutter_release_status]) AC_SUBST([CLUTTER_RELEASE_STATUS], [clutter_release_status])
m4_define([lt_current], [m4_eval(100 * clutter_minor_version + clutter_micro_version - clutter_interface_age)]) m4_define([lt_current], [m4_eval(100 * clutter_minor_version + clutter_micro_version - clutter_interface_age)])
@@ -119,7 +116,7 @@ m4_define([pango_req_version], [1.30])
m4_define([gi_req_version], [1.39.0]) m4_define([gi_req_version], [1.39.0])
m4_define([xcomposite_req_version], [0.4]) m4_define([xcomposite_req_version], [0.4])
m4_define([gdk_req_version], [3.3.18]) m4_define([gdk_req_version], [3.3.18])
m4_define([libinput_req_version], [1.4.0]) m4_define([libinput_req_version], [0.19.0])
m4_define([libudev_req_version], [136]) m4_define([libudev_req_version], [136])
AC_SUBST([GLIB_REQ_VERSION], [glib_req_version]) AC_SUBST([GLIB_REQ_VERSION], [glib_req_version])
@@ -385,22 +382,6 @@ AS_IF([test "x$SUPPORT_X11" = "x1"],
[AC_MSG_ERROR([not found])] [AC_MSG_ERROR([not found])]
) )
# XTEST (required)
AC_MSG_CHECKING([for XTest extension])
PKG_CHECK_EXISTS([xtst], [have_xtest=yes], [have_xtest=no])
AS_IF([test "x$have_xtest" = "xyes"],
[
AC_DEFINE(HAVE_XTEST, [1], [Define to 1 if we have the XTest X extension])
X11_LIBS="$X11_LIBS -lXtst"
X11_PC_FILES="$X11_PC_FILES xtst"
X11_EXTS="$X11_EXTS xtst"
AC_MSG_RESULT([found])
],
[AC_MSG_ERROR([Not found])]
)
# X Generic Extensions (optional) # X Generic Extensions (optional)
clutter_save_CPPFLAGS="$CPPFLAGS" clutter_save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $X11_CFLAGS" CPPFLAGS="$CPPFLAGS $X11_CFLAGS"
@@ -784,7 +765,7 @@ AC_CONFIG_FILES([
clutter/Makefile clutter/Makefile
clutter/clutter-config.h clutter/clutter-config.h
clutter/clutter-version.h clutter/clutter-version.h
clutter/mutter-clutter-$LIBMUTTER_API_VERSION.pc:clutter/mutter-clutter.pc.in clutter/mutter-clutter-$CLUTTER_API_VERSION.pc:clutter/mutter-clutter.pc.in
tests/Makefile tests/Makefile
tests/accessibility/Makefile tests/accessibility/Makefile

View File

@@ -21,7 +21,7 @@ all_examples += \
image-content image-content
endif endif
LDADD = $(top_builddir)/clutter/libmutter-clutter-@LIBMUTTER_API_VERSION@.la $(CLUTTER_LIBS) $(GDK_PIXBUF_LIBS) $(LIBM) LDADD = $(top_builddir)/clutter/libmutter-clutter-@CLUTTER_API_VERSION@.la $(CLUTTER_LIBS) $(GDK_PIXBUF_LIBS) $(LIBM)
AM_CFLAGS = $(CLUTTER_CFLAGS) $(GDK_PIXBUF_CFLAGS) $(MAINTAINER_CFLAGS) AM_CFLAGS = $(CLUTTER_CFLAGS) $(GDK_PIXBUF_CFLAGS) $(MAINTAINER_CFLAGS)
AM_CPPFLAGS = \ AM_CPPFLAGS = \
-DG_DISABLE_SINGLE_INCLUDES \ -DG_DISABLE_SINGLE_INCLUDES \

View File

@@ -1,5 +1,5 @@
common_ldadd = \ common_ldadd = \
$(top_builddir)/clutter/libmutter-clutter-@LIBMUTTER_API_VERSION@.la $(top_builddir)/clutter/libmutter-clutter-@CLUTTER_API_VERSION@.la
common_sources = \ common_sources = \
cally-examples-util.c \ cally-examples-util.c \
@@ -11,7 +11,6 @@ AM_CPPFLAGS = \
-DGLIB_DISABLE_DEPRECATION_WARNINGS \ -DGLIB_DISABLE_DEPRECATION_WARNINGS \
-I$(top_srcdir)/../cogl \ -I$(top_srcdir)/../cogl \
-I$(top_builddir)/../cogl \ -I$(top_builddir)/../cogl \
-I$(top_builddir)/../cogl/cogl \
-I$(top_srcdir) \ -I$(top_srcdir) \
-I$(top_builddir) \ -I$(top_builddir) \
-I$(top_srcdir)/clutter \ -I$(top_srcdir)/clutter \

View File

@@ -3,13 +3,12 @@ installed_testdir = $(libexecdir)/installed-tests/mutter-clutter
include $(top_srcdir)/build/autotools/glib-tap.mk include $(top_srcdir)/build/autotools/glib-tap.mk
AM_CFLAGS = -g $(CLUTTER_CFLAGS) $(MAINTAINER_CFLAGS) AM_CFLAGS = -g $(CLUTTER_CFLAGS) $(MAINTAINER_CFLAGS)
LDADD = $(top_builddir)/../cogl/cogl/libmutter-cogl-@LIBMUTTER_API_VERSION@.la $(top_builddir)/clutter/libmutter-clutter-@LIBMUTTER_API_VERSION@.la $(CLUTTER_LIBS) $(LIBM) LDADD = $(top_builddir)/../cogl/cogl/libmutter-cogl.la $(top_builddir)/clutter/libmutter-clutter-1.0.la $(CLUTTER_LIBS) $(LIBM)
AM_LDFLAGS = -export-dynamic AM_LDFLAGS = -export-dynamic
AM_CPPFLAGS = \ AM_CPPFLAGS = \
-DG_LOG_DOMAIN=\"Clutter-Conform\" \ -DG_LOG_DOMAIN=\"Clutter-Conform\" \
-I$(top_srcdir)/../cogl \ -I$(top_srcdir)/../cogl \
-I$(top_builddir)/../cogl \ -I$(top_builddir)/../cogl \
-I$(top_builddir)/../cogl/cogl \
-I$(top_srcdir) \ -I$(top_srcdir) \
-I$(top_builddir) \ -I$(top_builddir) \
-DCOGL_DISABLE_DEPRECATION_WARNINGS \ -DCOGL_DISABLE_DEPRECATION_WARNINGS \
@@ -79,7 +78,7 @@ script_tests = \
test-script-timeline-markers.json \ test-script-timeline-markers.json \
test-state-1.json test-state-1.json
TESTS_ENVIRONMENT += G_ENABLE_DIAGNOSTIC=0 CLUTTER_ENABLE_DIAGNOSTIC=0 CLUTTER_SCALE=1 TESTS_ENVIRONMENT += G_ENABLE_DIAGNOSTIC=0 CLUTTER_ENABLE_DIAGNOSTIC=0
# simple rules for generating a Git ignore file for the conformance test suite # simple rules for generating a Git ignore file for the conformance test suite
$(srcdir)/.gitignore: Makefile $(srcdir)/.gitignore: Makefile

View File

@@ -109,9 +109,7 @@ clean-wrappers:
.PHONY: wrappers clean-wrappers .PHONY: wrappers clean-wrappers
common_ldadd = \ common_ldadd = $(top_builddir)/clutter/libmutter-clutter-@CLUTTER_API_VERSION@.la
$(top_builddir)/clutter/libmutter-clutter-@LIBMUTTER_API_VERSION@.la \
$(top_builddir)/../cogl/cogl/libmutter-cogl-@LIBMUTTER_API_VERSION@.la
check_PROGRAMS = test-interactive check_PROGRAMS = test-interactive
check_SCRIPTS = wrappers check_SCRIPTS = wrappers
@@ -127,7 +125,6 @@ test_interactive_CPPFLAGS = \
-DCLUTTER_DISABLE_DEPRECATION_WARNINGS \ -DCLUTTER_DISABLE_DEPRECATION_WARNINGS \
-I$(top_srcdir)/../cogl \ -I$(top_srcdir)/../cogl \
-I$(top_builddir)/../cogl \ -I$(top_builddir)/../cogl \
-I$(top_builddir)/../cogl/cogl \
-I$(top_srcdir) \ -I$(top_srcdir) \
-I$(top_builddir) \ -I$(top_builddir) \
-I$(top_srcdir)/clutter \ -I$(top_srcdir)/clutter \

View File

@@ -1,7 +1,4 @@
common_ldadd = \ common_ldadd = $(top_builddir)/clutter/libmutter-clutter-@CLUTTER_API_VERSION@.la
$(top_builddir)/clutter/libmutter-clutter-@LIBMUTTER_API_VERSION@.la \
$(top_builddir)/../cogl/cogl/libmutter-cogl-@LIBMUTTER_API_VERSION@.la
check_PROGRAMS = \ check_PROGRAMS = \
test-text \ test-text \
@@ -20,7 +17,6 @@ AM_CPPFLAGS = \
-DTESTS_DATA_DIR=\""$(top_srcdir)/tests/data/"\" \ -DTESTS_DATA_DIR=\""$(top_srcdir)/tests/data/"\" \
-I$(top_srcdir)/../cogl \ -I$(top_srcdir)/../cogl \
-I$(top_builddir)/../cogl \ -I$(top_builddir)/../cogl \
-I$(top_builddir)/../cogl/cogl \
-I$(top_srcdir) \ -I$(top_srcdir) \
-I$(top_builddir) \ -I$(top_builddir) \
-I$(top_srcdir)/clutter \ -I$(top_srcdir)/clutter \

View File

@@ -7,7 +7,7 @@ check_PROGRAMS = \
test-state-mini \ test-state-mini \
test-state-pick test-state-pick
common_ldadd = $(top_builddir)/clutter/libmutter-clutter-@LIBMUTTER_API_VERSION@.la common_ldadd = $(top_builddir)/clutter/libmutter-clutter-@CLUTTER_API_VERSION@.la
LDADD = $(common_ldadd) $(CLUTTER_LIBS) $(LIBM) LDADD = $(common_ldadd) $(CLUTTER_LIBS) $(LIBM)
@@ -21,7 +21,6 @@ AM_CPPFLAGS = \
-DTESTS_DATA_DIR=\""$(top_srcdir)/tests/data/"\" \ -DTESTS_DATA_DIR=\""$(top_srcdir)/tests/data/"\" \
-I$(top_srcdir)/../cogl \ -I$(top_srcdir)/../cogl \
-I$(top_builddir)/../cogl \ -I$(top_builddir)/../cogl \
-I$(top_builddir)/../cogl/cogl \
-I$(top_srcdir) \ -I$(top_srcdir) \
-I$(top_builddir) \ -I$(top_builddir) \
-I$(top_srcdir)/clutter \ -I$(top_srcdir)/clutter \

View File

@@ -2,10 +2,8 @@
NULL = NULL =
DISTCLEANFILES =
mutterlibdir = $(libdir)/mutter mutterlibdir = $(libdir)/mutter
mutterlib_LTLIBRARIES = libmutter-cogl-gles2-@LIBMUTTER_API_VERSION@.la mutterlib_LTLIBRARIES = libmutter-cogl-gles2.la
AM_CPPFLAGS = \ AM_CPPFLAGS = \
-I$(top_srcdir) \ -I$(top_srcdir) \
@@ -13,8 +11,8 @@ AM_CPPFLAGS = \
AM_CFLAGS = $(COGL_DEP_CFLAGS) $(COGL_EXTRA_CFLAGS) $(MAINTAINER_CFLAGS) AM_CFLAGS = $(COGL_DEP_CFLAGS) $(COGL_EXTRA_CFLAGS) $(MAINTAINER_CFLAGS)
libmutter_cogl_gles2_@LIBMUTTER_API_VERSION@_la_SOURCES = cogl-gles2-api.c libmutter_cogl_gles2_la_SOURCES = cogl-gles2-api.c
libmutter_cogl_gles2_@LIBMUTTER_API_VERSION@_la_LDFLAGS = \ libmutter_cogl_gles2_la_LDFLAGS = \
-no-undefined \ -no-undefined \
-rpath $(mutterlibdir) \ -rpath $(mutterlibdir) \
-avoid-version \ -avoid-version \
@@ -27,9 +25,7 @@ coglgles2include_HEADERS = \
GLES2/gl2ext.h \ GLES2/gl2ext.h \
GLES2/gl2platform.h GLES2/gl2platform.h
pc_files = mutter-cogl-gles2-$(LIBMUTTER_API_VERSION).pc pc_files = mutter-cogl-gles2-1.0.pc
pkgconfigdir = $(libdir)/pkgconfig pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = $(pc_files) pkgconfig_DATA = $(pc_files)
DISTCLEANFILES += $(pc_files)

View File

@@ -2,12 +2,12 @@ prefix=@prefix@
exec_prefix=@exec_prefix@ exec_prefix=@exec_prefix@
libdir=@libdir@/mutter libdir=@libdir@/mutter
includedir=@includedir@/mutter includedir=@includedir@/mutter
apiversion=@LIBMUTTER_API_VERSION@ apiversion=1.0
requires=@COGL_PKG_REQUIRES@ mutter-cogl-@LIBMUTTER_API_VERSION@ requires=@COGL_PKG_REQUIRES@ mutter-cogl-1.0
Name: Cogl Name: Cogl
Description: An object oriented GL/GLES Abstraction/Utility Layer Description: An object oriented GL/GLES Abstraction/Utility Layer
Version: @MUTTER_VERSION@ Version: @COGL_1_VERSION@
Libs: -L${libdir} -lmutter-cogl-gles2-@LIBMUTTER_API_VERSION@ Libs: -L${libdir} -lmutter-cogl-gles2
Cflags: -I${includedir}/cogl Cflags: -I${includedir}/cogl
Requires: ${requires} Requires: ${requires}

View File

@@ -23,13 +23,13 @@ source_h_priv = \
$(NULL) $(NULL)
mutterlibdir = $(libdir)/mutter mutterlibdir = $(libdir)/mutter
mutterlib_LTLIBRARIES = libmutter-cogl-pango-@LIBMUTTER_API_VERSION@.la mutterlib_LTLIBRARIES = libmutter-cogl-pango.la
libmutter_cogl_pango_@LIBMUTTER_API_VERSION@_la_SOURCES = $(source_c) $(source_h) $(source_h_priv) libmutter_cogl_pango_la_SOURCES = $(source_c) $(source_h) $(source_h_priv)
libmutter_cogl_pango_@LIBMUTTER_API_VERSION@_la_CFLAGS = $(COGL_DEP_CFLAGS) $(COGL_PANGO_DEP_CFLAGS) $(COGL_EXTRA_CFLAGS) $(MAINTAINER_CFLAGS) libmutter_cogl_pango_la_CFLAGS = $(COGL_DEP_CFLAGS) $(COGL_PANGO_DEP_CFLAGS) $(COGL_EXTRA_CFLAGS) $(MAINTAINER_CFLAGS)
libmutter_cogl_pango_@LIBMUTTER_API_VERSION@_la_LIBADD = $(top_builddir)/cogl/libmutter-cogl-$(LIBMUTTER_API_VERSION).la libmutter_cogl_pango_la_LIBADD = $(top_builddir)/cogl/libmutter-cogl.la
libmutter_cogl_pango_@LIBMUTTER_API_VERSION@_la_LIBADD += $(COGL_DEP_LIBS) $(COGL_PANGO_DEP_LIBS) $(COGL_EXTRA_LDFLAGS) libmutter_cogl_pango_la_LIBADD += $(COGL_DEP_LIBS) $(COGL_PANGO_DEP_LIBS) $(COGL_EXTRA_LDFLAGS)
libmutter_cogl_pango_@LIBMUTTER_API_VERSION@_la_LDFLAGS = \ libmutter_cogl_pango_la_LDFLAGS = \
-export-dynamic \ -export-dynamic \
-rpath $(mutterlibdir) \ -rpath $(mutterlibdir) \
-export-symbols-regex "^cogl_pango_.*" \ -export-symbols-regex "^cogl_pango_.*" \
@@ -49,7 +49,7 @@ cogl_base_includedir = $(includedir)/mutter
cogl_pangoheadersdir = $(cogl_base_includedir)/cogl/cogl-pango cogl_pangoheadersdir = $(cogl_base_includedir)/cogl/cogl-pango
cogl_pangoheaders_HEADERS = $(source_h) cogl_pangoheaders_HEADERS = $(source_h)
pc_files = mutter-cogl-pango-$(LIBMUTTER_API_VERSION).pc pc_files = mutter-cogl-pango-1.0.pc
pkgconfigdir = $(libdir)/pkgconfig pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = $(pc_files) pkgconfig_DATA = $(pc_files)
@@ -65,23 +65,23 @@ INTROSPECTION_GIRS =
if HAVE_INTROSPECTION if HAVE_INTROSPECTION
INTROSPECTION_COMPILER_ARGS=--includedir=$(top_builddir)/cogl INTROSPECTION_COMPILER_ARGS=--includedir=$(top_builddir)/cogl
CoglPango-@LIBMUTTER_API_VERSION@.gir: libmutter-cogl-pango-$(LIBMUTTER_API_VERSION).la Makefile CoglPango-1.0.gir: libmutter-cogl-pango.la Makefile
CoglPango_@LIBMUTTER_API_VERSION@_gir_NAMESPACE = CoglPango CoglPango_1_0_gir_NAMESPACE = CoglPango
CoglPango_@LIBMUTTER_API_VERSION@_gir_VERSION = @LIBMUTTER_API_VERSION@ CoglPango_1_0_gir_VERSION = 1.0
CoglPango_@LIBMUTTER_API_VERSION@_gir_LIBS = $(top_builddir)/cogl/libmutter-cogl-$(LIBMUTTER_API_VERSION).la libmutter-cogl-pango-$(LIBMUTTER_API_VERSION).la CoglPango_1_0_gir_LIBS = $(top_builddir)/cogl/libmutter-cogl.la libmutter-cogl-pango.la
CoglPango_@LIBMUTTER_API_VERSION@_gir_FILES = $(source_h) $(source_c) CoglPango_1_0_gir_FILES = $(source_h) $(source_c)
CoglPango_@LIBMUTTER_API_VERSION@_gir_CFLAGS = $(AM_CPPFLAGS) $(COGL_DEP_CFLAGS) $(COGL_PANGO_DEP_CFLAGS) CoglPango_1_0_gir_CFLAGS = $(AM_CPPFLAGS) $(COGL_DEP_CFLAGS) $(COGL_PANGO_DEP_CFLAGS)
CoglPango_@LIBMUTTER_API_VERSION@_gir_INCLUDES = Pango-1.0 PangoCairo-1.0 CoglPango_1_0_gir_INCLUDES = Pango-1.0 PangoCairo-1.0
CoglPango_@LIBMUTTER_API_VERSION@_gir_EXPORT_PACKAGES = mutter-cogl-pango-@LIBMUTTER_API_VERSION@ CoglPango_1_0_gir_EXPORT_PACKAGES = mutter-cogl-pango-1.0
CoglPango_@LIBMUTTER_API_VERSION@_gir_SCANNERFLAGS = \ CoglPango_1_0_gir_SCANNERFLAGS = \
--warn-all \ --warn-all \
--identifier-prefix=CoglPango \ --identifier-prefix=CoglPango \
--symbol-prefix=cogl_pango \ --symbol-prefix=cogl_pango \
--c-include='cogl-pango/cogl-pango.h' \ --c-include='cogl-pango/cogl-pango.h' \
--include-uninstalled=$(top_builddir)/cogl/Cogl-@LIBMUTTER_API_VERSION@.gir --include-uninstalled=$(top_builddir)/cogl/Cogl-1.0.gir
INTROSPECTION_GIRS += CoglPango-@LIBMUTTER_API_VERSION@.gir INTROSPECTION_GIRS += CoglPango-1.0.gir
girdir = $(mutterlibdir) girdir = $(mutterlibdir)
gir_DATA = $(INTROSPECTION_GIRS) gir_DATA = $(INTROSPECTION_GIRS)

View File

@@ -2,12 +2,12 @@ prefix=@prefix@
exec_prefix=@exec_prefix@ exec_prefix=@exec_prefix@
libdir=@libdir@/mutter libdir=@libdir@/mutter
includedir=@includedir@/mutter includedir=@includedir@/mutter
apiversion=@LIBMUTTER_API_VERSION@ apiversion=1.0
requires=@COGL_PKG_REQUIRES@ mutter-cogl-@LIBMUTTER_API_VERSION@ requires=@COGL_PKG_REQUIRES@ mutter-cogl-1.0
Name: Cogl Name: Cogl
Description: An object oriented GL/GLES Abstraction/Utility Layer Description: An object oriented GL/GLES Abstraction/Utility Layer
Version: @MUTTER_VERSION@ Version: @COGL_1_VERSION@
Libs: -L${libdir} -lmutter-cogl-pango-@LIBMUTTER_API_VERSION@ Libs: -L${libdir} -lmutter-cogl-pango
Cflags: -I${includedir}/cogl Cflags: -I${includedir}/cogl
Requires: ${requires} Requires: ${requires}

View File

@@ -65,14 +65,14 @@ glib_enum_headers = $(source_1_x_h)
include $(top_srcdir)/build/autotools/Makefile.am.enums include $(top_srcdir)/build/autotools/Makefile.am.enums
mutterlibdir = $(libdir)/mutter mutterlibdir = $(libdir)/mutter
mutterlib_LTLIBRARIES = libmutter-cogl-path-@LIBMUTTER_API_VERSION@.la mutterlib_LTLIBRARIES = libmutter-cogl-path.la
libmutter_cogl_path_@LIBMUTTER_API_VERSION@_la_SOURCES = $(source_c) $(source_h) libmutter_cogl_path_la_SOURCES = $(source_c) $(source_h)
nodist_libmutter_cogl_path_@LIBMUTTER_API_VERSION@_la_SOURCES = $(BUILT_SOURCES) nodist_libmutter_cogl_path_la_SOURCES = $(BUILT_SOURCES)
libmutter_cogl_path_@LIBMUTTER_API_VERSION@_la_CFLAGS = $(COGL_DEP_CFLAGS) $(COGL_EXTRA_CFLAGS) $(MAINTAINER_CFLAGS) libmutter_cogl_path_la_CFLAGS = $(COGL_DEP_CFLAGS) $(COGL_EXTRA_CFLAGS) $(MAINTAINER_CFLAGS)
libmutter_cogl_path_@LIBMUTTER_API_VERSION@_la_LIBADD = $(top_builddir)/cogl/libmutter-cogl-$(LIBMUTTER_API_VERSION).la libmutter_cogl_path_la_LIBADD = $(top_builddir)/cogl/libmutter-cogl.la
libmutter_cogl_path_@LIBMUTTER_API_VERSION@_la_LIBADD += $(COGL_DEP_LIBS) $(COGL_EXTRA_LDFLAGS) libmutter_cogl_path_la_LIBADD += $(COGL_DEP_LIBS) $(COGL_EXTRA_LDFLAGS)
libmutter_cogl_path_@LIBMUTTER_API_VERSION@_la_LDFLAGS = \ libmutter_cogl_path_la_LDFLAGS = \
-export-dynamic \ -export-dynamic \
-export-symbols-regex "^(cogl|cogl2)_(framebuffer|path|is|clip|[sg]et)_.*" \ -export-symbols-regex "^(cogl|cogl2)_(framebuffer|path|is|clip|[sg]et)_.*" \
-no-undefined \ -no-undefined \
@@ -94,7 +94,7 @@ cogl_pathheadersdir = $(cogl_base_includedir)/cogl/cogl-path
cogl_pathheaders_HEADERS = $(source_h) cogl_pathheaders_HEADERS = $(source_h)
nodist_cogl_pathheaders_HEADERS = cogl-path-enum-types.h nodist_cogl_pathheaders_HEADERS = cogl-path-enum-types.h
pc_files = mutter-cogl-path-$(LIBMUTTER_API_VERSION).pc pc_files = mutter-cogl-path-1.0.pc
pkgconfigdir = $(libdir)/pkgconfig pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = $(pc_files) pkgconfig_DATA = $(pc_files)

View File

@@ -2,12 +2,12 @@ prefix=@prefix@
exec_prefix=@exec_prefix@ exec_prefix=@exec_prefix@
libdir=@libdir@/mutter libdir=@libdir@/mutter
includedir=@includedir@/mutter includedir=@includedir@/mutter
apiversion=@LIBMUTTER_API_VERSION@ apiversion=1.0
requires=@COGL_PKG_REQUIRES@ mutter-cogl-@LIBMUTTER_API_VERSION@ requires=@COGL_PKG_REQUIRES@ mutter-cogl-1.0
Name: Cogl Name: Cogl
Description: A 2D path drawing library for Cogl Description: A 2D path drawing library for Cogl
Version: @MUTTER_VERSION@ Version: @COGL_1_VERSION@
Libs: -L${libdir} -lmutter-cogl-path-@LIBMUTTER_API_VERSION@ Libs: -L${libdir} -lmutter-cogl-path
Cflags: -I${includedir}/cogl Cflags: -I${includedir}/cogl
Requires: ${requires} Requires: ${requires}

View File

@@ -41,7 +41,7 @@ BUILT_SOURCES += cogl-defines.h cogl-egl-defines.h cogl-gl-header.h
DISTCLEANFILES += cogl-defines.h cogl-egl-defines.h cogl-gl-header.h DISTCLEANFILES += cogl-defines.h cogl-egl-defines.h cogl-gl-header.h
EXTRA_DIST += cogl-defines.h.in cogl-egl-defines.h.in cogl-gl-header.h.in EXTRA_DIST += cogl-defines.h.in cogl-egl-defines.h.in cogl-gl-header.h.in
pc_files = mutter-cogl-$(LIBMUTTER_API_VERSION).pc pc_files = mutter-cogl-1.0.pc
pkgconfigdir = $(libdir)/pkgconfig pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = $(pc_files) pkgconfig_DATA = $(pc_files)
@@ -439,23 +439,23 @@ cogl_sources_c += \
endif endif
mutterlibdir = $(libdir)/mutter mutterlibdir = $(libdir)/mutter
mutterlib_LTLIBRARIES = libmutter-cogl-@LIBMUTTER_API_VERSION@.la mutterlib_LTLIBRARIES = libmutter-cogl.la
libmutter_cogl_@LIBMUTTER_API_VERSION@_la_LIBADD = $(LIBM) $(COGL_DEP_LIBS) $(COGL_EXTRA_LDFLAGS) libmutter_cogl_la_LIBADD = $(LIBM) $(COGL_DEP_LIBS) $(COGL_EXTRA_LDFLAGS)
if UNIT_TESTS if UNIT_TESTS
libmutter_cogl_@LIBMUTTER_API_VERSION@_la_LIBADD += $(top_builddir)/test-fixtures/libtest-fixtures.la libmutter_cogl_la_LIBADD += $(top_builddir)/test-fixtures/libtest-fixtures.la
endif endif
# XXX: The aim is to eventually get rid of all private API exports # XXX: The aim is to eventually get rid of all private API exports
# for cogl-pango. # for cogl-pango.
libmutter_cogl_@LIBMUTTER_API_VERSION@_la_LDFLAGS = \ libmutter_cogl_la_LDFLAGS = \
-no-undefined \ -no-undefined \
-avoid-version \ -avoid-version \
-export-dynamic \ -export-dynamic \
-rpath $(mutterlibdir) \ -rpath $(mutterlibdir) \
-export-symbols-regex "^(cogl|_cogl_debug_flags|_cogl_atlas_new|_cogl_atlas_add_reorganize_callback|_cogl_atlas_reserve_space|_cogl_callback|_cogl_util_get_eye_planes_for_screen_poly|_cogl_atlas_texture_remove_reorganize_callback|_cogl_atlas_texture_add_reorganize_callback|_cogl_texture_get_format|_cogl_texture_foreach_sub_texture_in_region|_cogl_texture_set_region|_cogl_profile_trace_message|_cogl_context_get_default|_cogl_framebuffer_get_stencil_bits|_cogl_clip_stack_push_rectangle|_cogl_framebuffer_get_modelview_stack|_cogl_object_default_unref|_cogl_pipeline_foreach_layer_internal|_cogl_clip_stack_push_primitive|_cogl_buffer_unmap_for_fill_or_fallback|_cogl_framebuffer_draw_primitive|_cogl_debug_instances|_cogl_framebuffer_get_projection_stack|_cogl_pipeline_layer_get_texture|_cogl_buffer_map_for_fill_or_fallback|_cogl_texture_can_hardware_repeat|_cogl_pipeline_prune_to_n_layers|_cogl_primitive_draw|test_|unit_test_|_cogl_winsys_glx_get_vtable|_cogl_winsys_egl_xlib_get_vtable|_cogl_winsys_egl_get_vtable|_cogl_closure_disconnect|_cogl_onscreen_notify_complete|_cogl_onscreen_notify_frame_sync|_cogl_winsys_egl_renderer_connect_common|_cogl_winsys_error_quark|_cogl_set_error|_cogl_poll_renderer_add_fd|_cogl_poll_renderer_add_idle|_cogl_framebuffer_winsys_update_size|_cogl_winsys_egl_make_current|_cogl_pixel_format_get_bytes_per_pixel).*" -export-symbols-regex "^(cogl|_cogl_debug_flags|_cogl_atlas_new|_cogl_atlas_add_reorganize_callback|_cogl_atlas_reserve_space|_cogl_callback|_cogl_util_get_eye_planes_for_screen_poly|_cogl_atlas_texture_remove_reorganize_callback|_cogl_atlas_texture_add_reorganize_callback|_cogl_texture_get_format|_cogl_texture_foreach_sub_texture_in_region|_cogl_profile_trace_message|_cogl_context_get_default|_cogl_framebuffer_get_stencil_bits|_cogl_clip_stack_push_rectangle|_cogl_framebuffer_get_modelview_stack|_cogl_object_default_unref|_cogl_pipeline_foreach_layer_internal|_cogl_clip_stack_push_primitive|_cogl_buffer_unmap_for_fill_or_fallback|_cogl_framebuffer_draw_primitive|_cogl_debug_instances|_cogl_framebuffer_get_projection_stack|_cogl_pipeline_layer_get_texture|_cogl_buffer_map_for_fill_or_fallback|_cogl_texture_can_hardware_repeat|_cogl_pipeline_prune_to_n_layers|_cogl_primitive_draw|test_|unit_test_|_cogl_winsys_glx_get_vtable|_cogl_winsys_egl_xlib_get_vtable|_cogl_winsys_egl_get_vtable|_cogl_closure_disconnect|_cogl_onscreen_notify_complete|_cogl_onscreen_notify_frame_sync|_cogl_winsys_egl_renderer_connect_common|_cogl_winsys_error_quark|_cogl_set_error|_cogl_poll_renderer_add_fd|_cogl_poll_renderer_add_idle|_cogl_framebuffer_winsys_update_size|_cogl_winsys_egl_make_current).*"
libmutter_cogl_@LIBMUTTER_API_VERSION@_la_SOURCES = $(cogl_sources_c) libmutter_cogl_la_SOURCES = $(cogl_sources_c)
nodist_libmutter_cogl_@LIBMUTTER_API_VERSION@_la_SOURCES = $(BUILT_SOURCES) nodist_libmutter_cogl_la_SOURCES = $(BUILT_SOURCES)
# Cogl installed headers # Cogl installed headers
cogl_headers = \ cogl_headers = \
@@ -483,22 +483,22 @@ EXTRA_DIST += \
INTROSPECTION_GIRS = INTROSPECTION_GIRS =
if HAVE_INTROSPECTION if HAVE_INTROSPECTION
Cogl-@LIBMUTTER_API_VERSION@.gir: libmutter-cogl-$(LIBMUTTER_API_VERSION).la Makefile Cogl-1.0.gir: libmutter-cogl.la Makefile
Cogl_@LIBMUTTER_API_VERSION@_gir_NAMESPACE = Cogl Cogl_1_0_gir_NAMESPACE = Cogl
Cogl_@LIBMUTTER_API_VERSION@_gir_VERSION = $(LIBMUTTER_API_VERSION) Cogl_1_0_gir_VERSION = 1.0
Cogl_@LIBMUTTER_API_VERSION@_gir_LIBS = libmutter-cogl-$(LIBMUTTER_API_VERSION).la Cogl_1_0_gir_LIBS = libmutter-cogl.la
if UNIT_TESTS if UNIT_TESTS
Cogl_@LIBMUTTER_API_VERSION@_gir_LIBS += $(top_builddir)/test-fixtures/libtest-fixtures.la Cogl_1_0_gir_LIBS += $(top_builddir)/test-fixtures/libtest-fixtures.la
endif endif
Cogl_@LIBMUTTER_API_VERSION@_gir_FILES = $(cogl_1_public_h) Cogl_1_0_gir_FILES = $(cogl_1_public_h)
Cogl_@LIBMUTTER_API_VERSION@_gir_CFLAGS = $(AM_CPPFLAGS) $(COGL_DEP_CFLAGS) -UCOGL_COMPILATION -D__COGL_H_INSIDE__ -D__COGL_XLIB_H_INSIDE__ -D__COGL_EGL_H_INSIDE__ -D__COGL_GLX_H_INSIDE__ -DCOGL_GIR_SCANNING Cogl_1_0_gir_CFLAGS = $(AM_CPPFLAGS) $(COGL_DEP_CFLAGS) -UCOGL_COMPILATION -D__COGL_H_INSIDE__ -D__COGL_XLIB_H_INSIDE__ -D__COGL_EGL_H_INSIDE__ -D__COGL_GLX_H_INSIDE__ -DCOGL_GIR_SCANNING
Cogl_@LIBMUTTER_API_VERSION@_gir_INCLUDES = GL-1.0 GObject-2.0 Cogl_1_0_gir_INCLUDES = GL-1.0 GObject-2.0
Cogl_@LIBMUTTER_API_VERSION@_gir_EXPORT_PACKAGES = mutter-cogl-@LIBMUTTER_API_VERSION@ Cogl_1_0_gir_EXPORT_PACKAGES = mutter-cogl-1.0
Cogl_@LIBMUTTER_API_VERSION@_gir_SCANNERFLAGS = --warn-all --c-include='cogl/cogl.h' Cogl_1_0_gir_SCANNERFLAGS = --warn-all --c-include='cogl/cogl.h'
INTROSPECTION_GIRS += Cogl-@LIBMUTTER_API_VERSION@.gir INTROSPECTION_GIRS += Cogl-1.0.gir
girdir = $(mutterlibdir) girdir = $(mutterlibdir)
gir_DATA = $(INTROSPECTION_GIRS) gir_DATA = $(INTROSPECTION_GIRS)

View File

@@ -262,7 +262,6 @@ typedef enum _CoglFeatureID
COGL_FEATURE_ID_PER_VERTEX_POINT_SIZE, COGL_FEATURE_ID_PER_VERTEX_POINT_SIZE,
COGL_FEATURE_ID_TEXTURE_RG, COGL_FEATURE_ID_TEXTURE_RG,
COGL_FEATURE_ID_BUFFER_AGE, COGL_FEATURE_ID_BUFFER_AGE,
COGL_FEATURE_ID_TEXTURE_EGL_IMAGE_EXTERNAL,
/*< private >*/ /*< private >*/
_COGL_N_FEATURE_IDS /*< skip >*/ _COGL_N_FEATURE_IDS /*< skip >*/

View File

@@ -55,13 +55,6 @@ struct _CoglDriverVtable
GLenum *out_glintformat, GLenum *out_glintformat,
GLenum *out_glformat, GLenum *out_glformat,
GLenum *out_gltype); GLenum *out_gltype);
CoglPixelFormat
(* pixel_format_to_gl_with_target) (CoglContext *context,
CoglPixelFormat format,
CoglPixelFormat target_format,
GLenum *out_glintformat,
GLenum *out_glformat,
GLenum *out_gltype);
CoglBool CoglBool
(* update_features) (CoglContext *context, (* update_features) (CoglContext *context,

View File

@@ -152,7 +152,6 @@ typedef long GLsizeiptr;
#define GL_POLYGON_OFFSET_FILL 0x8037 #define GL_POLYGON_OFFSET_FILL 0x8037
#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E #define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E
#define GL_SAMPLE_COVERAGE 0x80A0 #define GL_SAMPLE_COVERAGE 0x80A0
#define GL_TEXTURE_EXTERNAL_OES 0x8D65
/* ErrorCode */ /* ErrorCode */
#define GL_NO_ERROR 0 #define GL_NO_ERROR 0

View File

@@ -111,14 +111,6 @@ _cogl_glsl_shader_set_source_with_boilerplate (CoglContext *ctx,
lengths[count++] = sizeof (texture_3d_extension) - 1; lengths[count++] = sizeof (texture_3d_extension) - 1;
} }
if (cogl_has_feature (ctx, COGL_FEATURE_ID_TEXTURE_EGL_IMAGE_EXTERNAL))
{
static const char texture_3d_extension[] =
"#extension GL_OES_EGL_image_external : require\n";
strings[count] = texture_3d_extension;
lengths[count++] = sizeof (texture_3d_extension) - 1;
}
if (shader_gl_type == GL_VERTEX_SHADER) if (shader_gl_type == GL_VERTEX_SHADER)
{ {
strings[count] = vertex_boilerplate; strings[count] = vertex_boilerplate;

View File

@@ -51,9 +51,6 @@ typedef struct _CoglGLXDisplay
CoglBool found_fbconfig; CoglBool found_fbconfig;
CoglBool fbconfig_has_rgba_visual; CoglBool fbconfig_has_rgba_visual;
CoglBool is_direct;
CoglBool have_vblank_counter;
CoglBool can_vblank_wait;
GLXFBConfig fbconfig; GLXFBConfig fbconfig;
/* Single context for all wins */ /* Single context for all wins */

View File

@@ -43,6 +43,8 @@ typedef struct _CoglGLXRenderer
int glx_error_base; int glx_error_base;
int glx_event_base; int glx_event_base;
CoglBool is_direct;
/* Vblank stuff */ /* Vblank stuff */
int dri_fd; int dri_fd;

View File

@@ -169,8 +169,7 @@ check_qualcomm_vendor (const CoglGpuInfoStrings *strings)
static CoglBool static CoglBool
check_nvidia_vendor (const CoglGpuInfoStrings *strings) check_nvidia_vendor (const CoglGpuInfoStrings *strings)
{ {
if (strcmp (strings->vendor_string, "NVIDIA") != 0 && if (strcmp (strings->vendor_string, "NVIDIA") != 0)
strcmp (strings->vendor_string, "NVIDIA Corporation") != 0)
return FALSE; return FALSE;
return TRUE; return TRUE;

View File

@@ -44,7 +44,7 @@ typedef struct _CoglObject CoglObject;
/** /**
* CoglObject: (ref-func cogl_object_ref) (unref-func cogl_object_unref) * CoglObject: (ref-func cogl_object_ref) (unref-func cogl_object_unref)
* (set-value-func cogl_object_value_set_object) * (set-value-func cogl_object_value_set_object)
* (get-value-func cogl_object_value_get_object) * (get-value-func cogl_object_get_object)
*/ */
/** /**

View File

@@ -62,7 +62,7 @@ COGL_BEGIN_DECLS
/** /**
* CoglPrimitive: (ref-func cogl_object_ref) (unref-func cogl_object_unref) * CoglPrimitive: (ref-func cogl_object_ref) (unref-func cogl_object_unref)
* (set-value-func cogl_object_value_set_object) * (set-value-func cogl_object_value_set_object)
* (get-value-func cogl_object_value_get_object) * (get-value-func cogl_object_get_object)
*/ */
/** /**

View File

@@ -77,9 +77,6 @@ typedef enum
COGL_PRIVATE_FEATURE_GL_PROGRAMMABLE, COGL_PRIVATE_FEATURE_GL_PROGRAMMABLE,
COGL_PRIVATE_FEATURE_GL_EMBEDDED, COGL_PRIVATE_FEATURE_GL_EMBEDDED,
COGL_PRIVATE_FEATURE_GL_WEB, COGL_PRIVATE_FEATURE_GL_WEB,
/* This is currently only implemented for GLX, but isn't actually
* that winsys dependent */
COGL_PRIVATE_FEATURE_THREADED_SWAP_WAIT,
COGL_N_PRIVATE_FEATURES COGL_N_PRIVATE_FEATURES
} CoglPrivateFeature; } CoglPrivateFeature;

View File

@@ -69,7 +69,6 @@ struct _CoglRenderer
Display *foreign_xdpy; Display *foreign_xdpy;
CoglBool xlib_enable_event_retrieval; CoglBool xlib_enable_event_retrieval;
CoglBool xlib_want_reset_on_video_memory_purge; CoglBool xlib_want_reset_on_video_memory_purge;
CoglBool xlib_enable_threaded_swap_wait;
#endif #endif
CoglDriver driver; CoglDriver driver;

View File

@@ -285,17 +285,6 @@ cogl_xlib_renderer_request_reset_on_video_memory_purge (CoglRenderer *renderer,
renderer->xlib_want_reset_on_video_memory_purge = enable; renderer->xlib_want_reset_on_video_memory_purge = enable;
} }
void
cogl_xlib_renderer_set_threaded_swap_wait_enabled (CoglRenderer *renderer,
CoglBool enable)
{
_COGL_RETURN_IF_FAIL (cogl_is_renderer (renderer));
/* NB: Renderers are considered immutable once connected */
_COGL_RETURN_IF_FAIL (!renderer->connected);
renderer->xlib_enable_threaded_swap_wait = enable;
}
#endif /* COGL_HAS_XLIB_SUPPORT */ #endif /* COGL_HAS_XLIB_SUPPORT */
CoglBool CoglBool

View File

@@ -36,6 +36,10 @@
#include "cogl-texture-private.h" #include "cogl-texture-private.h"
#include "cogl-texture-2d.h" #include "cogl-texture-2d.h"
#ifdef COGL_HAS_EGL_SUPPORT
#include "cogl-egl-defines.h"
#endif
struct _CoglTexture2D struct _CoglTexture2D
{ {
CoglTexture _parent; CoglTexture _parent;
@@ -55,23 +59,30 @@ struct _CoglTexture2D
GLenum gl_internal_format; GLenum gl_internal_format;
/* The texture object number */ /* The texture object number */
GLuint gl_texture; GLuint gl_texture;
GLenum gl_target;
GLenum gl_legacy_texobj_min_filter; GLenum gl_legacy_texobj_min_filter;
GLenum gl_legacy_texobj_mag_filter; GLenum gl_legacy_texobj_mag_filter;
GLint gl_legacy_texobj_wrap_mode_s; GLint gl_legacy_texobj_wrap_mode_s;
GLint gl_legacy_texobj_wrap_mode_t; GLint gl_legacy_texobj_wrap_mode_t;
CoglTexturePixel first_pixel; CoglTexturePixel first_pixel;
struct {
void *user_data;
GDestroyNotify destroy;
} egl_image_external;
}; };
CoglTexture2D * CoglTexture2D *
_cogl_texture_2d_new_from_bitmap (CoglBitmap *bmp, _cogl_texture_2d_new_from_bitmap (CoglBitmap *bmp,
CoglBool can_convert_in_place); CoglBool can_convert_in_place);
#if defined (COGL_HAS_EGL_SUPPORT) && defined (EGL_KHR_image_base)
/* NB: The reason we require the width, height and format to be passed
* even though they may seem redundant is because GLES 1/2 don't
* provide a way to query these properties. */
CoglTexture2D *
_cogl_egl_texture_2d_new_from_image (CoglContext *ctx,
int width,
int height,
CoglPixelFormat format,
EGLImageKHR image,
CoglError **error);
#endif
CoglTexture2D * CoglTexture2D *
_cogl_texture_2d_create_base (CoglContext *ctx, _cogl_texture_2d_create_base (CoglContext *ctx,
int width, int width,

View File

@@ -110,8 +110,6 @@ _cogl_texture_2d_create_base (CoglContext *ctx,
tex_2d->mipmaps_dirty = TRUE; tex_2d->mipmaps_dirty = TRUE;
tex_2d->auto_mipmap = TRUE; tex_2d->auto_mipmap = TRUE;
tex_2d->gl_target = GL_TEXTURE_2D;
tex_2d->is_foreign = FALSE; tex_2d->is_foreign = FALSE;
ctx->driver_vtable->texture_2d_init (tex_2d); ctx->driver_vtable->texture_2d_init (tex_2d);
@@ -238,12 +236,12 @@ cogl_texture_2d_new_from_data (CoglContext *ctx,
* even though they may seem redundant is because GLES 1/2 don't * even though they may seem redundant is because GLES 1/2 don't
* provide a way to query these properties. */ * provide a way to query these properties. */
CoglTexture2D * CoglTexture2D *
cogl_egl_texture_2d_new_from_image (CoglContext *ctx, _cogl_egl_texture_2d_new_from_image (CoglContext *ctx,
int width, int width,
int height, int height,
CoglPixelFormat format, CoglPixelFormat format,
EGLImageKHR image, EGLImageKHR image,
CoglError **error) CoglError **error)
{ {
CoglTextureLoader *loader; CoglTextureLoader *loader;
CoglTexture2D *tex; CoglTexture2D *tex;
@@ -432,11 +430,11 @@ cogl_wayland_texture_2d_new_from_buffer (CoglContext *ctx,
EGL_WAYLAND_BUFFER_WL, EGL_WAYLAND_BUFFER_WL,
buffer, buffer,
NULL); NULL);
tex = cogl_egl_texture_2d_new_from_image (ctx, tex = _cogl_egl_texture_2d_new_from_image (ctx,
width, height, width, height,
internal_format, internal_format,
image, image,
error); error);
_cogl_egl_destroy_image (ctx, image); _cogl_egl_destroy_image (ctx, image);
return tex; return tex;
} }
@@ -559,7 +557,7 @@ _cogl_texture_2d_get_gl_texture (CoglTexture *tex,
GLuint handle; GLuint handle;
if (out_gl_target) if (out_gl_target)
*out_gl_target = tex_2d->gl_target; *out_gl_target = GL_TEXTURE_2D;
handle = ctx->driver_vtable->texture_2d_get_gl_handle (tex_2d); handle = ctx->driver_vtable->texture_2d_get_gl_handle (tex_2d);

View File

@@ -40,10 +40,6 @@
#include "cogl-context.h" #include "cogl-context.h"
#include "cogl-bitmap.h" #include "cogl-bitmap.h"
#ifdef COGL_HAS_EGL_SUPPORT
#include "cogl-egl-defines.h"
#endif
COGL_BEGIN_DECLS COGL_BEGIN_DECLS
/** /**
@@ -231,40 +227,6 @@ cogl_texture_2d_new_from_data (CoglContext *ctx,
CoglTexture2D * CoglTexture2D *
cogl_texture_2d_new_from_bitmap (CoglBitmap *bitmap); cogl_texture_2d_new_from_bitmap (CoglBitmap *bitmap);
#if defined (COGL_HAS_EGL_SUPPORT) && defined (EGL_KHR_image_base)
/* NB: The reason we require the width, height and format to be passed
* even though they may seem redundant is because GLES 1/2 don't
* provide a way to query these properties. */
CoglTexture2D *
cogl_egl_texture_2d_new_from_image (CoglContext *ctx,
int width,
int height,
CoglPixelFormat format,
EGLImageKHR image,
CoglError **error);
typedef gboolean (*CoglTexture2DEGLImageExternalAlloc) (CoglTexture2D *tex_2d,
gpointer user_data,
GError **error);
CoglTexture2D *
cogl_texture_2d_new_from_egl_image_external (CoglContext *ctx,
int width,
int height,
CoglTexture2DEGLImageExternalAlloc alloc,
gpointer user_data,
GDestroyNotify destroy,
CoglError **error);
void
cogl_texture_2d_egl_image_external_bind (CoglTexture2D *tex_2d);
void
cogl_texture_2d_egl_image_external_alloc_finish (CoglTexture2D *tex_2d,
void *user_data,
GDestroyNotify destroy);
#endif
COGL_END_DECLS COGL_END_DECLS
#endif /* __COGL_TEXTURE_2D_H */ #endif /* __COGL_TEXTURE_2D_H */

View File

@@ -37,7 +37,6 @@
#include "cogl-spans.h" #include "cogl-spans.h"
#include "cogl-meta-texture.h" #include "cogl-meta-texture.h"
#include "cogl-framebuffer.h" #include "cogl-framebuffer.h"
#include "cogl-texture-2d.h"
#ifdef COGL_HAS_EGL_SUPPORT #ifdef COGL_HAS_EGL_SUPPORT
#include "cogl-egl-defines.h" #include "cogl-egl-defines.h"
@@ -155,8 +154,7 @@ typedef enum _CoglTextureSoureType {
COGL_TEXTURE_SOURCE_TYPE_SIZED = 1, COGL_TEXTURE_SOURCE_TYPE_SIZED = 1,
COGL_TEXTURE_SOURCE_TYPE_BITMAP, COGL_TEXTURE_SOURCE_TYPE_BITMAP,
COGL_TEXTURE_SOURCE_TYPE_EGL_IMAGE, COGL_TEXTURE_SOURCE_TYPE_EGL_IMAGE,
COGL_TEXTURE_SOURCE_TYPE_GL_FOREIGN, COGL_TEXTURE_SOURCE_TYPE_GL_FOREIGN
COGL_TEXTURE_SOURCE_TYPE_EGL_IMAGE_EXTERNAL
} CoglTextureSourceType; } CoglTextureSourceType;
typedef struct _CoglTextureLoader typedef struct _CoglTextureLoader
@@ -181,14 +179,6 @@ typedef struct _CoglTextureLoader
int height; int height;
CoglPixelFormat format; CoglPixelFormat format;
} egl_image; } egl_image;
#endif
#if defined (COGL_HAS_EGL_SUPPORT)
struct {
int width;
int height;
CoglTexture2DEGLImageExternalAlloc alloc;
CoglPixelFormat format;
} egl_image_external;
#endif #endif
struct { struct {
int width; int width;

View File

@@ -160,7 +160,6 @@ _cogl_texture_free_loader (CoglTexture *texture)
case COGL_TEXTURE_SOURCE_TYPE_SIZED: case COGL_TEXTURE_SOURCE_TYPE_SIZED:
case COGL_TEXTURE_SOURCE_TYPE_EGL_IMAGE: case COGL_TEXTURE_SOURCE_TYPE_EGL_IMAGE:
case COGL_TEXTURE_SOURCE_TYPE_GL_FOREIGN: case COGL_TEXTURE_SOURCE_TYPE_GL_FOREIGN:
case COGL_TEXTURE_SOURCE_TYPE_EGL_IMAGE_EXTERNAL:
break; break;
case COGL_TEXTURE_SOURCE_TYPE_BITMAP: case COGL_TEXTURE_SOURCE_TYPE_BITMAP:
cogl_object_unref (loader->src.bitmap.bitmap); cogl_object_unref (loader->src.bitmap.bitmap);

View File

@@ -167,36 +167,6 @@ void
cogl_xlib_renderer_set_event_retrieval_enabled (CoglRenderer *renderer, cogl_xlib_renderer_set_event_retrieval_enabled (CoglRenderer *renderer,
CoglBool enable); CoglBool enable);
/**
* cogl_xlib_renderer_set_threaded_swap_wait_enabled:
* @renderer: a #CoglRenderer
* @enable: The new value
*
* Sets whether Cogl is allowed to use a separate threaded to wait for the
* completion of glXSwapBuffers() and call the frame callback for the
* corresponding #CoglOnscreen. This is a way of emulating the
* INTEL_swap_event extension, and will only ever be used if
* INTEL_swap_event is not present; it will also only be used for
* specific white-listed drivers that are known to work correctly with
* multiple contexts sharing state between threads.
*
* The advantage of enabling this is that it will allow your main loop
* to do other work while waiting for the system to be ready to draw
* the next frame, instead of blocking in glXSwapBuffers(). A disadvantage
* is that the driver will be prevented from buffering up multiple frames
* even if it thinks that it would be advantageous. In general, this
* will work best for something like a system compositor that is doing
* simple drawing but handling lots of other complex tasks.
*
* If you enable this, you must call XInitThreads() before any other
* X11 calls in your program. (See the documentation for XInitThreads())
*
* Stability: unstable
*/
void
cogl_xlib_renderer_set_threaded_swap_wait_enabled (CoglRenderer *renderer,
CoglBool enable);
/** /**
* cogl_xlib_renderer_get_display: (skip) * cogl_xlib_renderer_get_display: (skip)
*/ */
@@ -210,7 +180,7 @@ XVisualInfo *
cogl_xlib_renderer_get_visual_info (CoglRenderer *renderer); cogl_xlib_renderer_get_visual_info (CoglRenderer *renderer);
/** /**
* cogl_xlib_renderer_request_reset_on_video_memory_purge: (skip) * cogl_xlib_renderer_request_reset_on_video_memory_purge:
* @renderer: a #CoglRenderer * @renderer: a #CoglRenderer
* @enable: The new value * @enable: The new value
* *

View File

@@ -1307,7 +1307,7 @@ CoglMaterialWrapMode
cogl_material_layer_get_wrap_mode_p (CoglMaterialLayer *layer); cogl_material_layer_get_wrap_mode_p (CoglMaterialLayer *layer);
/** /**
* cogl_material_set_depth_state: (skip) * cogl_material_set_depth_state:
* @material: A #CoglMaterial object * @material: A #CoglMaterial object
* @state: A #CoglDepthState struct * @state: A #CoglDepthState struct
* @error: A #CoglError to report failures to setup the given @state. * @error: A #CoglError to report failures to setup the given @state.
@@ -1334,7 +1334,7 @@ cogl_material_set_depth_state (CoglMaterial *material,
CoglError **error); CoglError **error);
/** /**
* cogl_material_get_depth_state: (skip) * cogl_material_get_depth_state:
* @material: A #CoglMaterial object * @material: A #CoglMaterial object
* @state_out: A destination #CoglDepthState struct * @state_out: A destination #CoglDepthState struct
* *
@@ -1370,8 +1370,8 @@ typedef CoglBool (*CoglMaterialLayerCallback) (CoglMaterial *material,
/** /**
* cogl_material_foreach_layer: * cogl_material_foreach_layer:
* @material: A #CoglMaterial object * @material: A #CoglMaterial object
* @callback: (scope call): A #CoglMaterialLayerCallback to be called for each * @callback: A #CoglMaterialLayerCallback to be called for each layer
* layer index * index
* @user_data: Private data that will be passed to the callback * @user_data: Private data that will be passed to the callback
* *
* Iterates all the layer indices of the given @material. * Iterates all the layer indices of the given @material.

View File

@@ -1418,15 +1418,6 @@ _cogl_framebuffer_gl_read_pixels_into_bitmap (CoglFramebuffer *framebuffer,
&gl_format, &gl_format,
&gl_type); &gl_type);
/* As we are reading pixels, we want to consider the bitmap according to
* its real pixel format, not the swizzled channels we pretend face to the
* pipeline.
*/
if ((format == COGL_PIXEL_FORMAT_BGRA_8888 ||
format == COGL_PIXEL_FORMAT_BGRA_8888_PRE) &&
_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_TEXTURE_SWIZZLE))
gl_format = GL_BGRA;
/* NB: All offscreen rendering is done upside down so there is no need /* NB: All offscreen rendering is done upside down so there is no need
* to flip in this case... */ * to flip in this case... */
if (_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_MESA_PACK_INVERT) && if (_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_MESA_PACK_INVERT) &&

View File

@@ -46,31 +46,11 @@
#include "cogl-error-private.h" #include "cogl-error-private.h"
#include "cogl-util-gl-private.h" #include "cogl-util-gl-private.h"
#if defined (COGL_HAS_EGL_SUPPORT)
/* We need this define from GLES2, but can't include the header
as its type definitions may conflict with the GL ones
*/
#ifndef GL_OES_EGL_image_external
#define GL_OES_EGL_image_external 1
#define GL_TEXTURE_EXTERNAL_OES 0x8D65
#define GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67
#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68
#define GL_SAMPLER_EXTERNAL_OES 0x8D66
#endif /* GL_OES_EGL_image_external */
#endif /* defined (COGL_HAS_EGL_SUPPORT) */
void void
_cogl_texture_2d_gl_free (CoglTexture2D *tex_2d) _cogl_texture_2d_gl_free (CoglTexture2D *tex_2d)
{ {
if (!tex_2d->is_foreign && tex_2d->gl_texture) if (!tex_2d->is_foreign && tex_2d->gl_texture)
_cogl_delete_gl_texture (tex_2d->gl_texture); _cogl_delete_gl_texture (tex_2d->gl_texture);
#if defined (COGL_HAS_EGL_SUPPORT)
g_clear_pointer (&tex_2d->egl_image_external.user_data,
tex_2d->egl_image_external.destroy);
#endif
} }
CoglBool CoglBool
@@ -121,9 +101,6 @@ _cogl_texture_2d_gl_init (CoglTexture2D *tex_2d)
/* Wrap mode not yet set */ /* Wrap mode not yet set */
tex_2d->gl_legacy_texobj_wrap_mode_s = GL_FALSE; tex_2d->gl_legacy_texobj_wrap_mode_s = GL_FALSE;
tex_2d->gl_legacy_texobj_wrap_mode_t = GL_FALSE; tex_2d->gl_legacy_texobj_wrap_mode_t = GL_FALSE;
tex_2d->egl_image_external.user_data = NULL;
tex_2d->egl_image_external.destroy = NULL;
} }
static CoglBool static CoglBool
@@ -462,96 +439,6 @@ allocate_from_gl_foreign (CoglTexture2D *tex_2d,
return TRUE; return TRUE;
} }
#if defined (COGL_HAS_EGL_SUPPORT)
static CoglBool
allocate_custom_egl_image_external (CoglTexture2D *tex_2d,
CoglTextureLoader *loader,
CoglError **error)
{
CoglTexture *tex = COGL_TEXTURE (tex_2d);
CoglContext *ctx = tex->context;
CoglPixelFormat internal_format = loader->src.egl_image_external.format;
_cogl_gl_util_clear_gl_errors (ctx);
GE (ctx, glActiveTexture (GL_TEXTURE0));
GE (ctx, glGenTextures (1, &tex_2d->gl_texture));
GE (ctx, glBindTexture (GL_TEXTURE_EXTERNAL_OES,
tex_2d->gl_texture));
if (_cogl_gl_util_get_error (ctx) != GL_NO_ERROR)
{
_cogl_set_error (error,
COGL_TEXTURE_ERROR,
COGL_TEXTURE_ERROR_BAD_PARAMETER,
"Could not create a CoglTexture2D from a given "
"EGLImage");
GE( ctx, glDeleteTextures (1, &tex_2d->gl_texture) );
return FALSE;
}
GE (ctx, glTexParameteri(GL_TEXTURE_EXTERNAL_OES,
GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE));
GE (ctx, glTexParameteri(GL_TEXTURE_EXTERNAL_OES,
GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE));
if (!loader->src.egl_image_external.alloc (tex_2d,
tex_2d->egl_image_external.user_data,
error))
{
GE (ctx, glBindTexture (GL_TEXTURE_EXTERNAL_OES, 0));
GE (ctx, glDeleteTextures (1, &tex_2d->gl_texture));
return FALSE;
}
GE (ctx, glBindTexture (GL_TEXTURE_EXTERNAL_OES, 0));
tex_2d->internal_format = internal_format;
tex_2d->gl_target = GL_TEXTURE_EXTERNAL_OES;
return TRUE;
}
CoglTexture2D *
cogl_texture_2d_new_from_egl_image_external (CoglContext *ctx,
int width,
int height,
CoglTexture2DEGLImageExternalAlloc alloc,
gpointer user_data,
GDestroyNotify destroy,
CoglError **error)
{
CoglTextureLoader *loader;
CoglTexture2D *tex_2d;
CoglPixelFormat internal_format = COGL_PIXEL_FORMAT_ANY;
_COGL_RETURN_VAL_IF_FAIL (_cogl_context_get_winsys (ctx)->constraints &
COGL_RENDERER_CONSTRAINT_USES_EGL,
NULL);
_COGL_RETURN_VAL_IF_FAIL (cogl_has_feature (ctx,
COGL_FEATURE_ID_TEXTURE_EGL_IMAGE_EXTERNAL),
NULL);
loader = _cogl_texture_create_loader ();
loader->src_type = COGL_TEXTURE_SOURCE_TYPE_EGL_IMAGE_EXTERNAL;
loader->src.egl_image_external.width = width;
loader->src.egl_image_external.height = height;
loader->src.egl_image_external.alloc = alloc;
loader->src.egl_image_external.format = internal_format;
tex_2d = _cogl_texture_2d_create_base (ctx, width, height,
internal_format, loader);
tex_2d->egl_image_external.user_data = user_data;
tex_2d->egl_image_external.destroy = destroy;
return tex_2d;
}
#endif /* defined (COGL_HAS_EGL_SUPPORT) */
CoglBool CoglBool
_cogl_texture_2d_gl_allocate (CoglTexture *tex, _cogl_texture_2d_gl_allocate (CoglTexture *tex,
CoglError **error) CoglError **error)
@@ -575,8 +462,6 @@ _cogl_texture_2d_gl_allocate (CoglTexture *tex,
#endif #endif
case COGL_TEXTURE_SOURCE_TYPE_GL_FOREIGN: case COGL_TEXTURE_SOURCE_TYPE_GL_FOREIGN:
return allocate_from_gl_foreign (tex_2d, loader, error); return allocate_from_gl_foreign (tex_2d, loader, error);
case COGL_TEXTURE_SOURCE_TYPE_EGL_IMAGE_EXTERNAL:
return allocate_custom_egl_image_external (tex_2d, loader, error);
} }
g_return_val_if_reached (FALSE); g_return_val_if_reached (FALSE);
@@ -772,12 +657,11 @@ _cogl_texture_2d_gl_copy_from_bitmap (CoglTexture2D *tex_2d,
upload_format = cogl_bitmap_get_format (upload_bmp); upload_format = cogl_bitmap_get_format (upload_bmp);
ctx->driver_vtable->pixel_format_to_gl_with_target (ctx, ctx->driver_vtable->pixel_format_to_gl (ctx,
upload_format, upload_format,
_cogl_texture_get_format (tex), NULL, /* internal format */
NULL, /* internal gl format */ &gl_format,
&gl_format, &gl_type);
&gl_type);
/* If this touches the first pixel then we'll update our copy */ /* If this touches the first pixel then we'll update our copy */
if (dst_x == 0 && dst_y == 0 && if (dst_x == 0 && dst_y == 0 &&

View File

@@ -96,12 +96,11 @@ _cogl_driver_pixel_format_from_gl_internal (CoglContext *context,
} }
static CoglPixelFormat static CoglPixelFormat
_cogl_driver_pixel_format_to_gl_with_target (CoglContext *context, _cogl_driver_pixel_format_to_gl (CoglContext *context,
CoglPixelFormat format, CoglPixelFormat format,
CoglPixelFormat target_format, GLenum *out_glintformat,
GLenum *out_glintformat, GLenum *out_glformat,
GLenum *out_glformat, GLenum *out_gltype)
GLenum *out_gltype)
{ {
CoglPixelFormat required_format; CoglPixelFormat required_format;
GLenum glintformat = 0; GLenum glintformat = 0;
@@ -175,16 +174,7 @@ _cogl_driver_pixel_format_to_gl_with_target (CoglContext *context,
case COGL_PIXEL_FORMAT_BGRA_8888: case COGL_PIXEL_FORMAT_BGRA_8888:
case COGL_PIXEL_FORMAT_BGRA_8888_PRE: case COGL_PIXEL_FORMAT_BGRA_8888_PRE:
glintformat = GL_RGBA; glintformat = GL_RGBA;
/* If the driver has texture_swizzle, pretend internal glformat = GL_BGRA;
* and buffer format are the same here, the pixels
* will be flipped through this extension.
*/
if (target_format == format &&
_cogl_has_private_feature
(context, COGL_PRIVATE_FEATURE_TEXTURE_SWIZZLE))
glformat = GL_RGBA;
else
glformat = GL_BGRA;
gltype = GL_UNSIGNED_BYTE; gltype = GL_UNSIGNED_BYTE;
break; break;
@@ -299,20 +289,6 @@ _cogl_driver_pixel_format_to_gl_with_target (CoglContext *context,
return required_format; return required_format;
} }
static CoglPixelFormat
_cogl_driver_pixel_format_to_gl (CoglContext *context,
CoglPixelFormat format,
GLenum *out_glintformat,
GLenum *out_glformat,
GLenum *out_gltype)
{
return _cogl_driver_pixel_format_to_gl_with_target (context,
format, format,
out_glintformat,
out_glformat,
out_gltype);
}
static CoglBool static CoglBool
_cogl_get_gl_version (CoglContext *ctx, _cogl_get_gl_version (CoglContext *ctx,
int *major_out, int *major_out,
@@ -693,7 +669,6 @@ _cogl_driver_gl =
{ {
_cogl_driver_pixel_format_from_gl_internal, _cogl_driver_pixel_format_from_gl_internal,
_cogl_driver_pixel_format_to_gl, _cogl_driver_pixel_format_to_gl,
_cogl_driver_pixel_format_to_gl_with_target,
_cogl_driver_update_features, _cogl_driver_update_features,
_cogl_offscreen_gl_allocate, _cogl_offscreen_gl_allocate,
_cogl_offscreen_gl_free, _cogl_offscreen_gl_free,

View File

@@ -114,18 +114,6 @@ _cogl_texture_driver_gen (CoglContext *ctx,
red_swizzle) ); red_swizzle) );
} }
/* If swizzle extension is available, prefer it to flip bgra buffers to rgba */
if ((internal_format == COGL_PIXEL_FORMAT_BGRA_8888 ||
internal_format == COGL_PIXEL_FORMAT_BGRA_8888_PRE) &&
_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_TEXTURE_SWIZZLE))
{
static const GLint bgra_swizzle[] = { GL_BLUE, GL_GREEN, GL_RED, GL_ALPHA };
GE( ctx, glTexParameteriv (gl_target,
GL_TEXTURE_SWIZZLE_RGBA,
bgra_swizzle) );
}
return tex; return tex;
} }

View File

@@ -67,12 +67,11 @@ _cogl_driver_pixel_format_from_gl_internal (CoglContext *context,
} }
static CoglPixelFormat static CoglPixelFormat
_cogl_driver_pixel_format_to_gl_with_target (CoglContext *context, _cogl_driver_pixel_format_to_gl (CoglContext *context,
CoglPixelFormat format, CoglPixelFormat format,
CoglPixelFormat target_format, GLenum *out_glintformat,
GLenum *out_glintformat, GLenum *out_glformat,
GLenum *out_glformat, GLenum *out_gltype)
GLenum *out_gltype)
{ {
CoglPixelFormat required_format; CoglPixelFormat required_format;
GLenum glintformat; GLenum glintformat;
@@ -220,20 +219,6 @@ _cogl_driver_pixel_format_to_gl_with_target (CoglContext *context,
return required_format; return required_format;
} }
static CoglPixelFormat
_cogl_driver_pixel_format_to_gl (CoglContext *context,
CoglPixelFormat format,
GLenum *out_glintformat,
GLenum *out_glformat,
GLenum *out_gltype)
{
return _cogl_driver_pixel_format_to_gl_with_target (context,
format, format,
out_glintformat,
out_glformat,
out_gltype);
}
static CoglBool static CoglBool
_cogl_get_gl_version (CoglContext *ctx, _cogl_get_gl_version (CoglContext *ctx,
int *major_out, int *major_out,
@@ -472,7 +457,6 @@ _cogl_driver_gles =
{ {
_cogl_driver_pixel_format_from_gl_internal, _cogl_driver_pixel_format_from_gl_internal,
_cogl_driver_pixel_format_to_gl, _cogl_driver_pixel_format_to_gl,
_cogl_driver_pixel_format_to_gl_with_target,
_cogl_driver_update_features, _cogl_driver_update_features,
_cogl_offscreen_gl_allocate, _cogl_offscreen_gl_allocate,
_cogl_offscreen_gl_free, _cogl_offscreen_gl_free,

View File

@@ -61,7 +61,6 @@ _cogl_driver_nop =
{ {
NULL, /* pixel_format_from_gl_internal */ NULL, /* pixel_format_from_gl_internal */
NULL, /* pixel_format_to_gl */ NULL, /* pixel_format_to_gl */
NULL, /* pixel_format_to_gl_with_target */
_cogl_driver_update_features, _cogl_driver_update_features,
_cogl_offscreen_nop_allocate, _cogl_offscreen_nop_allocate,
_cogl_offscreen_nop_free, _cogl_offscreen_nop_free,

View File

@@ -2,12 +2,12 @@ prefix=@prefix@
exec_prefix=@exec_prefix@ exec_prefix=@exec_prefix@
libdir=@libdir@/mutter libdir=@libdir@/mutter
includedir=@includedir@/mutter includedir=@includedir@/mutter
apiversion=@LIBMUTTER_API_VERSION@ apiversion=1.0
requires=@COGL_PKG_REQUIRES@ requires=@COGL_PKG_REQUIRES@
Name: Cogl Name: Cogl
Description: An object oriented GL/GLES Abstraction/Utility Layer Description: An object oriented GL/GLES Abstraction/Utility Layer
Version: @MUTTER_VERSION@ Version: @COGL_1_VERSION@
Libs: -L${libdir} -lmutter-cogl-@LIBMUTTER_API_VERSION@ Libs: -L${libdir} -lmutter-cogl
Cflags: -I${includedir}/cogl Cflags: -I${includedir}/cogl
Requires: ${requires} Requires: ${requires}

View File

@@ -48,7 +48,6 @@
#include "cogl-texture-pixmap-x11-private.h" #include "cogl-texture-pixmap-x11-private.h"
#include "cogl-texture-2d-private.h" #include "cogl-texture-2d-private.h"
#include "cogl-texture-2d.h"
#include "cogl-error-private.h" #include "cogl-error-private.h"
#include "cogl-poll-private.h" #include "cogl-poll-private.h"
@@ -262,39 +261,6 @@ _cogl_winsys_renderer_disconnect (CoglRenderer *renderer)
g_slice_free (CoglRendererEGL, egl_renderer); g_slice_free (CoglRendererEGL, egl_renderer);
} }
static EGLDisplay
_cogl_winsys_egl_get_display (void *native)
{
EGLDisplay dpy = NULL;
const char *client_exts = eglQueryString (NULL, EGL_EXTENSIONS);
if (g_strstr_len (client_exts, -1, "EGL_KHR_platform_base"))
{
PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display =
(void *) eglGetProcAddress ("eglGetPlatformDisplay");
if (get_platform_display)
dpy = get_platform_display (EGL_PLATFORM_X11_KHR, native, NULL);
if (dpy)
return dpy;
}
if (g_strstr_len (client_exts, -1, "EGL_EXT_platform_base"))
{
PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display =
(void *) eglGetProcAddress ("eglGetPlatformDisplayEXT");
if (get_platform_display)
dpy = get_platform_display (EGL_PLATFORM_X11_KHR, native, NULL);
if (dpy)
return dpy;
}
return eglGetDisplay ((EGLNativeDisplayType) native);
}
static CoglBool static CoglBool
_cogl_winsys_renderer_connect (CoglRenderer *renderer, _cogl_winsys_renderer_connect (CoglRenderer *renderer,
CoglError **error) CoglError **error)
@@ -311,7 +277,8 @@ _cogl_winsys_renderer_connect (CoglRenderer *renderer,
if (!_cogl_xlib_renderer_connect (renderer, error)) if (!_cogl_xlib_renderer_connect (renderer, error))
goto error; goto error;
egl_renderer->edpy = _cogl_winsys_egl_get_display (xlib_renderer->xdpy); egl_renderer->edpy =
eglGetDisplay ((EGLNativeDisplayType) xlib_renderer->xdpy);
if (!_cogl_winsys_egl_renderer_connect_common (renderer, error)) if (!_cogl_winsys_egl_renderer_connect_common (renderer, error))
goto error; goto error;
@@ -323,19 +290,6 @@ error:
return FALSE; return FALSE;
} }
static int
_cogl_winsys_egl_add_config_attributes (CoglDisplay *display,
CoglFramebufferConfig *config,
EGLint *attributes)
{
int i = 0;
attributes[i++] = EGL_SURFACE_TYPE;
attributes[i++] = EGL_WINDOW_BIT;
return i;
}
static CoglBool static CoglBool
_cogl_winsys_egl_display_setup (CoglDisplay *display, _cogl_winsys_egl_display_setup (CoglDisplay *display,
CoglError **error) CoglError **error)
@@ -774,12 +728,12 @@ _cogl_winsys_texture_pixmap_x11_create (CoglTexturePixmapX11 *tex_pixmap)
COGL_PIXEL_FORMAT_RGB_888); COGL_PIXEL_FORMAT_RGB_888);
egl_tex_pixmap->texture = COGL_TEXTURE ( egl_tex_pixmap->texture = COGL_TEXTURE (
cogl_egl_texture_2d_new_from_image (ctx, _cogl_egl_texture_2d_new_from_image (ctx,
tex->width, tex->width,
tex->height, tex->height,
texture_format, texture_format,
egl_tex_pixmap->image, egl_tex_pixmap->image,
NULL)); NULL));
tex_pixmap->winsys = egl_tex_pixmap; tex_pixmap->winsys = egl_tex_pixmap;
@@ -840,7 +794,6 @@ _cogl_winsys_texture_pixmap_x11_get_texture (CoglTexturePixmapX11 *tex_pixmap,
static const CoglWinsysEGLVtable static const CoglWinsysEGLVtable
_cogl_winsys_egl_vtable = _cogl_winsys_egl_vtable =
{ {
.add_config_attributes = _cogl_winsys_egl_add_config_attributes,
.display_setup = _cogl_winsys_egl_display_setup, .display_setup = _cogl_winsys_egl_display_setup,
.display_destroy = _cogl_winsys_egl_display_destroy, .display_destroy = _cogl_winsys_egl_display_destroy,
.context_created = _cogl_winsys_egl_context_created, .context_created = _cogl_winsys_egl_context_created,

View File

@@ -233,11 +233,11 @@ egl_attributes_from_framebuffer_config (CoglDisplay *display,
CoglRendererEGL *egl_renderer = renderer->winsys; CoglRendererEGL *egl_renderer = renderer->winsys;
int i = 0; int i = 0;
/* Let the platform add attributes first, including setting the /* Let the platform add attributes first */
* EGL_SURFACE_TYPE */ if (egl_renderer->platform_vtable->add_config_attributes)
i = egl_renderer->platform_vtable->add_config_attributes (display, i = egl_renderer->platform_vtable->add_config_attributes (display,
config, config,
attributes); attributes);
if (config->need_stencil) if (config->need_stencil)
{ {
@@ -269,6 +269,9 @@ egl_attributes_from_framebuffer_config (CoglDisplay *display,
EGL_OPENGL_ES_BIT : EGL_OPENGL_ES_BIT :
EGL_OPENGL_ES2_BIT); EGL_OPENGL_ES2_BIT);
attributes[i++] = EGL_SURFACE_TYPE;
attributes[i++] = EGL_WINDOW_BIT;
if (config->samples_per_pixel) if (config->samples_per_pixel)
{ {
attributes[i++] = EGL_SAMPLE_BUFFERS; attributes[i++] = EGL_SAMPLE_BUFFERS;
@@ -1025,13 +1028,6 @@ _cogl_egl_create_image (CoglContext *ctx,
if (target == EGL_NATIVE_PIXMAP_KHR) if (target == EGL_NATIVE_PIXMAP_KHR)
egl_ctx = EGL_NO_CONTEXT; egl_ctx = EGL_NO_CONTEXT;
else else
#endif
#ifdef COGL_HAS_WAYLAND_EGL_SERVER_SUPPORT
/* The WL_bind_wayland_display spec states that EGL_NO_CONTEXT is to be used
* in conjunction with the EGL_WAYLAND_BUFFER_WL target */
if (target == EGL_WAYLAND_BUFFER_WL)
egl_ctx = EGL_NO_CONTEXT;
else
#endif #endif
egl_ctx = egl_display->egl_context; egl_ctx = egl_display->egl_context;

View File

@@ -65,16 +65,12 @@
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/time.h> #include <sys/time.h>
#include <errno.h>
#include <fcntl.h> #include <fcntl.h>
#include <time.h> #include <time.h>
#include <unistd.h>
#include <GL/glx.h> #include <GL/glx.h>
#include <X11/Xlib.h> #include <X11/Xlib.h>
#include <glib.h>
/* This is a relatively new extension */ /* This is a relatively new extension */
#ifndef GLX_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV #ifndef GLX_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV
#define GLX_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x20F7 #define GLX_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x20F7
@@ -104,14 +100,6 @@ typedef struct _CoglOnscreenGLX
CoglBool pending_sync_notify; CoglBool pending_sync_notify;
CoglBool pending_complete_notify; CoglBool pending_complete_notify;
CoglBool pending_resize_notify; CoglBool pending_resize_notify;
GThread *swap_wait_thread;
GQueue *swap_wait_queue;
GCond swap_wait_cond;
GMutex swap_wait_mutex;
int swap_wait_pipe[2];
GLXContext swap_wait_context;
CoglBool closing_down;
} CoglOnscreenGLX; } CoglOnscreenGLX;
typedef struct _CoglPixmapTextureEyeGLX typedef struct _CoglPixmapTextureEyeGLX
@@ -204,15 +192,6 @@ find_onscreen_for_xid (CoglContext *context, uint32_t xid)
return NULL; return NULL;
} }
static int64_t
get_monotonic_time_ns (void)
{
struct timespec ts;
clock_gettime (CLOCK_MONOTONIC, &ts);
return ts.tv_sec * G_GINT64_CONSTANT (1000000000) + ts.tv_nsec;
}
static void static void
ensure_ust_type (CoglRenderer *renderer, ensure_ust_type (CoglRenderer *renderer,
GLXDrawable drawable) GLXDrawable drawable)
@@ -223,6 +202,7 @@ ensure_ust_type (CoglRenderer *renderer,
int64_t msc; int64_t msc;
int64_t sbc; int64_t sbc;
struct timeval tv; struct timeval tv;
struct timespec ts;
int64_t current_system_time; int64_t current_system_time;
int64_t current_monotonic_time; int64_t current_monotonic_time;
@@ -252,7 +232,9 @@ ensure_ust_type (CoglRenderer *renderer,
/* This is the time source that the newer (fixed) linux drm /* This is the time source that the newer (fixed) linux drm
* drivers use (Linux >= 3.8) */ * drivers use (Linux >= 3.8) */
current_monotonic_time = get_monotonic_time_ns () / 1000; clock_gettime (CLOCK_MONOTONIC, &ts);
current_monotonic_time = (ts.tv_sec * G_GINT64_CONSTANT (1000000)) +
(ts.tv_nsec / G_GINT64_CONSTANT (1000));
if (current_monotonic_time > ust - 1000000 && if (current_monotonic_time > ust - 1000000 &&
current_monotonic_time < ust + 1000000) current_monotonic_time < ust + 1000000)
@@ -308,9 +290,6 @@ _cogl_winsys_get_clock_time (CoglContext *context)
{ {
CoglGLXRenderer *glx_renderer = context->display->renderer->winsys; CoglGLXRenderer *glx_renderer = context->display->renderer->winsys;
if (!glx_renderer->glXWaitForMsc)
return get_monotonic_time_ns ();
/* We don't call ensure_ust_type() because we don't have a drawable /* We don't call ensure_ust_type() because we don't have a drawable
* to work with. cogl_get_clock_time() is documented to only work * to work with. cogl_get_clock_time() is documented to only work
* once a valid, non-zero, timestamp has been retrieved from Cogl. * once a valid, non-zero, timestamp has been retrieved from Cogl.
@@ -331,7 +310,10 @@ _cogl_winsys_get_clock_time (CoglContext *context)
} }
case COGL_GLX_UST_IS_MONOTONIC_TIME: case COGL_GLX_UST_IS_MONOTONIC_TIME:
{ {
return get_monotonic_time_ns (); struct timespec ts;
clock_gettime (CLOCK_MONOTONIC, &ts);
return ts.tv_sec * G_GINT64_CONSTANT (1000000000) + ts.tv_nsec;
} }
} }
@@ -730,25 +712,23 @@ update_base_winsys_features (CoglRenderer *renderer)
g_strfreev (split_extensions); g_strfreev (split_extensions);
/* The GLX_SGI_video_sync spec explicitly states this extension /* Note: the GLX_SGI_video_sync spec explicitly states this extension
* only works for direct contexts; we don't know per-renderer * only works for direct contexts. */
* if the context is direct or not, so we turn off the feature if (!glx_renderer->is_direct)
* flag; we still use the extension within this file looking {
* instead at glx_display->have_vblank_counter. glx_renderer->glXGetVideoSync = NULL;
*/ glx_renderer->glXWaitVideoSync = NULL;
COGL_FLAGS_SET (glx_renderer->base_winsys_features, COGL_FLAGS_SET (glx_renderer->base_winsys_features,
COGL_WINSYS_FEATURE_VBLANK_COUNTER, COGL_WINSYS_FEATURE_VBLANK_COUNTER,
FALSE); FALSE);
}
COGL_FLAGS_SET (glx_renderer->base_winsys_features, COGL_FLAGS_SET (glx_renderer->base_winsys_features,
COGL_WINSYS_FEATURE_MULTIPLE_ONSCREEN, COGL_WINSYS_FEATURE_MULTIPLE_ONSCREEN,
TRUE); TRUE);
/* Because of the direct-context dependency, the VBLANK_WAIT feature if (glx_renderer->glXWaitVideoSync ||
* doesn't reflect the presence of GLX_SGI_video_sync. glx_renderer->glXWaitForMsc)
*/
if (glx_renderer->glXWaitForMsc)
COGL_FLAGS_SET (glx_renderer->base_winsys_features, COGL_FLAGS_SET (glx_renderer->base_winsys_features,
COGL_WINSYS_FEATURE_VBLANK_WAIT, COGL_WINSYS_FEATURE_VBLANK_WAIT,
TRUE); TRUE);
@@ -881,7 +861,7 @@ update_winsys_features (CoglContext *context, CoglError **error)
* by the SwapInterval so we have to throttle swap_region requests * by the SwapInterval so we have to throttle swap_region requests
* manually... */ * manually... */
if (_cogl_winsys_has_feature (COGL_WINSYS_FEATURE_SWAP_REGION) && if (_cogl_winsys_has_feature (COGL_WINSYS_FEATURE_SWAP_REGION) &&
(glx_display->have_vblank_counter || glx_display->can_vblank_wait)) _cogl_winsys_has_feature (COGL_WINSYS_FEATURE_VBLANK_WAIT))
COGL_FLAGS_SET (context->winsys_features, COGL_FLAGS_SET (context->winsys_features,
COGL_WINSYS_FEATURE_SWAP_REGION_THROTTLE, TRUE); COGL_WINSYS_FEATURE_SWAP_REGION_THROTTLE, TRUE);
@@ -897,29 +877,6 @@ update_winsys_features (CoglContext *context, CoglError **error)
COGL_FEATURE_ID_PRESENTATION_TIME, COGL_FEATURE_ID_PRESENTATION_TIME,
TRUE); TRUE);
} }
else
{
CoglGpuInfo *info = &context->gpu;
if (glx_display->have_vblank_counter &&
context->display->renderer->xlib_enable_threaded_swap_wait &&
info->vendor == COGL_GPU_INFO_VENDOR_NVIDIA)
{
COGL_FLAGS_SET (context->winsys_features,
COGL_WINSYS_FEATURE_SYNC_AND_COMPLETE_EVENT, TRUE);
COGL_FLAGS_SET (context->winsys_features,
COGL_WINSYS_FEATURE_SWAP_BUFFERS_EVENT, TRUE);
/* TODO: remove this deprecated feature */
COGL_FLAGS_SET (context->features,
COGL_FEATURE_ID_SWAP_BUFFERS_EVENT,
TRUE);
COGL_FLAGS_SET (context->features,
COGL_FEATURE_ID_PRESENTATION_TIME,
TRUE);
COGL_FLAGS_SET (context->private_features,
COGL_PRIVATE_FEATURE_THREADED_SWAP_WAIT,
TRUE);
}
}
/* We'll manually handle queueing dirty events in response to /* We'll manually handle queueing dirty events in response to
* Expose events from X */ * Expose events from X */
@@ -1182,13 +1139,11 @@ create_context (CoglDisplay *display, CoglError **error)
return FALSE; return FALSE;
} }
glx_display->is_direct = glx_renderer->is_direct =
glx_renderer->glXIsDirect (xlib_renderer->xdpy, glx_display->glx_context); glx_renderer->glXIsDirect (xlib_renderer->xdpy, glx_display->glx_context);
glx_display->have_vblank_counter = glx_display->is_direct && glx_renderer->glXWaitVideoSync;
glx_display->can_vblank_wait = glx_renderer->glXWaitForMsc || glx_display->have_vblank_counter;
COGL_NOTE (WINSYS, "Setting %s context", COGL_NOTE (WINSYS, "Setting %s context",
glx_display->is_direct ? "direct" : "indirect"); glx_renderer->is_direct ? "direct" : "indirect");
/* XXX: GLX doesn't let us make a context current without a window /* XXX: GLX doesn't let us make a context current without a window
* so we create a dummy window that we can use while no CoglOnscreen * so we create a dummy window that we can use while no CoglOnscreen
@@ -1516,8 +1471,7 @@ _cogl_winsys_onscreen_init (CoglOnscreen *onscreen,
} }
#ifdef GLX_INTEL_swap_event #ifdef GLX_INTEL_swap_event
if (_cogl_winsys_has_feature (COGL_WINSYS_FEATURE_SYNC_AND_COMPLETE_EVENT) && if (_cogl_winsys_has_feature (COGL_WINSYS_FEATURE_SYNC_AND_COMPLETE_EVENT))
!_cogl_has_private_feature (context, COGL_PRIVATE_FEATURE_THREADED_SWAP_WAIT))
{ {
GLXDrawable drawable = GLXDrawable drawable =
glx_onscreen->glxwin ? glx_onscreen->glxwin : xlib_onscreen->xwin; glx_onscreen->glxwin ? glx_onscreen->glxwin : xlib_onscreen->xwin;
@@ -1560,31 +1514,6 @@ _cogl_winsys_onscreen_deinit (CoglOnscreen *onscreen)
xlib_onscreen->output = NULL; xlib_onscreen->output = NULL;
} }
if (glx_onscreen->swap_wait_thread)
{
g_mutex_lock (&glx_onscreen->swap_wait_mutex);
glx_onscreen->closing_down = TRUE;
g_cond_signal (&glx_onscreen->swap_wait_cond);
g_mutex_unlock (&glx_onscreen->swap_wait_mutex);
g_thread_join (glx_onscreen->swap_wait_thread);
glx_onscreen->swap_wait_thread = NULL;
g_cond_clear (&glx_onscreen->swap_wait_cond);
g_mutex_clear (&glx_onscreen->swap_wait_mutex);
g_queue_free (glx_onscreen->swap_wait_queue);
glx_onscreen->swap_wait_queue = NULL;
_cogl_poll_renderer_remove_fd (context->display->renderer,
glx_onscreen->swap_wait_pipe[0]);
close (glx_onscreen->swap_wait_pipe[0]);
close (glx_onscreen->swap_wait_pipe[1]);
glx_renderer->glXDestroyContext (xlib_renderer->xdpy,
glx_onscreen->swap_wait_context);
}
_cogl_xlib_renderer_trap_errors (context->display->renderer, &old_state); _cogl_xlib_renderer_trap_errors (context->display->renderer, &old_state);
drawable = drawable =
@@ -1726,13 +1655,12 @@ _cogl_winsys_wait_for_vblank (CoglOnscreen *onscreen)
CoglContext *ctx = framebuffer->context; CoglContext *ctx = framebuffer->context;
CoglGLXRenderer *glx_renderer; CoglGLXRenderer *glx_renderer;
CoglXlibRenderer *xlib_renderer; CoglXlibRenderer *xlib_renderer;
CoglGLXDisplay *glx_display;
glx_renderer = ctx->display->renderer->winsys; glx_renderer = ctx->display->renderer->winsys;
xlib_renderer = _cogl_xlib_renderer_get_data (ctx->display->renderer); xlib_renderer = _cogl_xlib_renderer_get_data (ctx->display->renderer);
glx_display = ctx->display->winsys;
if (glx_display->can_vblank_wait) if (glx_renderer->glXWaitForMsc ||
glx_renderer->glXGetVideoSync)
{ {
CoglFrameInfo *info = g_queue_peek_tail (&onscreen->pending_frame_infos); CoglFrameInfo *info = g_queue_peek_tail (&onscreen->pending_frame_infos);
@@ -1754,13 +1682,16 @@ _cogl_winsys_wait_for_vblank (CoglOnscreen *onscreen)
else else
{ {
uint32_t current_count; uint32_t current_count;
struct timespec ts;
glx_renderer->glXGetVideoSync (&current_count); glx_renderer->glXGetVideoSync (&current_count);
glx_renderer->glXWaitVideoSync (2, glx_renderer->glXWaitVideoSync (2,
(current_count + 1) % 2, (current_count + 1) % 2,
&current_count); &current_count);
info->presentation_time = get_monotonic_time_ns (); clock_gettime (CLOCK_MONOTONIC, &ts);
info->presentation_time =
ts.tv_sec * G_GINT64_CONSTANT (1000000000) + ts.tv_nsec;
} }
} }
} }
@@ -1818,199 +1749,6 @@ set_frame_info_output (CoglOnscreen *onscreen,
} }
} }
static gpointer
threaded_swap_wait (gpointer data)
{
CoglOnscreen *onscreen = data;
CoglOnscreenGLX *glx_onscreen = onscreen->winsys;
CoglFramebuffer *framebuffer = COGL_FRAMEBUFFER (onscreen);
CoglContext *context = framebuffer->context;
CoglDisplay *display = context->display;
CoglXlibRenderer *xlib_renderer = _cogl_xlib_renderer_get_data (display->renderer);
CoglGLXDisplay *glx_display = display->winsys;
CoglGLXRenderer *glx_renderer = display->renderer->winsys;
GLXDrawable dummy_drawable;
if (glx_display->dummy_glxwin)
dummy_drawable = glx_display->dummy_glxwin;
else
dummy_drawable = glx_display->dummy_xwin;
glx_renderer->glXMakeContextCurrent (xlib_renderer->xdpy,
dummy_drawable,
dummy_drawable,
glx_onscreen->swap_wait_context);
g_mutex_lock (&glx_onscreen->swap_wait_mutex);
while (TRUE)
{
gpointer queue_element;
uint32_t vblank_counter;
while (!glx_onscreen->closing_down && glx_onscreen->swap_wait_queue->length == 0)
g_cond_wait (&glx_onscreen->swap_wait_cond, &glx_onscreen->swap_wait_mutex);
if (glx_onscreen->closing_down)
break;
queue_element = g_queue_pop_tail (glx_onscreen->swap_wait_queue);
vblank_counter = GPOINTER_TO_UINT(queue_element);
g_mutex_unlock (&glx_onscreen->swap_wait_mutex);
glx_renderer->glXWaitVideoSync (2,
(vblank_counter + 1) % 2,
&vblank_counter);
g_mutex_lock (&glx_onscreen->swap_wait_mutex);
if (!glx_onscreen->closing_down)
{
int bytes_written = 0;
union {
char bytes[8];
int64_t presentation_time;
} u;
u.presentation_time = get_monotonic_time_ns ();
while (bytes_written < 8)
{
int res = write (glx_onscreen->swap_wait_pipe[1], u.bytes + bytes_written, 8 - bytes_written);
if (res == -1)
{
if (errno != EINTR)
g_error ("Error writing to swap notification pipe: %s\n",
g_strerror (errno));
}
else
{
bytes_written += res;
}
}
}
}
g_mutex_unlock (&glx_onscreen->swap_wait_mutex);
glx_renderer->glXMakeContextCurrent (xlib_renderer->xdpy,
None,
None,
NULL);
return NULL;
}
static int64_t
threaded_swap_wait_pipe_prepare (void *user_data)
{
return -1;
}
static void
threaded_swap_wait_pipe_dispatch (void *user_data, int revents)
{
CoglOnscreen *onscreen = user_data;
CoglOnscreenGLX *glx_onscreen = onscreen->winsys;
CoglFrameInfo *info;
if ((revents & COGL_POLL_FD_EVENT_IN))
{
int bytes_read = 0;
union {
char bytes[8];
int64_t presentation_time;
} u;
while (bytes_read < 8)
{
int res = read (glx_onscreen->swap_wait_pipe[0], u.bytes + bytes_read, 8 - bytes_read);
if (res == -1)
{
if (errno != EINTR)
g_error ("Error reading from swap notification pipe: %s\n",
g_strerror (errno));
}
else
{
bytes_read += res;
}
}
set_sync_pending (onscreen);
set_complete_pending (onscreen);
info = g_queue_peek_head (&onscreen->pending_frame_infos);
info->presentation_time = u.presentation_time;
}
}
static void
start_threaded_swap_wait (CoglOnscreen *onscreen,
uint32_t vblank_counter)
{
CoglOnscreenGLX *glx_onscreen = onscreen->winsys;
CoglFramebuffer *framebuffer = COGL_FRAMEBUFFER (onscreen);
CoglContext *context = framebuffer->context;
if (glx_onscreen->swap_wait_thread == NULL)
{
CoglDisplay *display = context->display;
CoglGLXRenderer *glx_renderer = display->renderer->winsys;
CoglGLXDisplay *glx_display = display->winsys;
CoglOnscreenXlib *xlib_onscreen = onscreen->winsys;
CoglXlibRenderer *xlib_renderer =
_cogl_xlib_renderer_get_data (display->renderer);
GLXDrawable drawable =
glx_onscreen->glxwin ? glx_onscreen->glxwin : xlib_onscreen->xwin;
int i;
ensure_ust_type (display->renderer, drawable);
if ((pipe (glx_onscreen->swap_wait_pipe) == -1))
g_error ("Couldn't create pipe for swap notification: %s\n",
g_strerror (errno));
for (i = 0; i < 2; i++)
{
if (fcntl(glx_onscreen->swap_wait_pipe[i], F_SETFD,
fcntl(glx_onscreen->swap_wait_pipe[i], F_GETFD, 0) | FD_CLOEXEC) == -1)
g_error ("Couldn't set swap notification pipe CLOEXEC: %s\n",
g_strerror (errno));
}
_cogl_poll_renderer_add_fd (display->renderer,
glx_onscreen->swap_wait_pipe[0],
COGL_POLL_FD_EVENT_IN,
threaded_swap_wait_pipe_prepare,
threaded_swap_wait_pipe_dispatch,
onscreen);
glx_onscreen->swap_wait_queue = g_queue_new ();
g_mutex_init (&glx_onscreen->swap_wait_mutex);
g_cond_init (&glx_onscreen->swap_wait_cond);
glx_onscreen->swap_wait_context =
glx_renderer->glXCreateNewContext (xlib_renderer->xdpy,
glx_display->fbconfig,
GLX_RGBA_TYPE,
glx_display->glx_context,
True);
glx_onscreen->swap_wait_thread = g_thread_new ("cogl_glx_swap_wait",
threaded_swap_wait,
onscreen);
}
g_mutex_lock (&glx_onscreen->swap_wait_mutex);
g_queue_push_head (glx_onscreen->swap_wait_queue, GUINT_TO_POINTER(vblank_counter));
g_cond_signal (&glx_onscreen->swap_wait_cond);
g_mutex_unlock (&glx_onscreen->swap_wait_mutex);
}
static void static void
_cogl_winsys_onscreen_swap_region (CoglOnscreen *onscreen, _cogl_winsys_onscreen_swap_region (CoglOnscreen *onscreen,
const int *user_rectangles, const int *user_rectangles,
@@ -2021,7 +1759,6 @@ _cogl_winsys_onscreen_swap_region (CoglOnscreen *onscreen,
CoglXlibRenderer *xlib_renderer = CoglXlibRenderer *xlib_renderer =
_cogl_xlib_renderer_get_data (context->display->renderer); _cogl_xlib_renderer_get_data (context->display->renderer);
CoglGLXRenderer *glx_renderer = context->display->renderer->winsys; CoglGLXRenderer *glx_renderer = context->display->renderer->winsys;
CoglGLXDisplay *glx_display = context->display->winsys;
CoglOnscreenXlib *xlib_onscreen = onscreen->winsys; CoglOnscreenXlib *xlib_onscreen = onscreen->winsys;
CoglOnscreenGLX *glx_onscreen = onscreen->winsys; CoglOnscreenGLX *glx_onscreen = onscreen->winsys;
GLXDrawable drawable = GLXDrawable drawable =
@@ -2078,8 +1815,9 @@ _cogl_winsys_onscreen_swap_region (CoglOnscreen *onscreen,
if (framebuffer->config.swap_throttled) if (framebuffer->config.swap_throttled)
{ {
have_counter = glx_display->have_vblank_counter; have_counter =
can_wait = glx_display->can_vblank_wait; _cogl_winsys_has_feature (COGL_WINSYS_FEATURE_VBLANK_COUNTER);
can_wait = _cogl_winsys_has_feature (COGL_WINSYS_FEATURE_VBLANK_WAIT);
} }
else else
{ {
@@ -2236,7 +1974,6 @@ _cogl_winsys_onscreen_swap_buffers_with_damage (CoglOnscreen *onscreen,
CoglXlibRenderer *xlib_renderer = CoglXlibRenderer *xlib_renderer =
_cogl_xlib_renderer_get_data (context->display->renderer); _cogl_xlib_renderer_get_data (context->display->renderer);
CoglGLXRenderer *glx_renderer = context->display->renderer->winsys; CoglGLXRenderer *glx_renderer = context->display->renderer->winsys;
CoglGLXDisplay *glx_display = context->display->winsys;
CoglOnscreenXlib *xlib_onscreen = onscreen->winsys; CoglOnscreenXlib *xlib_onscreen = onscreen->winsys;
CoglOnscreenGLX *glx_onscreen = onscreen->winsys; CoglOnscreenGLX *glx_onscreen = onscreen->winsys;
CoglBool have_counter; CoglBool have_counter;
@@ -2254,38 +1991,21 @@ _cogl_winsys_onscreen_swap_buffers_with_damage (CoglOnscreen *onscreen,
if (framebuffer->config.swap_throttled) if (framebuffer->config.swap_throttled)
{ {
have_counter = glx_display->have_vblank_counter; uint32_t end_frame_vsync_counter = 0;
if (glx_renderer->glXSwapInterval) have_counter =
_cogl_winsys_has_feature (COGL_WINSYS_FEATURE_VBLANK_COUNTER);
/* If the swap_region API is also being used then we need to track
* the vsync counter for each swap request so we can manually
* throttle swap_region requests. */
if (have_counter)
end_frame_vsync_counter = _cogl_winsys_get_vsync_counter (context);
if (!glx_renderer->glXSwapInterval)
{ {
if (_cogl_has_private_feature (context, COGL_PRIVATE_FEATURE_THREADED_SWAP_WAIT)) CoglBool can_wait =
{ _cogl_winsys_has_feature (COGL_WINSYS_FEATURE_VBLANK_WAIT);
/* If we didn't wait for the GPU here, then it's easy to get the case
* where there is a VBlank between the point where we get the vsync counter
* and the point where the GPU is ready to actually perform the glXSwapBuffers(),
* and the swap wait terminates at the first VBlank rather than the one
* where the swap buffers happens. Calling glFinish() here makes this a
* rare race since the GPU is already ready to swap when we call glXSwapBuffers().
* The glFinish() also prevents any serious damage if the rare race happens,
* since it will wait for the preceding glXSwapBuffers() and prevent us from
* getting premanently ahead. (For NVIDIA drivers, glFinish() after glXSwapBuffers()
* waits for the buffer swap to happen.)
*/
_cogl_winsys_wait_for_gpu (onscreen);
start_threaded_swap_wait (onscreen, _cogl_winsys_get_vsync_counter (context));
}
}
else
{
CoglBool can_wait = have_counter || glx_display->can_vblank_wait;
uint32_t end_frame_vsync_counter = 0;
/* If the swap_region API is also being used then we need to track
* the vsync counter for each swap request so we can manually
* throttle swap_region requests. */
if (have_counter)
end_frame_vsync_counter = _cogl_winsys_get_vsync_counter (context);
/* If we are going to wait for VBLANK manually, we not only /* If we are going to wait for VBLANK manually, we not only
* need to flush out pending drawing to the GPU before we * need to flush out pending drawing to the GPU before we

View File

@@ -83,16 +83,6 @@ AC_CONFIG_HEADERS(cogl-config.h)
AC_CONFIG_HEADERS(cogl-mutter-config.h) AC_CONFIG_HEADERS(cogl-mutter-config.h)
AC_GNU_SOURCE AC_GNU_SOURCE
dnl ================================================================
dnl Check that we are configured by mutter
dnl ================================================================
AC_ARG_VAR([MUTTER_VERSION])
AC_ARG_VAR([LIBMUTTER_API_VERSION])
AS_IF([test "x$MUTTER_VERSION" = "x"],
[AC_MSG_ERROR([Clutter can only be configured by mutter])],)
dnl ================================================================ dnl ================================================================
dnl Required versions for dependencies dnl Required versions for dependencies
dnl ================================================================ dnl ================================================================
@@ -955,16 +945,16 @@ AC_OUTPUT(
Makefile Makefile
test-fixtures/Makefile test-fixtures/Makefile
cogl/Makefile cogl/Makefile
cogl/mutter-cogl-$LIBMUTTER_API_VERSION.pc:cogl/mutter-cogl.pc.in cogl/mutter-cogl-1.0.pc
cogl/cogl-defines.h cogl/cogl-defines.h
cogl/cogl-gl-header.h cogl/cogl-gl-header.h
cogl/cogl-egl-defines.h cogl/cogl-egl-defines.h
cogl-pango/Makefile cogl-pango/Makefile
cogl-pango/mutter-cogl-pango-$LIBMUTTER_API_VERSION.pc:cogl-pango/mutter-cogl-pango.pc.in cogl-pango/mutter-cogl-pango-1.0.pc
cogl-path/Makefile cogl-path/Makefile
cogl-path/mutter-cogl-path-$LIBMUTTER_API_VERSION.pc:cogl-path/mutter-cogl-path.pc.in cogl-path/mutter-cogl-path-1.0.pc
cogl-gles2/Makefile cogl-gles2/Makefile
cogl-gles2/mutter-cogl-gles2-$LIBMUTTER_API_VERSION.pc:cogl-gles2/mutter-cogl-gles2.pc.in cogl-gles2/mutter-cogl-gles2-1.0.pc
tests/Makefile tests/Makefile
tests/config.env tests/config.env
tests/conform/Makefile tests/conform/Makefile

View File

@@ -131,10 +131,10 @@ AM_CPPFLAGS += \
test_conformance_CFLAGS = -g3 -O0 $(COGL_DEP_CFLAGS) $(COGL_EXTRA_CFLAGS) -Wno-error=maybe-uninitialized -Wno-error=nested-externs -Wno-error=missing-prototypes test_conformance_CFLAGS = -g3 -O0 $(COGL_DEP_CFLAGS) $(COGL_EXTRA_CFLAGS) -Wno-error=maybe-uninitialized -Wno-error=nested-externs -Wno-error=missing-prototypes
test_conformance_LDADD = \ test_conformance_LDADD = \
$(COGL_DEP_LIBS) \ $(COGL_DEP_LIBS) \
$(top_builddir)/cogl/libmutter-cogl-$(LIBMUTTER_API_VERSION).la \ $(top_builddir)/cogl/libmutter-cogl.la \
$(LIBM) $(LIBM)
if BUILD_COGL_PATH if BUILD_COGL_PATH
test_conformance_LDADD += $(top_builddir)/cogl-path/libmutter-cogl-path-$(LIBMUTTER_API_VERSION).la test_conformance_LDADD += $(top_builddir)/cogl-path/libmutter-cogl-path.la
endif endif
test_conformance_LDFLAGS = -export-dynamic test_conformance_LDFLAGS = -export-dynamic

View File

@@ -2,7 +2,6 @@ NULL =
AM_CPPFLAGS = \ AM_CPPFLAGS = \
-I$(top_srcdir) \ -I$(top_srcdir) \
-I$(top_builddir)/cogl \
-DCOGL_DISABLE_DEPRECATED -DCOGL_DISABLE_DEPRECATED
test_conformance_CPPFLAGS = \ test_conformance_CPPFLAGS = \
@@ -17,7 +16,7 @@ AM_CFLAGS = $(COGL_DEP_CFLAGS) $(COGL_EXTRA_CFLAGS)
common_ldadd = \ common_ldadd = \
$(COGL_DEP_LIBS) \ $(COGL_DEP_LIBS) \
$(top_builddir)/cogl/libmutter-cogl-$(LIBMUTTER_API_VERSION).la \ $(top_builddir)/cogl/libmutter-cogl.la \
$(LIBM) $(LIBM)
test_journal_SOURCES = test-journal.c test_journal_SOURCES = test-journal.c

View File

@@ -13,7 +13,7 @@ wrappers: stamp-test-unit
@true @true
stamp-test-unit: Makefile test-unit$(EXEEXT) stamp-test-unit: Makefile test-unit$(EXEEXT)
@mkdir -p wrappers @mkdir -p wrappers
. $(top_builddir)/cogl/libmutter-cogl-$(LIBMUTTER_API_VERSION).la ; \ . $(top_builddir)/cogl/libmutter-cogl.la ; \
$(NM) $(top_builddir)/cogl/.libs/"$$dlname"| \ $(NM) $(top_builddir)/cogl/.libs/"$$dlname"| \
grep '[DR] _\?unit_test_'|sed 's/.\+ [DR] _\?//' > unit-tests grep '[DR] _\?unit_test_'|sed 's/.\+ [DR] _\?//' > unit-tests
@chmod +x $(top_srcdir)/tests/test-launcher.sh @chmod +x $(top_srcdir)/tests/test-launcher.sh
@@ -62,7 +62,7 @@ AM_CPPFLAGS += \
test_unit_CFLAGS = -g3 -O0 $(COGL_DEP_CFLAGS) $(COGL_EXTRA_CFLAGS) test_unit_CFLAGS = -g3 -O0 $(COGL_DEP_CFLAGS) $(COGL_EXTRA_CFLAGS)
test_unit_LDADD = \ test_unit_LDADD = \
$(COGL_DEP_LIBS) \ $(COGL_DEP_LIBS) \
$(top_builddir)/cogl/libmutter-cogl-$(LIBMUTTER_API_VERSION).la \ $(top_builddir)/cogl/libmutter-cogl.la \
$(LIBM) $(LIBM)
test_unit_LDFLAGS = -export-dynamic test_unit_LDFLAGS = -export-dynamic

View File

@@ -1,16 +1,14 @@
AC_PREREQ(2.62) AC_PREREQ(2.62)
m4_define([mutter_major_version], [3]) m4_define([mutter_major_version], [3])
m4_define([mutter_minor_version], [24]) m4_define([mutter_minor_version], [21])
m4_define([mutter_micro_version], [0]) m4_define([mutter_micro_version], [4])
m4_define([mutter_version], m4_define([mutter_version],
[mutter_major_version.mutter_minor_version.mutter_micro_version]) [mutter_major_version.mutter_minor_version.mutter_micro_version])
m4_define([mutter_plugin_api_version], [3]) m4_define([mutter_plugin_api_version], [3])
m4_define([libmutter_api_version], [0])
AC_INIT([mutter], [mutter_version], AC_INIT([mutter], [mutter_version],
[http://bugzilla.gnome.org/enter_bug.cgi?product=mutter]) [http://bugzilla.gnome.org/enter_bug.cgi?product=mutter])
@@ -29,18 +27,11 @@ AC_GNU_SOURCE
MUTTER_MAJOR_VERSION=mutter_major_version MUTTER_MAJOR_VERSION=mutter_major_version
MUTTER_MINOR_VERSION=mutter_minor_version MUTTER_MINOR_VERSION=mutter_minor_version
MUTTER_MICRO_VERSION=mutter_micro_version MUTTER_MICRO_VERSION=mutter_micro_version
MUTTER_VERSION=mutter_version
MUTTER_PLUGIN_API_VERSION=mutter_plugin_api_version MUTTER_PLUGIN_API_VERSION=mutter_plugin_api_version
LIBMUTTER_API_VERSION=libmutter_api_version
AC_SUBST(MUTTER_MAJOR_VERSION) AC_SUBST(MUTTER_MAJOR_VERSION)
AC_SUBST(MUTTER_MINOR_VERSION) AC_SUBST(MUTTER_MINOR_VERSION)
AC_SUBST(MUTTER_MICRO_VERSION) AC_SUBST(MUTTER_MICRO_VERSION)
AC_SUBST(MUTTER_PLUGIN_API_VERSION) AC_SUBST(MUTTER_PLUGIN_API_VERSION)
AC_SUBST(MUTTER_VERSION)
AC_SUBST(LIBMUTTER_API_VERSION)
# Make the mutter versions visible to the cogl and clutter subdirs
export LIBMUTTER_API_VERSION MUTTER_VERSION
MUTTER_PLUGIN_DIR="$libdir/$PACKAGE/plugins" MUTTER_PLUGIN_DIR="$libdir/$PACKAGE/plugins"
AC_SUBST(MUTTER_PLUGIN_DIR) AC_SUBST(MUTTER_PLUGIN_DIR)
@@ -52,11 +43,9 @@ GETTEXT_PACKAGE=mutter
AC_SUBST(GETTEXT_PACKAGE) AC_SUBST(GETTEXT_PACKAGE)
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Name of default gettext domain]) AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Name of default gettext domain])
AM_GNU_GETTEXT_VERSION([0.19.6])
AM_GNU_GETTEXT([external])
LT_PREREQ([2.2.6]) LT_PREREQ([2.2.6])
LT_INIT([disable-static]) LT_INIT([disable-static])
IT_PROG_INTLTOOL([0.41])
AC_PROG_CC AC_PROG_CC
AC_PROG_CC_C_O AC_PROG_CC_C_O
AC_PROG_INSTALL AC_PROG_INSTALL
@@ -73,7 +62,6 @@ CANBERRA_GTK_VERSION=0.26
LIBWACOM_VERSION=0.13 LIBWACOM_VERSION=0.13
MUTTER_PC_MODULES=" MUTTER_PC_MODULES="
egl
gtk+-3.0 >= 3.19.8 gtk+-3.0 >= 3.19.8
gio-unix-2.0 >= 2.35.1 gio-unix-2.0 >= 2.35.1
pango >= 1.2.0 pango >= 1.2.0
@@ -95,7 +83,6 @@ MUTTER_PC_MODULES="
xrender xrender
x11-xcb x11-xcb
xcb-randr xcb-randr
xcb-res
" "
GLIB_GSETTINGS GLIB_GSETTINGS
@@ -129,11 +116,6 @@ AC_ARG_WITH(libwacom,
[disable the use of libwacom for advanced tablet management]),, [disable the use of libwacom for advanced tablet management]),,
with_libwacom=auto) with_libwacom=auto)
AC_ARG_WITH(gudev,
AC_HELP_STRING([--without-gudev],
[disable the use of gudev for device type detection]),,
with_gudev=auto)
AC_ARG_WITH([xwayland-path], AC_ARG_WITH([xwayland-path],
[AS_HELP_STRING([--with-xwayland-path], [Absolute path for an X Wayland server])], [AS_HELP_STRING([--with-xwayland-path], [Absolute path for an X Wayland server])],
[XWAYLAND_PATH="$withval"], [XWAYLAND_PATH="$withval"],
@@ -213,43 +195,31 @@ else
fi fi
fi fi
have_gudev=no
AC_MSG_CHECKING([gudev])
if test x$with_gudev = xno ; then
AC_MSG_RESULT([disabled])
else
if $PKG_CONFIG --exists gudev-1.0; then
have_gudev=yes
AC_MSG_RESULT(yes)
MUTTER_PC_MODULES="$MUTTER_PC_MODULES gudev-1.0"
AC_DEFINE([HAVE_LIBGUDEV], 1, [Building with gudev for device type detection])
else
AC_MSG_RESULT(no)
if test x$with_gudev = xyes ; then
AC_MSG_ERROR([gudev forced but not found])
fi
fi
fi
INTROSPECTION_VERSION=0.9.5 INTROSPECTION_VERSION=0.9.5
GOBJECT_INTROSPECTION_CHECK([$INTROSPECTION_VERSION]) GOBJECT_INTROSPECTION_CHECK([$INTROSPECTION_VERSION])
if test x$found_introspection != xno; then if test x$found_introspection != xno; then
AC_DEFINE(HAVE_INTROSPECTION, 1, [Define if GObject introspection is available]) AC_DEFINE(HAVE_INTROSPECTION, 1, [Define if GObject introspection is available])
MUTTER_PC_MODULES="$MUTTER_PC_MODULES gobject-introspection-1.0" MUTTER_PC_MODULES="$MUTTER_PC_MODULES gobject-introspection-1.0"
# Since we don't make any guarantees about stability and we don't support
# parallel install, there's no real reason to change directories, filenames,
# etc. as we change the Mutter tarball version. Note that this must match
# api_version in src/Makefile.am
META_GIR=Meta_3_0_gir
# META_GIR=[Meta_]mutter_major_version[_]mutter_minor_version[_gir]
AC_SUBST(META_GIR)
fi fi
AC_SUBST(XWAYLAND_PATH) AC_SUBST(XWAYLAND_PATH)
PKG_CHECK_MODULES(MUTTER, $MUTTER_PC_MODULES) PKG_CHECK_MODULES(MUTTER, $MUTTER_PC_MODULES)
MUTTER_NATIVE_BACKEND_MODULES="libdrm libsystemd libinput >= 1.4 gudev-1.0 gbm >= 10.3" MUTTER_NATIVE_BACKEND_MODULES="libdrm libsystemd libinput gudev-1.0 gbm >= 10.3"
AC_ARG_ENABLE(native-backend, AC_ARG_ENABLE(native-backend,
AS_HELP_STRING([--disable-native-backend], [disable mutter native (KMS) backend]),, AS_HELP_STRING([--disable-native-backend], [disable mutter native (KMS) backend]),,
enable_native_backend=auto enable_native_backend=auto
) )
have_native_backend="no"
AS_IF([test "$enable_native_backend" = "yes"], [have_native_backend=yes], AS_IF([test "$enable_native_backend" = "yes"], [have_native_backend=yes],
[test "$enable_native_backend" = "auto"], PKG_CHECK_EXISTS([$MUTTER_NATIVE_BACKEND_MODULES], [have_native_backend=yes])) [test "$enable_native_backend" = "auto"], PKG_CHECK_EXISTS([$MUTTER_NATIVE_BACKEND_MODULES], [have_native_backend=yes]))
@@ -259,15 +229,6 @@ AS_IF([test "$have_native_backend" = "yes"], [
]) ])
AM_CONDITIONAL([HAVE_NATIVE_BACKEND],[test "$have_native_backend" = "yes"]) AM_CONDITIONAL([HAVE_NATIVE_BACKEND],[test "$have_native_backend" = "yes"])
AC_ARG_ENABLE(egl-device,
AS_HELP_STRING([--enable-egl-device], [enable support for EGLDevice on top of KMS]),
enable_egl_device=yes,
enable_egl_device=no
)
AS_IF([test "$enable_egl_device" = "yes"], [
AC_DEFINE([HAVE_EGL_DEVICE],[1], [Defined if EGLDevice support is enabled])
])
MUTTER_WAYLAND_MODULES="wayland-server >= 1.6.90" MUTTER_WAYLAND_MODULES="wayland-server >= 1.6.90"
AC_ARG_ENABLE(wayland, AC_ARG_ENABLE(wayland,
@@ -285,7 +246,7 @@ AS_IF([test "$have_wayland" = "yes"], [
AC_SUBST([WAYLAND_SCANNER]) AC_SUBST([WAYLAND_SCANNER])
AC_DEFINE([HAVE_WAYLAND],[1],[Define if you want to enable Wayland support]) AC_DEFINE([HAVE_WAYLAND],[1],[Define if you want to enable Wayland support])
PKG_CHECK_MODULES(WAYLAND_PROTOCOLS, [wayland-protocols >= 1.7], PKG_CHECK_MODULES(WAYLAND_PROTOCOLS, [wayland-protocols >= 1.5],
[ac_wayland_protocols_pkgdatadir=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`]) [ac_wayland_protocols_pkgdatadir=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`])
AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, $ac_wayland_protocols_pkgdatadir) AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, $ac_wayland_protocols_pkgdatadir)
]) ])
@@ -389,8 +350,6 @@ AC_CHECK_DECL([GL_EXT_x11_sync_object],
[AC_MSG_ERROR([GL_EXT_x11_sync_object definition not found, please update your GL headers])], [AC_MSG_ERROR([GL_EXT_x11_sync_object definition not found, please update your GL headers])],
[#include <GL/glx.h>]) [#include <GL/glx.h>])
AC_PATH_PROG([CVT],[cvt],[])
#### Warnings (last since -Werror can disturb other tests) #### Warnings (last since -Werror can disturb other tests)
# Stay command-line compatible with the gnome-common configure option. Here # Stay command-line compatible with the gnome-common configure option. Here
@@ -463,7 +422,7 @@ data/Makefile
doc/Makefile doc/Makefile
doc/man/Makefile doc/man/Makefile
src/Makefile src/Makefile
src/libmutter-$LIBMUTTER_API_VERSION.pc:src/libmutter.pc.in src/libmutter.pc
src/compositor/plugins/Makefile src/compositor/plugins/Makefile
src/meta/meta-version.h src/meta/meta-version.h
po/Makefile.in po/Makefile.in
@@ -471,16 +430,6 @@ po/Makefile.in
AC_OUTPUT AC_OUTPUT
# Check that cogl and clutter have their .pc files regenerated with the correct version
COGL_PC_VERSION=$(grep Version: cogl/cogl/mutter-cogl-$LIBMUTTER_API_VERSION.pc|awk '{ print $2; }')
AS_IF([test "x$COGL_PC_VERSION" != "x$MUTTER_VERSION"],
[AC_MSG_ERROR([mutter-cogl pkg-config file not updated, rerun ./configure])])
CLUTTER_PC_VERSION=$(grep Version: clutter/clutter/mutter-clutter-$LIBMUTTER_API_VERSION.pc|awk '{ print $2; }')
AS_IF([test "x$CLUTTER_PC_VERSION" != "x$MUTTER_VERSION"],
[AC_MSG_ERROR([mutter-clutter pkg-config file not updated, rerun ./configure])])
if test x$enable_verbose_mode = xno; then if test x$enable_verbose_mode = xno; then
echo "*** WARNING WARNING WARNING WARNING WARNING" echo "*** WARNING WARNING WARNING WARNING WARNING"
echo "*** Building without verbose mode" echo "*** Building without verbose mode"
@@ -500,12 +449,10 @@ mutter-$VERSION
Startup notification: ${have_startup_notification} Startup notification: ${have_startup_notification}
libcanberra: ${have_libcanberra} libcanberra: ${have_libcanberra}
libwacom: ${have_libwacom} libwacom: ${have_libwacom}
gudev ${have_gudev}
Introspection: ${found_introspection} Introspection: ${found_introspection}
Session management: ${found_sm} Session management: ${found_sm}
Wayland: ${have_wayland} Wayland: ${have_wayland}
Native (KMS) backend: ${have_native_backend} Native (KMS) backend: ${have_native_backend}
EGLDevice: ${enable_egl_device}
" "

View File

@@ -1,140 +1,140 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<KeyListEntries schema="org.gnome.desktop.wm.keybindings" <KeyListEntries schema="org.gnome.desktop.wm.keybindings"
group="system" group="system"
name="Navigation" _name="Navigation"
wm_name="Mutter" wm_name="Mutter"
package="mutter"> package="mutter">
<KeyListEntry name="move-to-workspace-1" <KeyListEntry name="move-to-workspace-1"
description="Move window to workspace 1" /> _description="Move window to workspace 1" />
<KeyListEntry name="move-to-workspace-2" <KeyListEntry name="move-to-workspace-2"
description="Move window to workspace 2" /> _description="Move window to workspace 2" />
<KeyListEntry name="move-to-workspace-3" <KeyListEntry name="move-to-workspace-3"
description="Move window to workspace 3" /> _description="Move window to workspace 3" />
<KeyListEntry name="move-to-workspace-4" <KeyListEntry name="move-to-workspace-4"
description="Move window to workspace 4" /> _description="Move window to workspace 4" />
<KeyListEntry name="move-to-workspace-last" <KeyListEntry name="move-to-workspace-last"
description="Move window to last workspace" /> _description="Move window to last workspace" />
<KeyListEntry name="move-to-workspace-left" <KeyListEntry name="move-to-workspace-left"
description="Move window one workspace to the left" /> _description="Move window one workspace to the left" />
<KeyListEntry name="move-to-workspace-right" <KeyListEntry name="move-to-workspace-right"
description="Move window one workspace to the right" /> _description="Move window one workspace to the right" />
<KeyListEntry name="move-to-workspace-up" <KeyListEntry name="move-to-workspace-up"
description="Move window one workspace up" /> _description="Move window one workspace up" />
<KeyListEntry name="move-to-workspace-down" <KeyListEntry name="move-to-workspace-down"
description="Move window one workspace down" /> _description="Move window one workspace down" />
<KeyListEntry name="move-to-monitor-left" <KeyListEntry name="move-to-monitor-left"
description="Move window one monitor to the left" /> _description="Move window one monitor to the left" />
<KeyListEntry name="move-to-monitor-right" <KeyListEntry name="move-to-monitor-right"
description="Move window one monitor to the right" /> _description="Move window one monitor to the right" />
<KeyListEntry name="move-to-monitor-up" <KeyListEntry name="move-to-monitor-up"
description="Move window one monitor up" /> _description="Move window one monitor up" />
<KeyListEntry name="move-to-monitor-down" <KeyListEntry name="move-to-monitor-down"
description="Move window one monitor down" /> _description="Move window one monitor down" />
<KeyListEntry name="switch-applications" <KeyListEntry name="switch-applications"
reverse-entry="switch-applications-backward" reverse-entry="switch-applications-backward"
description="Switch applications"/> _description="Switch applications"/>
<KeyListEntry name="switch-applications-backward" <KeyListEntry name="switch-applications-backward"
reverse-entry="switch-applications" reverse-entry="switch-applications"
hidden="true" hidden="true"
description="Switch to previous application"/> _description="Switch to previous application"/>
<KeyListEntry name="switch-windows" <KeyListEntry name="switch-windows"
reverse-entry="switch-windows-backward" reverse-entry="switch-windows-backward"
description="Switch windows"/> _description="Switch windows"/>
<KeyListEntry name="switch-windows-backward" <KeyListEntry name="switch-windows-backward"
reverse-entry="switch-windows" reverse-entry="switch-windows"
hidden="true" hidden="true"
description="Switch to previous window"/> _description="Switch to previous window"/>
<KeyListEntry name="switch-group" <KeyListEntry name="switch-group"
reverse-entry="switch-group-backward" reverse-entry="switch-group-backward"
description="Switch windows of an application"/> _description="Switch windows of an application"/>
<KeyListEntry name="switch-group-backward" <KeyListEntry name="switch-group-backward"
reverse-entry="switch-group" reverse-entry="switch-group"
hidden="true" hidden="true"
description="Switch to previous window of an application"/> _description="Switch to previous window of an application"/>
<KeyListEntry name="switch-panels" <KeyListEntry name="switch-panels"
reverse-entry="switch-panels-backward" reverse-entry="switch-panels-backward"
description="Switch system controls"/> _description="Switch system controls"/>
<KeyListEntry name="switch-panels-backward" <KeyListEntry name="switch-panels-backward"
reverse-entry="switch-panels" reverse-entry="switch-panels"
hidden="true" hidden="true"
description="Switch to previous system control"/> _description="Switch to previous system control"/>
<KeyListEntry name="cycle-windows" <KeyListEntry name="cycle-windows"
reverse-entry="cycle-windows-backward" reverse-entry="cycle-windows-backward"
description="Switch windows directly"/> _description="Switch windows directly"/>
<KeyListEntry name="cycle-windows-backward" <KeyListEntry name="cycle-windows-backward"
reverse-entry="cycle-windows" reverse-entry="cycle-windows"
hidden="true" hidden="true"
description="Switch directly to previous window"/> _description="Switch directly to previous window"/>
<KeyListEntry name="cycle-group" <KeyListEntry name="cycle-group"
reverse-entry="cycle-group-backward" reverse-entry="cycle-group-backward"
description="Switch windows of an app directly"/> _description="Switch windows of an app directly"/>
<KeyListEntry name="cycle-group-backward" <KeyListEntry name="cycle-group-backward"
reverse-entry="cycle-group" reverse-entry="cycle-group"
hidden="true" hidden="true"
description="Switch directly to previous window of an app"/> _description="Switch directly to previous window of an app"/>
<KeyListEntry name="cycle-panels" <KeyListEntry name="cycle-panels"
reverse-entry="cycle-panels-backward" reverse-entry="cycle-panels-backward"
description="Switch system controls directly"/> _description="Switch system controls directly"/>
<KeyListEntry name="cycle-panels-backward" <KeyListEntry name="cycle-panels-backward"
reverse-entry="cycle-panels" reverse-entry="cycle-panels"
hidden="true" hidden="true"
description="Switch directly to previous system control"/> _description="Switch directly to previous system control"/>
<KeyListEntry name="show-desktop" <KeyListEntry name="show-desktop"
description="Hide all normal windows"/> _description="Hide all normal windows"/>
<KeyListEntry name="switch-to-workspace-1" <KeyListEntry name="switch-to-workspace-1"
description="Switch to workspace 1" /> _description="Switch to workspace 1" />
<KeyListEntry name="switch-to-workspace-2" <KeyListEntry name="switch-to-workspace-2"
description="Switch to workspace 2" /> _description="Switch to workspace 2" />
<KeyListEntry name="switch-to-workspace-3" <KeyListEntry name="switch-to-workspace-3"
description="Switch to workspace 3" /> _description="Switch to workspace 3" />
<KeyListEntry name="switch-to-workspace-4" <KeyListEntry name="switch-to-workspace-4"
description="Switch to workspace 4" /> _description="Switch to workspace 4" />
<KeyListEntry name="switch-to-workspace-last" <KeyListEntry name="switch-to-workspace-last"
description="Switch to last workspace" /> _description="Switch to last workspace" />
<KeyListEntry name="switch-to-workspace-left" <KeyListEntry name="switch-to-workspace-left"
description="Move to workspace left" /> _description="Move to workspace left" />
<KeyListEntry name="switch-to-workspace-right" <KeyListEntry name="switch-to-workspace-right"
description="Move to workspace right" /> _description="Move to workspace right" />
<KeyListEntry name="switch-to-workspace-up" <KeyListEntry name="switch-to-workspace-up"
description="Move to workspace above" /> _description="Move to workspace above" />
<KeyListEntry name="switch-to-workspace-down" <KeyListEntry name="switch-to-workspace-down"
description="Move to workspace below" /> _description="Move to workspace below" />
</KeyListEntries> </KeyListEntries>

View File

@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<KeyListEntries schema="org.gnome.desktop.wm.keybindings" <KeyListEntries schema="org.gnome.desktop.wm.keybindings"
group="system" group="system"
name="System" _name="System"
wm_name="Mutter" wm_name="Mutter"
package="mutter"> package="mutter">
<KeyListEntry name="panel-run-dialog" description="Show the run command prompt"/> <KeyListEntry name="panel-run-dialog" _description="Show the run command prompt"/>
<KeyListEntry name="panel-main-menu" description="Show the activities overview"/> <KeyListEntry name="panel-main-menu" _description="Show the activities overview"/>
</KeyListEntries> </KeyListEntries>

View File

@@ -1,50 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<KeyListEntries schema="org.gnome.desktop.wm.keybindings"
group="system"
name="Windows"
wm_name="Mutter"
package="mutter">
<KeyListEntry name="activate-window-menu" description="Activate the window menu"/>
<KeyListEntry name="toggle-fullscreen" description="Toggle fullscreen mode"/>
<KeyListEntry name="toggle-maximized" description="Toggle maximization state"/>
<KeyListEntry name="maximize" description="Maximize window"/>
<KeyListEntry name="unmaximize" description="Restore window"/>
<KeyListEntry name="toggle-shaded" description="Toggle shaded state"/>
<KeyListEntry name="close" description="Close window"/>
<KeyListEntry name="minimize" description="Hide window"/>
<KeyListEntry name="begin-move" description="Move window"/>
<KeyListEntry name="begin-resize" description="Resize window"/>
<KeyListEntry name="toggle-on-all-workspaces"
description="Toggle window on all workspaces or one"/>
<KeyListEntry name="raise-or-lower" description="Raise window if covered, otherwise lower it"/>
<KeyListEntry name="raise" description="Raise window above other windows"/>
<KeyListEntry name="lower" description="Lower window below other windows"/>
<KeyListEntry name="maximize-vertically" description="Maximize window vertically"/>
<KeyListEntry name="maximize-horizontally" description="Maximize window horizontally"/>
<KeyListEntry name="toggle-tiled-left"
schema="org.gnome.mutter.keybindings"
description="View split on left"/>
<KeyListEntry name="toggle-tiled-right"
schema="org.gnome.mutter.keybindings"
description="View split on right"/>
</KeyListEntries>

View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8" ?>
<KeyListEntries schema="org.gnome.desktop.wm.keybindings"
group="system"
_name="Windows"
wm_name="Mutter"
package="mutter">
<KeyListEntry name="activate-window-menu" _description="Activate the window menu"/>
<KeyListEntry name="toggle-fullscreen" _description="Toggle fullscreen mode"/>
<KeyListEntry name="toggle-maximized" _description="Toggle maximization state"/>
<KeyListEntry name="maximize" _description="Maximize window"/>
<KeyListEntry name="unmaximize" _description="Restore window"/>
<KeyListEntry name="toggle-shaded" _description="Toggle shaded state"/>
<KeyListEntry name="close" _description="Close window"/>
<KeyListEntry name="minimize" _description="Hide window"/>
<KeyListEntry name="begin-move" _description="Move window"/>
<KeyListEntry name="begin-resize" _description="Resize window"/>
<KeyListEntry name="toggle-on-all-workspaces"
_description="Toggle window on all workspaces or one"/>
<KeyListEntry name="raise-or-lower" _description="Raise window if covered, otherwise lower it"/>
<KeyListEntry name="raise" _description="Raise window above other windows"/>
<KeyListEntry name="lower" _description="Lower window below other windows"/>
<KeyListEntry name="maximize-vertically" _description="Maximize window vertically"/>
<KeyListEntry name="maximize-horizontally" _description="Maximize window horizontally"/>
<KeyListEntry name="toggle-tiled-left"
schema="org.gnome.mutter.keybindings"
_description="View split on left"/>
<KeyListEntry name="toggle-tiled-right"
schema="org.gnome.mutter.keybindings"
_description="View split on right"/>
</KeyListEntries>

View File

@@ -3,24 +3,21 @@ desktopfiles_in_files = \
desktopfilesdir = $(datadir)/applications desktopfilesdir = $(datadir)/applications
desktopfiles_DATA = $(desktopfiles_in_files:.desktop.in=.desktop) desktopfiles_DATA = $(desktopfiles_in_files:.desktop.in=.desktop)
%.desktop:%.desktop.in @INTLTOOL_DESKTOP_RULE@
$(AM_V_GET) $(MSGFMT) --desktop --template $< -d $(top_srcdir)/po -o $@
xml_in_files = \
50-mutter-navigation.xml.in \
50-mutter-system.xml.in \
50-mutter-windows.xml.in
xmldir = $(GNOME_KEYBINDINGS_KEYSDIR) xmldir = $(GNOME_KEYBINDINGS_KEYSDIR)
xml_DATA = \ xml_DATA = $(xml_in_files:.xml.in=.xml)
50-mutter-navigation.xml \
50-mutter-system.xml \
50-mutter-windows.xml
gschema_in_files = \ gschema_in_files = \
org.gnome.mutter.gschema.xml.in \ org.gnome.mutter.gschema.xml.in \
org.gnome.mutter.wayland.gschema.xml.in org.gnome.mutter.wayland.gschema.xml.in
gsettings_SCHEMAS = $(gschema_in_files:.xml.in=.xml) gsettings_SCHEMAS = $(gschema_in_files:.xml.in=.xml)
%.gschema.xml: %.gschema.xml.in Makefile @INTLTOOL_XML_NOMERGE_RULE@
$(AM_V_GEN) sed -e 's|@GETTEXT_DOMAIN[@]|$(GETTEXT_DOMAIN)|g' \
$< > $@ || rm $@
@GSETTINGS_RULES@ @GSETTINGS_RULES@
convertdir = $(datadir)/GConf/gsettings convertdir = $(datadir)/GConf/gsettings
@@ -28,10 +25,11 @@ convert_DATA = mutter-schemas.convert
CLEANFILES = \ CLEANFILES = \
$(desktopfiles_DATA) \ $(desktopfiles_DATA) \
$(gsettings_SCHEMAS) $(gsettings_SCHEMAS) \
$(xml_DATA)
EXTRA_DIST = \ EXTRA_DIST = \
$(convert_DATA) \ $(convert_DATA) \
$(desktopfiles_in_files) \ $(desktopfiles_in_files) \
$(gschema_in_files) \ $(gschema_in_files) \
$(xml_DATA) $(xml_in_files)

View File

@@ -1,6 +1,6 @@
[Desktop Entry] [Desktop Entry]
Type=Application Type=Application
Name=Mutter _Name=Mutter
Exec=mutter Exec=mutter
NoDisplay=true NoDisplay=true
# name of loadable control center module # name of loadable control center module

View File

@@ -4,102 +4,102 @@
<key name="overlay-key" type="s"> <key name="overlay-key" type="s">
<default>'Super_L'</default> <default>'Super_L'</default>
<summary>Modifier to use for extended window management operations</summary> <_summary>Modifier to use for extended window management operations</_summary>
<description> <_description>
This key will initiate the overlay, which is a combination window This key will initiate the "overlay", which is a combination window
overview and application launching system. The default is intended overview and application launching system. The default is intended
to be the Windows key on PC hardware. to be the "Windows key" on PC hardware.
Its expected that this binding either the default or set to It's expected that this binding either the default or set to
the empty string. the empty string.
</description> </_description>
</key> </key>
<key name="attach-modal-dialogs" type="b"> <key name="attach-modal-dialogs" type="b">
<default>false</default> <default>false</default>
<summary>Attach modal dialogs</summary> <_summary>Attach modal dialogs</_summary>
<description> <_description>
When true, instead of having independent titlebars, modal dialogs When true, instead of having independent titlebars, modal dialogs
appear attached to the titlebar of the parent window and are moved appear attached to the titlebar of the parent window and are moved
together with the parent window. together with the parent window.
</description> </_description>
</key> </key>
<key name="edge-tiling" type="b"> <key name="edge-tiling" type="b">
<default>false</default> <default>false</default>
<summary>Enable edge tiling when dropping windows on screen edges</summary> <_summary>Enable edge tiling when dropping windows on screen edges</_summary>
<description> <_description>
If enabled, dropping windows on vertical screen edges maximizes them If enabled, dropping windows on vertical screen edges maximizes them
vertically and resizes them horizontally to cover half of the available vertically and resizes them horizontally to cover half of the available
area. Dropping windows on the top screen edge maximizes them completely. area. Dropping windows on the top screen edge maximizes them completely.
</description> </_description>
</key> </key>
<key name="dynamic-workspaces" type="b"> <key name="dynamic-workspaces" type="b">
<default>false</default> <default>false</default>
<summary>Workspaces are managed dynamically</summary> <_summary>Workspaces are managed dynamically</_summary>
<description> <_description>
Determines whether workspaces are managed dynamically or Determines whether workspaces are managed dynamically or
whether theres a static number of workspaces (determined whether there's a static number of workspaces (determined
by the num-workspaces key in org.gnome.desktop.wm.preferences). by the num-workspaces key in org.gnome.desktop.wm.preferences).
</description> </_description>
</key> </key>
<key name="workspaces-only-on-primary" type="b"> <key name="workspaces-only-on-primary" type="b">
<default>false</default> <default>false</default>
<summary>Workspaces only on primary</summary> <_summary>Workspaces only on primary</_summary>
<description> <_description>
Determines whether workspace switching should happen for windows Determines whether workspace switching should happen for windows
on all monitors or only for windows on the primary monitor. on all monitors or only for windows on the primary monitor.
</description> </_description>
</key> </key>
<key name="no-tab-popup" type="b"> <key name="no-tab-popup" type="b">
<default>false</default> <default>false</default>
<summary>No tab popup</summary> <_summary>No tab popup</_summary>
<description> <_description>
Determines whether the use of popup and highlight frame should Determines whether the use of popup and highlight frame should
be disabled for window cycling. be disabled for window cycling.
</description> </_description>
</key> </key>
<key name="focus-change-on-pointer-rest" type="b"> <key name="focus-change-on-pointer-rest" type="b">
<default>false</default> <default>false</default>
<summary>Delay focus changes until the pointer stops moving</summary> <_summary>Delay focus changes until the pointer stops moving</_summary>
<description> <_description>
If set to true, and the focus mode is either sloppy or mouse If set to true, and the focus mode is either "sloppy" or "mouse"
then the focus will not be changed immediately when entering a then the focus will not be changed immediately when entering a
window, but only after the pointer stops moving. window, but only after the pointer stops moving.
</description> </_description>
</key> </key>
<key name="draggable-border-width" type="i"> <key name="draggable-border-width" type="i">
<default>10</default> <default>10</default>
<range min="0" max="64"/> <range min="0" max="64"/>
<summary>Draggable border width</summary> <_summary>Draggable border width</_summary>
<description> <_description>
The amount of total draggable borders. If the themes visible The amount of total draggable borders. If the theme's visible
borders are not enough, invisible borders will be added to meet borders are not enough, invisible borders will be added to meet
this value. this value.
</description> </_description>
</key> </key>
<key name="auto-maximize" type="b"> <key name="auto-maximize" type="b">
<default>true</default> <default>true</default>
<summary>Auto maximize nearly monitor sized windows</summary> <_summary>Auto maximize nearly monitor sized windows</_summary>
<description> <_description>
If enabled, new windows that are initially the size of the monitor If enabled, new windows that are initially the size of the monitor
automatically get maximized. automatically get maximized.
</description> </_description>
</key> </key>
<key name="center-new-windows" type="b"> <key name="center-new-windows" type="b">
<default>false</default> <default>false</default>
<summary>Place new windows in the center</summary> <_summary>Place new windows in the center</_summary>
<description> <_description>
When true, the new windows will always be put in the center of the When true, the new windows will always be put in the center of the
active screen of the monitor. active screen of the monitor.
</description> </_description>
</key> </key>
<child name="keybindings" schema="org.gnome.mutter.keybindings"/> <child name="keybindings" schema="org.gnome.mutter.keybindings"/>
@@ -117,12 +117,12 @@
<key name="tab-popup-select" type="as"> <key name="tab-popup-select" type="as">
<default>[]</default> <default>[]</default>
<summary>Select window from tab popup</summary> <_summary>Select window from tab popup</_summary>
</key> </key>
<key name="tab-popup-cancel" type="as"> <key name="tab-popup-cancel" type="as">
<default>[]</default> <default>[]</default>
<summary>Cancel tab popup</summary> <_summary>Cancel tab popup</_summary>
</key> </key>
</schema> </schema>

View File

@@ -3,51 +3,51 @@
gettext-domain="@GETTEXT_DOMAIN@"> gettext-domain="@GETTEXT_DOMAIN@">
<key name="switch-to-session-1" type="as"> <key name="switch-to-session-1" type="as">
<default><![CDATA[['<Primary><Alt>F1']]]></default> <default><![CDATA[['<Primary><Alt>F1']]]></default>
<summary>Switch to VT 1</summary> <_summary>Switch to VT 1</_summary>
</key> </key>
<key name="switch-to-session-2" type="as"> <key name="switch-to-session-2" type="as">
<default><![CDATA[['<Primary><Alt>F2']]]></default> <default><![CDATA[['<Primary><Alt>F2']]]></default>
<summary>Switch to VT 2</summary> <_summary>Switch to VT 2</_summary>
</key> </key>
<key name="switch-to-session-3" type="as"> <key name="switch-to-session-3" type="as">
<default><![CDATA[['<Primary><Alt>F3']]]></default> <default><![CDATA[['<Primary><Alt>F3']]]></default>
<summary>Switch to VT 3</summary> <_summary>Switch to VT 3</_summary>
</key> </key>
<key name="switch-to-session-4" type="as"> <key name="switch-to-session-4" type="as">
<default><![CDATA[['<Primary><Alt>F4']]]></default> <default><![CDATA[['<Primary><Alt>F4']]]></default>
<summary>Switch to VT 4</summary> <_summary>Switch to VT 4</_summary>
</key> </key>
<key name="switch-to-session-5" type="as"> <key name="switch-to-session-5" type="as">
<default><![CDATA[['<Primary><Alt>F5']]]></default> <default><![CDATA[['<Primary><Alt>F5']]]></default>
<summary>Switch to VT 5</summary> <_summary>Switch to VT 5</_summary>
</key> </key>
<key name="switch-to-session-6" type="as"> <key name="switch-to-session-6" type="as">
<default><![CDATA[['<Primary><Alt>F6']]]></default> <default><![CDATA[['<Primary><Alt>F6']]]></default>
<summary>Switch to VT 6</summary> <_summary>Switch to VT 6</_summary>
</key> </key>
<key name="switch-to-session-7" type="as"> <key name="switch-to-session-7" type="as">
<default><![CDATA[['<Primary><Alt>F7']]]></default> <default><![CDATA[['<Primary><Alt>F7']]]></default>
<summary>Switch to VT 7</summary> <_summary>Switch to VT 7</_summary>
</key> </key>
<key name="switch-to-session-8" type="as"> <key name="switch-to-session-8" type="as">
<default><![CDATA[['<Primary><Alt>F8']]]></default> <default><![CDATA[['<Primary><Alt>F8']]]></default>
<summary>Switch to VT 8</summary> <_summary>Switch to VT 8</_summary>
</key> </key>
<key name="switch-to-session-9" type="as"> <key name="switch-to-session-9" type="as">
<default><![CDATA[['<Primary><Alt>F9']]]></default> <default><![CDATA[['<Primary><Alt>F9']]]></default>
<summary>Switch to VT 9</summary> <_summary>Switch to VT 9</_summary>
</key> </key>
<key name="switch-to-session-10" type="as"> <key name="switch-to-session-10" type="as">
<default><![CDATA[['<Primary><Alt>F10']]]></default> <default><![CDATA[['<Primary><Alt>F10']]]></default>
<summary>Switch to VT 10</summary> <_summary>Switch to VT 10</_summary>
</key> </key>
<key name="switch-to-session-11" type="as"> <key name="switch-to-session-11" type="as">
<default><![CDATA[['<Primary><Alt>F11']]]></default> <default><![CDATA[['<Primary><Alt>F11']]]></default>
<summary>Switch to VT 11</summary> <_summary>Switch to VT 11</_summary>
</key> </key>
<key name="switch-to-session-12" type="as"> <key name="switch-to-session-12" type="as">
<default><![CDATA[['<Primary><Alt>F12']]]></default> <default><![CDATA[['<Primary><Alt>F12']]]></default>
<summary>Switch to VT 12</summary> <_summary>Switch to VT 12</_summary>
</key> </key>
</schema> </schema>
</schemalist> </schemalist>

View File

@@ -1,68 +0,0 @@
# Makefile variables for PO directory in any package using GNU gettext.
# Usually the message domain is the same as the package name.
DOMAIN = $(PACKAGE)
# These two variables depend on the location of this directory.
subdir = po
top_builddir = ..
# These options get passed to xgettext.
XGETTEXT_OPTIONS = --from-code=UTF-8 --keyword=_ --keyword=N_ \
--keyword=C_:1c,2 --keyword=NC_:1c,2 \
--keyword=g_dngettext:2,3 --add-comments \
--flag=g_dngettext:2:pass-c-format \
--flag=g_strdup_printf:1:c-format \
--flag=g_string_printf:2:c-format \
--flag=g_string_append_printf:2:c-format \
--flag=g_error_new:3:c-format \
--flag=g_set_error:4:c-format \
--flag=g_markup_printf_escaped:1:c-format \
--flag=g_log:3:c-format \
--flag=g_print:1:c-format \
--flag=g_printerr:1:c-format \
--flag=g_printf:1:c-format \
--flag=g_fprintf:2:c-format \
--flag=g_sprintf:2:c-format \
--flag=g_snprintf:3:c-format
# This is the copyright holder that gets inserted into the header of the
# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
# package. (Note that the msgstr strings, extracted from the package's
# sources, belong to the copyright holder of the package.) Translators are
# expected to transfer the copyright for their translations to this person
# or entity, or to disclaim their copyright. The empty string stands for
# the public domain; in this case the translators are expected to disclaim
# their copyright.
COPYRIGHT_HOLDER = Translation copyright holder
# This is the email address or URL to which the translators shall report
# bugs in the untranslated strings:
# - Strings which are not entire sentences, see the maintainer guidelines
# in the GNU gettext documentation, section 'Preparing Strings'.
# - Strings which use unclear terms or require additional context to be
# understood.
# - Strings which make invalid assumptions about notation of date, time or
# money.
# - Pluralisation problems.
# - Incorrect English spelling.
# - Incorrect formatting.
# It can be your email address, or a mailing list address where translators
# can write to without being subscribed, or the URL of a web page through
# which the translators can contact you.
MSGID_BUGS_ADDRESS = http://bugzilla.gnome.org/enter_bug.cgi?product=mutter&keywords=I18N+L10N&component=general
# This is the list of locale categories, beyond LC_MESSAGES, for which the
# message catalogs shall be used. It is usually empty.
EXTRA_LOCALE_CATEGORIES =
# Ignore the timestamp of the .pot file, as git clones do not have
# deterministic timestamps, and .po files are updated by translators
# (only) in GNOME projects.
PO_DEPENDS_ON_POT = no
# This tells whether or not to forcibly update $(DOMAIN).pot and
# regenerate PO files on "make dist". Possible values are "yes" and
# "no". Set this to no if the POT file and PO files are maintained
# externally.
DIST_DEPENDS_ON_UPDATE_PO = no

View File

@@ -1,8 +1,8 @@
# List of source files containing translatable strings. # List of source files containing translatable strings.
# Please keep this file sorted alphabetically. # Please keep this file sorted alphabetically.
data/50-mutter-navigation.xml data/50-mutter-navigation.xml.in
data/50-mutter-system.xml data/50-mutter-system.xml.in
data/50-mutter-windows.xml data/50-mutter-windows.xml.in
data/mutter.desktop.in data/mutter.desktop.in
data/org.gnome.mutter.gschema.xml.in data/org.gnome.mutter.gschema.xml.in
data/org.gnome.mutter.wayland.gschema.xml.in data/org.gnome.mutter.wayland.gschema.xml.in

View File

@@ -1,12 +1,13 @@
# List of source files that should NOT be translated. # List of source files that should NOT be translated.
# Please keep this file sorted alphabetically. # Please keep this file sorted alphabetically.
clutter/clutter/clutter-actor.c
clutter/clutter/clutter-actor-meta.c clutter/clutter/clutter-actor-meta.c
clutter/clutter/clutter-actor.c
clutter/clutter/clutter-align-constraint.c clutter/clutter/clutter-align-constraint.c
clutter/clutter/clutter-backend.c clutter/clutter/clutter-backend.c
clutter/clutter/clutter-bin-layout.c
clutter/clutter/clutter-bind-constraint.c clutter/clutter/clutter-bind-constraint.c
clutter/clutter/clutter-binding-pool.c clutter/clutter/clutter-binding-pool.c
clutter/clutter/clutter-bin-layout.c
clutter/clutter/clutter-box-layout.c clutter/clutter/clutter-box-layout.c
clutter/clutter/clutter-brightness-contrast-effect.c clutter/clutter/clutter-brightness-contrast-effect.c
clutter/clutter/clutter-canvas.c clutter/clutter/clutter-canvas.c
@@ -51,18 +52,17 @@ clutter/clutter/clutter-text.c
clutter/clutter/clutter-timeline.c clutter/clutter/clutter-timeline.c
clutter/clutter/clutter-transition.c clutter/clutter/clutter-transition.c
clutter/clutter/clutter-units.c clutter/clutter/clutter-units.c
clutter/clutter/clutter-virtual-input-device.c
clutter/clutter/clutter-zoom-action.c clutter/clutter/clutter-zoom-action.c
clutter/clutter/deprecated/clutter-alpha.c clutter/clutter/deprecated/clutter-alpha.c
clutter/clutter/deprecated/clutter-animation.c clutter/clutter/deprecated/clutter-animation.c
clutter/clutter/deprecated/clutter-animator.c clutter/clutter/deprecated/clutter-animator.c
clutter/clutter/deprecated/clutter-behaviour.c
clutter/clutter/deprecated/clutter-behaviour-depth.c clutter/clutter/deprecated/clutter-behaviour-depth.c
clutter/clutter/deprecated/clutter-behaviour-ellipse.c clutter/clutter/deprecated/clutter-behaviour-ellipse.c
clutter/clutter/deprecated/clutter-behaviour-opacity.c clutter/clutter/deprecated/clutter-behaviour-opacity.c
clutter/clutter/deprecated/clutter-behaviour-path.c clutter/clutter/deprecated/clutter-behaviour-path.c
clutter/clutter/deprecated/clutter-behaviour-rotate.c clutter/clutter/deprecated/clutter-behaviour-rotate.c
clutter/clutter/deprecated/clutter-behaviour-scale.c clutter/clutter/deprecated/clutter-behaviour-scale.c
clutter/clutter/deprecated/clutter-behaviour.c
clutter/clutter/deprecated/clutter-box.c clutter/clutter/deprecated/clutter-box.c
clutter/clutter/deprecated/clutter-cairo-texture.c clutter/clutter/deprecated/clutter-cairo-texture.c
clutter/clutter/deprecated/clutter-fixed.c clutter/clutter/deprecated/clutter-fixed.c
@@ -72,11 +72,9 @@ clutter/clutter/deprecated/clutter-shader.c
clutter/clutter/deprecated/clutter-state.c clutter/clutter/deprecated/clutter-state.c
clutter/clutter/deprecated/clutter-table-layout.c clutter/clutter/deprecated/clutter-table-layout.c
clutter/clutter/deprecated/clutter-texture.c clutter/clutter/deprecated/clutter-texture.c
clutter/clutter/evdev/clutter-input-device-evdev.c
clutter/clutter/evdev/clutter-virtual-input-device-evdev.c
clutter/clutter/wayland/clutter-wayland-surface.c clutter/clutter/wayland/clutter-wayland-surface.c
clutter/clutter/x11/clutter-backend-x11.c clutter/clutter/x11/clutter-backend-x11.c
clutter/clutter/x11/clutter-keymap-x11.c clutter/clutter/x11/clutter-keymap-x11.c
clutter/clutter/x11/clutter-x11-texture-pixmap.c clutter/clutter/x11/clutter-x11-texture-pixmap.c
cogl/cogl/cogl-debug.c
cogl/cogl/cogl-debug-options.h cogl/cogl/cogl-debug-options.h
cogl/cogl/cogl-debug.c

838
po/bg.po
View File

@@ -1,10 +1,9 @@
# Bulgarian translation of mutter po-file. # Bulgarian translation of mutter po-file.
# Copyright (C) 2002, 2004, 2006, 2007, 2008 Free Software Foundation, Inc. # Copyright (C) 2002, 2004, 2006, 2007, 2008 Free Software Foundation, Inc.
# Copyright (C) 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. # Copyright (C) 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
# Copyright (C) 2014, 2015, 2016 Free Software Foundation, Inc. # Copyright (C) 2014, 2015 Free Software Foundation, Inc.
# Alexander Shopov <ash@kambanaria.org>, 2002, 2006, 2007, 2009, 2010. # Alexander Shopov <ash@kambanaria.org>, 2002, 2006, 2007, 2009, 2010.
# Alexander Shopov <ash@kambanaria.org>, 2011, 2012, 2013, 2014, 2015. # Alexander Shopov <ash@kambanaria.org>, 2011, 2012, 2013, 2014, 2015.
# Alexander Shopov <ash@kambanaria.org>, 2016.
# Vladimir Petkov <kaladan@gmail.com>, 2004. # Vladimir Petkov <kaladan@gmail.com>, 2004.
# Rostislav Raykov <zbrox@i-space.org>, 2004. # Rostislav Raykov <zbrox@i-space.org>, 2004.
# Yavor Doganov <yavor@gnu.org>, 2008. # Yavor Doganov <yavor@gnu.org>, 2008.
@@ -12,10 +11,9 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: mutter master\n" "Project-Id-Version: mutter master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "Report-Msgid-Bugs-To: \n"
"product=mutter&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-03-10 09:51+0200\n"
"POT-Creation-Date: 2016-09-08 06:33+0300\n" "PO-Revision-Date: 2015-03-10 09:51+0200\n"
"PO-Revision-Date: 2016-09-05 16:27+0300\n"
"Last-Translator: Alexander Shopov <ash@kambanaria.org>\n" "Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n" "Language-Team: Bulgarian <dict@fsa-bg.org>\n"
"Language: bg\n" "Language: bg\n"
@@ -24,44 +22,471 @@ msgstr ""
"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"
#: ../src/backends/meta-input-settings.c:1707 #: ../data/50-mutter-navigation.xml.in.h:1
msgid "Switch monitor" msgid "Navigation"
msgstr "Смяна на екрана" msgstr "Навигация"
#: ../src/backends/meta-input-settings.c:1709 #: ../data/50-mutter-navigation.xml.in.h:2
msgid "Show on-screen help" msgid "Move window to workspace 1"
msgstr "Показване на помощта на екрана" msgstr "Преместване на прозореца на работен плот 1"
#: ../src/backends/meta-monitor-manager.c:514 #: ../data/50-mutter-navigation.xml.in.h:3
msgid "Move window to workspace 2"
msgstr "Преместване на прозореца на работен плот 2"
#: ../data/50-mutter-navigation.xml.in.h:4
msgid "Move window to workspace 3"
msgstr "Преместване на прозореца на работен плот 3"
#: ../data/50-mutter-navigation.xml.in.h:5
msgid "Move window to workspace 4"
msgstr "Преместване на прозореца на работен плот 4"
#: ../data/50-mutter-navigation.xml.in.h:6
msgid "Move window to last workspace"
msgstr "Преместване на прозореца на последния работен плот"
#: ../data/50-mutter-navigation.xml.in.h:7
msgid "Move window one workspace to the left"
msgstr "Преместване на прозореца един работен плот наляво"
#: ../data/50-mutter-navigation.xml.in.h:8
msgid "Move window one workspace to the right"
msgstr "Преместване на прозореца един работен плот надясно"
#: ../data/50-mutter-navigation.xml.in.h:9
msgid "Move window one workspace up"
msgstr "Преместване на прозореца един работен плот нагоре"
#: ../data/50-mutter-navigation.xml.in.h:10
msgid "Move window one workspace down"
msgstr "Преместване на прозореца един работен плот надолу"
#: ../data/50-mutter-navigation.xml.in.h:11
msgid "Move window one monitor to the left"
msgstr "Преместване на прозореца един екран наляво"
#: ../data/50-mutter-navigation.xml.in.h:12
msgid "Move window one monitor to the right"
msgstr "Преместване на прозореца един екран надясно"
#: ../data/50-mutter-navigation.xml.in.h:13
msgid "Move window one monitor up"
msgstr "Преместване на прозореца един екран нагоре"
#: ../data/50-mutter-navigation.xml.in.h:14
msgid "Move window one monitor down"
msgstr "Преместване на прозореца един екран надолу"
#: ../data/50-mutter-navigation.xml.in.h:15
msgid "Switch applications"
msgstr "Преместване на фокуса между програмите"
#: ../data/50-mutter-navigation.xml.in.h:16
msgid "Switch to previous application"
msgstr "Преместване на фокуса към предишната програма"
#: ../data/50-mutter-navigation.xml.in.h:17
msgid "Switch windows"
msgstr "Преместване на фокуса между прозорците"
#: ../data/50-mutter-navigation.xml.in.h:18
msgid "Switch to previous window"
msgstr "Преместване на фокуса към предишния прозорец"
#: ../data/50-mutter-navigation.xml.in.h:19
msgid "Switch windows of an application"
msgstr "Преместване на фокуса между прозорците на една програма"
#: ../data/50-mutter-navigation.xml.in.h:20
msgid "Switch to previous window of an application"
msgstr "Преместване на фокуса към предишния прозорец на програма"
#: ../data/50-mutter-navigation.xml.in.h:21
msgid "Switch system controls"
msgstr "Преместване на фокуса между служебните обекти"
#: ../data/50-mutter-navigation.xml.in.h:22
msgid "Switch to previous system control"
msgstr "Преместване на фокуса към предишния служебен обект"
#: ../data/50-mutter-navigation.xml.in.h:23
msgid "Switch windows directly"
msgstr "Незабавно преместване на фокуса между прозорците"
#: ../data/50-mutter-navigation.xml.in.h:24
msgid "Switch directly to previous window"
msgstr "Незабавно преместване на фокуса към предишния прозорец"
#: ../data/50-mutter-navigation.xml.in.h:25
msgid "Switch windows of an app directly"
msgstr "Незабавно преместване на фокуса между прозорците на една програма"
#: ../data/50-mutter-navigation.xml.in.h:26
msgid "Switch directly to previous window of an app"
msgstr ""
"Незабавно преместване на фокуса към предишния прозорец на една програма"
#: ../data/50-mutter-navigation.xml.in.h:27
msgid "Switch system controls directly"
msgstr "Незабавно преместване на фокуса между служебните обекти"
#: ../data/50-mutter-navigation.xml.in.h:28
msgid "Switch directly to previous system control"
msgstr "Незабавно преместване на фокуса към предишния служебен обект"
#: ../data/50-mutter-navigation.xml.in.h:29
msgid "Hide all normal windows"
msgstr "Скриване на всички обикновени прозорци"
#: ../data/50-mutter-navigation.xml.in.h:30
msgid "Switch to workspace 1"
msgstr "Превключване към работен плот 1"
#: ../data/50-mutter-navigation.xml.in.h:31
msgid "Switch to workspace 2"
msgstr "Превключване към работен плот 2"
#: ../data/50-mutter-navigation.xml.in.h:32
msgid "Switch to workspace 3"
msgstr "Превключване към работен плот 3"
#: ../data/50-mutter-navigation.xml.in.h:33
msgid "Switch to workspace 4"
msgstr "Превключване към работен плот 4"
#: ../data/50-mutter-navigation.xml.in.h:34
msgid "Switch to last workspace"
msgstr "Превключване към последния работен плот"
#: ../data/50-mutter-navigation.xml.in.h:35
msgid "Move to workspace left"
msgstr "Преместване на левия работен плот"
#: ../data/50-mutter-navigation.xml.in.h:36
msgid "Move to workspace right"
msgstr "Преместване на десния работен плот"
#: ../data/50-mutter-navigation.xml.in.h:37
msgid "Move to workspace above"
msgstr "Преместване на горния работен плот"
#: ../data/50-mutter-navigation.xml.in.h:38
msgid "Move to workspace below"
msgstr "Преместване на долния работен плот"
#: ../data/50-mutter-system.xml.in.h:1
msgid "System"
msgstr "Система"
#: ../data/50-mutter-system.xml.in.h:2
msgid "Show the run command prompt"
msgstr "Показване на прозореца за стартиране на команда"
#: ../data/50-mutter-system.xml.in.h:3
msgid "Show the activities overview"
msgstr "Преглед на дейностите"
#: ../data/50-mutter-windows.xml.in.h:1
msgid "Windows"
msgstr "Прозорци"
#: ../data/50-mutter-windows.xml.in.h:2
msgid "Activate the window menu"
msgstr "Задействане на менюто за прозорците"
#: ../data/50-mutter-windows.xml.in.h:3
msgid "Toggle fullscreen mode"
msgstr "Превключване на режима за цял екран"
#: ../data/50-mutter-windows.xml.in.h:4
msgid "Toggle maximization state"
msgstr "Превключване на състоянието на максимизиране"
#: ../data/50-mutter-windows.xml.in.h:5
msgid "Maximize window"
msgstr "Максимизиране на прозорец"
#: ../data/50-mutter-windows.xml.in.h:6
msgid "Restore window"
msgstr "Възстановяване на прозорец"
#: ../data/50-mutter-windows.xml.in.h:7
msgid "Toggle shaded state"
msgstr "Превключване на състоянието на навиване"
#: ../data/50-mutter-windows.xml.in.h:8
msgid "Close window"
msgstr "Затваряне на прозореца"
#: ../data/50-mutter-windows.xml.in.h:9
msgid "Hide window"
msgstr "Скриване на прозорец"
#: ../data/50-mutter-windows.xml.in.h:10
msgid "Move window"
msgstr "Преместване на прозорец"
#: ../data/50-mutter-windows.xml.in.h:11
msgid "Resize window"
msgstr "Оразмеряване на прозорец"
#: ../data/50-mutter-windows.xml.in.h:12
msgid "Toggle window on all workspaces or one"
msgstr "Превключване на появата на прозореца на всички работни места"
#: ../data/50-mutter-windows.xml.in.h:13
msgid "Raise window if covered, otherwise lower it"
msgstr "Ако прозорецът е под друг, го издига, иначе го понижава"
#: ../data/50-mutter-windows.xml.in.h:14
msgid "Raise window above other windows"
msgstr "Издигане на прозореца над другите"
#: ../data/50-mutter-windows.xml.in.h:15
msgid "Lower window below other windows"
msgstr "Понижаване на прозореца под другите прозорци"
#: ../data/50-mutter-windows.xml.in.h:16
msgid "Maximize window vertically"
msgstr "Максимизиране на прозореца вертикално"
#: ../data/50-mutter-windows.xml.in.h:17
msgid "Maximize window horizontally"
msgstr "Максимизиране на прозореца хоризонтално"
#: ../data/50-mutter-windows.xml.in.h:18
msgid "View split on left"
msgstr "Изглед разделен отляво"
#: ../data/50-mutter-windows.xml.in.h:19
msgid "View split on right"
msgstr "Изглед разделен отдясно"
#: ../data/mutter.desktop.in.h:1
msgid "Mutter"
msgstr "Mutter"
#: ../data/org.gnome.mutter.gschema.xml.in.h:1
msgid "Modifier to use for extended window management operations"
msgstr ""
"Модификатор, който да се ползва за допълнителните действия по прозорците"
#: ../data/org.gnome.mutter.gschema.xml.in.h:2
msgid ""
"This key will initiate the \"overlay\", which is a combination window "
"overview and application launching system. The default is intended to be the "
"\"Windows key\" on PC hardware. It's expected that this binding either the "
"default or set to the empty string."
msgstr ""
"Този клавиш стартира наслагването, което е комбинация от прозорец и система "
"за стартиране на програми. Стандартно клавишът е „Windows“ при системите "
"съвместими с PC. Очаква се да е или стандартната стойност или празен низ."
#: ../data/org.gnome.mutter.gschema.xml.in.h:3
msgid "Attach modal dialogs"
msgstr "Прилепени модални диалогови прозорци"
#: ../data/org.gnome.mutter.gschema.xml.in.h:4
msgid ""
"When true, instead of having independent titlebars, modal dialogs appear "
"attached to the titlebar of the parent window and are moved together with "
"the parent window."
msgstr ""
"Когато е ключът е истина, модалните диалогови прозорци прилепват към "
"заглавната лента на родителския си прозорец и се местят с него, вместо да са "
"отделни и да имат собствена заглавна лента."
#: ../data/org.gnome.mutter.gschema.xml.in.h:5
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
"Включване на прилепването и максимизирането на прозорците по границите на "
"екрана"
#: ../data/org.gnome.mutter.gschema.xml.in.h:6
msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
"area. Dropping windows on the top screen edge maximizes them completely."
msgstr ""
"Ако е включено, прозорците ще се максимизират по вертикала и ще заемат "
"половината площ по хоризонтала при поставянето им край вертикалните граници "
"на екрана. При поставянето им край горната граница прозорците ще се "
"максимизират изцяло."
#: ../data/org.gnome.mutter.gschema.xml.in.h:7
msgid "Workspaces are managed dynamically"
msgstr "Динамично управление на работните места"
#: ../data/org.gnome.mutter.gschema.xml.in.h:8
msgid ""
"Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org."
"gnome.desktop.wm.preferences)."
msgstr ""
"Определя дали се ползва динамично управление на работните места или броят им "
"е установено число (зададено чрез ключа „num-workspaces“ в „org.gnome."
"desktop.wm.preferences“)."
#: ../data/org.gnome.mutter.gschema.xml.in.h:9
msgid "Workspaces only on primary"
msgstr "Работни плотове само на основния екран"
#: ../data/org.gnome.mutter.gschema.xml.in.h:10
msgid ""
"Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor."
msgstr ""
"Дали смяната на работни плотове да се извършва на всички екрани или само на "
"основния."
#: ../data/org.gnome.mutter.gschema.xml.in.h:11
msgid "No tab popup"
msgstr "Без изскачащ прозорец при обхождане"
#: ../data/org.gnome.mutter.gschema.xml.in.h:12
msgid ""
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
msgstr ""
"Дали отбелязването на рамка и изскачащият прозорец при обхождане на "
"прозорците да се изключат."
#: ../data/org.gnome.mutter.gschema.xml.in.h:13
msgid "Delay focus changes until the pointer stops moving"
msgstr "Смяната на фокуса да изчака спирането на показалеца"
#: ../data/org.gnome.mutter.gschema.xml.in.h:14
msgid ""
"If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then "
"the focus will not be changed immediately when entering a window, but only "
"after the pointer stops moving."
msgstr ""
"Ако е включено и начинът за фокусиране е „sloppy“ (мързеливо) или "
"„mouse“ (под мишката), тогава фокусът няма да се предава веднага при "
"навлизането в прозорец, а едва след като показалецът спре да се движи."
#: ../data/org.gnome.mutter.gschema.xml.in.h:15
msgid "Draggable border width"
msgstr "Широчина на границата за влачене"
#: ../data/org.gnome.mutter.gschema.xml.in.h:16
msgid ""
"The amount of total draggable borders. If the theme's visible borders are "
"not enough, invisible borders will be added to meet this value."
msgstr ""
"Общ размер на границите за влачене. Ако видимите граници на темата са по-"
"малки, се добавят невидими граници, за да се достигне тази величина."
#: ../data/org.gnome.mutter.gschema.xml.in.h:17
msgid "Auto maximize nearly monitor sized windows"
msgstr ""
"Автоматично максимизиране на прозорци с размер близък до този на екрана"
#: ../data/org.gnome.mutter.gschema.xml.in.h:18
msgid ""
"If enabled, new windows that are initially the size of the monitor "
"automatically get maximized."
msgstr ""
"Ако е включено, новите прозорци, чийто размер е близък на този на екрана, "
"автоматично ще се максимизират."
#: ../data/org.gnome.mutter.gschema.xml.in.h:19
msgid "Place new windows in the center"
msgstr "Поставяне на новите прозорци в центъра на екрана"
#: ../data/org.gnome.mutter.gschema.xml.in.h:20
msgid ""
"When true, the new windows will always be put in the center of the active "
"screen of the monitor."
msgstr "Ако е включено, новите прозорци ще се поставят в центъра на екрана."
#: ../data/org.gnome.mutter.gschema.xml.in.h:21
msgid "Select window from tab popup"
msgstr "Избиране при обхождане чрез изскачащ прозорец"
#: ../data/org.gnome.mutter.gschema.xml.in.h:22
msgid "Cancel tab popup"
msgstr "Без изскачащ прозорец при обхождане"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1
msgid "Switch to VT 1"
msgstr "Превключване към виртуална графична конзола 1"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:2
msgid "Switch to VT 2"
msgstr "Превключване към виртуална графична конзола 2"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:3
msgid "Switch to VT 3"
msgstr "Превключване към виртуална графична конзола 3"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:4
msgid "Switch to VT 4"
msgstr "Превключване към виртуална графична конзола 4"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:5
msgid "Switch to VT 5"
msgstr "Превключване към виртуална графична конзола 5"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:6
msgid "Switch to VT 6"
msgstr "Превключване към виртуална графична конзола 6"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:7
msgid "Switch to VT 7"
msgstr "Превключване към виртуална графична конзола 7"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
msgid "Switch to VT 8"
msgstr "Превключване към виртуална графична конзола 8"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
msgid "Switch to VT 9"
msgstr "Превключване към виртуална графична конзола 9"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
msgid "Switch to VT 10"
msgstr "Превключване към виртуална графична конзола 10"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
msgid "Switch to VT 11"
msgstr "Превключване към виртуална графична конзола 11"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
msgid "Switch to VT 12"
msgstr "Превключване към виртуална графична конзола 12"
#: ../src/backends/meta-monitor-manager.c:364
msgid "Built-in display" msgid "Built-in display"
msgstr "Вграден екран" msgstr "Вграден екран"
#: ../src/backends/meta-monitor-manager.c:537 #: ../src/backends/meta-monitor-manager.c:391
msgid "Unknown" msgid "Unknown"
msgstr "Непознат" msgstr "Непознат"
#: ../src/backends/meta-monitor-manager.c:539 #: ../src/backends/meta-monitor-manager.c:393
msgid "Unknown Display" msgid "Unknown Display"
msgstr "Непознат екран" msgstr "Непознат екран"
#. TRANSLATORS: this is a monitor vendor name, followed by a #. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"' #. * size in inches, like 'Dell 15"'
#. #.
#: ../src/backends/meta-monitor-manager.c:547 #: ../src/backends/meta-monitor-manager.c:401
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" 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:463 #: ../src/compositor/compositor.c:456
#, 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 "На екран %i от дисплея „%s“ вече има мениджър за наслагване." msgstr "На екран %i от дисплея „%s“ вече има мениджър за наслагване."
#: ../src/core/bell.c:194 #: ../src/core/bell.c:185
msgid "Bell event" msgid "Bell event"
msgstr "Събитие за звънец" msgstr "Събитие за звънец"
@@ -90,48 +515,44 @@ msgstr "Из_чакване"
msgid "_Force Quit" msgid "_Force Quit"
msgstr "_Принудително спиране" msgstr "_Принудително спиране"
#: ../src/core/display.c:590 #: ../src/core/display.c:562
#, 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 "Неуспешно отваряне на дисплея на X Window „%s“\n" msgstr "Неуспешно отваряне на дисплея на X Window „%s“\n"
#: ../src/core/main.c:182 #: ../src/core/main.c:176
msgid "Disable connection to session manager" msgid "Disable connection to session manager"
msgstr "Прекъсване на връзката към мениджъра на сесиите" msgstr "Прекъсване на връзката към мениджъра на сесиите"
#: ../src/core/main.c:188 #: ../src/core/main.c:182
msgid "Replace the running window manager" msgid "Replace the running window manager"
msgstr "Замяна на текущия мениджър на прозорци" msgstr "Замяна на текущия мениджър на прозорци"
#: ../src/core/main.c:194 #: ../src/core/main.c:188
msgid "Specify session management ID" msgid "Specify session management ID"
msgstr "Определяне на идентификатор за управлението на сесии" msgstr "Определяне на идентификатор за управлението на сесии"
#: ../src/core/main.c:199 #: ../src/core/main.c:193
msgid "X Display to use" msgid "X Display to use"
msgstr "X дисплеят, който да се използва" msgstr "X дисплеят, който да се използва"
# Ако „запазено“ не се членува, низът се събира на един ред без # Ако „запазено“ не се членува, низът се събира на един ред без
# пренасяне. # пренасяне.
#: ../src/core/main.c:205 #: ../src/core/main.c:199
msgid "Initialize session from savefile" msgid "Initialize session from savefile"
msgstr "Инициализиране на сесия от файл със запазено състояние" msgstr "Инициализиране на сесия от файл със запазено състояние"
#: ../src/core/main.c:211 #: ../src/core/main.c:205
msgid "Make X calls synchronous" msgid "Make X calls synchronous"
msgstr "Извикванията на X да са синхронни" msgstr "Извикванията на X да са синхронни"
#: ../src/core/main.c:218 #: ../src/core/main.c:212
msgid "Run as a wayland compositor" msgid "Run as a wayland compositor"
msgstr "Wayland да е мениджър за наслагване" msgstr "Wayland да е мениджър за наслагване"
#: ../src/core/main.c:224 #: ../src/core/main.c:220
msgid "Run as a nested compositor"
msgstr "Изпълнение като вложен сървър за изобразяване"
#: ../src/core/main.c:232
msgid "Run as a full display server, rather than nested" msgid "Run as a full display server, rather than nested"
msgstr "Изпълнение като самостоятелен, а не вложен сървър за изобразяване" msgstr "Изпълнение като самостоятелен, а не вграден сървър за изобразяване"
#: ../src/core/mutter.c:39 #: ../src/core/mutter.c:39
#, c-format #, c-format
@@ -157,12 +578,12 @@ msgstr "Отпечатване на версията на програмата"
msgid "Mutter plugin to use" msgid "Mutter plugin to use"
msgstr "Приставка, която да се ползва" msgstr "Приставка, която да се ползва"
#: ../src/core/prefs.c:1997 #: ../src/core/prefs.c:2004
#, c-format #, c-format
msgid "Workspace %d" msgid "Workspace %d"
msgstr "Работен плот %d" msgstr "Работен плот %d"
#: ../src/core/screen.c:521 #: ../src/core/screen.c:525
#, c-format #, c-format
msgid "" msgid ""
"Display \"%s\" already has a window manager; try using the --replace option " "Display \"%s\" already has a window manager; try using the --replace option "
@@ -171,20 +592,15 @@ msgstr ""
"Вече има мениджър на прозорци на дисплей „%s“. Пробвайте да го замените с " "Вече има мениджър на прозорци на дисплей „%s“. Пробвайте да го замените с "
"опцията „--replace“." "опцията „--replace“."
#: ../src/core/screen.c:606 #: ../src/core/screen.c:607
#, c-format #, c-format
msgid "Screen %d on display '%s' is invalid\n" msgid "Screen %d on display '%s' is invalid\n"
msgstr "Екранът %d на дисплей „%s“ е невалиден\n" msgstr "Екранът %d на дисплей „%s“ е невалиден\n"
#: ../src/core/util.c:120 #: ../src/core/util.c:118
msgid "Mutter was compiled without support for verbose mode\n" msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter е компилиран без поддръжка на подробен режим\n" msgstr "Mutter е компилиран без поддръжка на подробен режим\n"
#: ../src/wayland/meta-wayland-tablet-pad.c:595
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Смяна на режима: режим %d"
#: ../src/x11/session.c:1815 #: ../src/x11/session.c:1815
msgid "" msgid ""
"These windows do not support &quot;save current setup&quot; and will have to " "These windows do not support &quot;save current setup&quot; and will have to "
@@ -193,345 +609,7 @@ msgstr ""
"Тези прозорци не поддържат операцията по записване на текущото състояние и " "Тези прозорци не поддържат операцията по записване на текущото състояние и "
"ще трябва да се стартират ръчно при следващото ви влизане." "ще трябва да се стартират ръчно при следващото ви влизане."
#: ../src/x11/window-props.c:548 #: ../src/x11/window-props.c:549
#, c-format #, c-format
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (от %s)" msgstr "%s (от %s)"
#~ msgid "Navigation"
#~ msgstr "Навигация"
#~ msgid "Move window to workspace 1"
#~ msgstr "Преместване на прозореца на работен плот 1"
#~ msgid "Move window to workspace 2"
#~ msgstr "Преместване на прозореца на работен плот 2"
#~ msgid "Move window to workspace 3"
#~ msgstr "Преместване на прозореца на работен плот 3"
#~ msgid "Move window to workspace 4"
#~ msgstr "Преместване на прозореца на работен плот 4"
#~ msgid "Move window to last workspace"
#~ msgstr "Преместване на прозореца на последния работен плот"
#~ msgid "Move window one workspace to the left"
#~ msgstr "Преместване на прозореца един работен плот наляво"
#~ msgid "Move window one workspace to the right"
#~ msgstr "Преместване на прозореца един работен плот надясно"
#~ msgid "Move window one workspace up"
#~ msgstr "Преместване на прозореца един работен плот нагоре"
#~ msgid "Move window one workspace down"
#~ msgstr "Преместване на прозореца един работен плот надолу"
#~ msgid "Move window one monitor to the left"
#~ msgstr "Преместване на прозореца един екран наляво"
#~ msgid "Move window one monitor to the right"
#~ msgstr "Преместване на прозореца един екран надясно"
#~ msgid "Move window one monitor up"
#~ msgstr "Преместване на прозореца един екран нагоре"
#~ msgid "Move window one monitor down"
#~ msgstr "Преместване на прозореца един екран надолу"
#~ msgid "Switch applications"
#~ msgstr "Преместване на фокуса между програмите"
#~ msgid "Switch to previous application"
#~ msgstr "Преместване на фокуса към предишната програма"
#~ msgid "Switch windows"
#~ msgstr "Преместване на фокуса между прозорците"
#~ msgid "Switch to previous window"
#~ msgstr "Преместване на фокуса към предишния прозорец"
#~ msgid "Switch windows of an application"
#~ msgstr "Преместване на фокуса между прозорците на една програма"
#~ msgid "Switch to previous window of an application"
#~ msgstr "Преместване на фокуса към предишния прозорец на програма"
#~ msgid "Switch to previous system control"
#~ msgstr "Преместване на фокуса към предишния служебен обект"
#~ msgid "Switch windows directly"
#~ msgstr "Незабавно преместване на фокуса между прозорците"
#~ msgid "Switch directly to previous window"
#~ msgstr "Незабавно преместване на фокуса към предишния прозорец"
#~ msgid "Switch windows of an app directly"
#~ msgstr "Незабавно преместване на фокуса между прозорците на една програма"
#~ msgid "Switch directly to previous window of an app"
#~ msgstr ""
#~ "Незабавно преместване на фокуса към предишния прозорец на една програма"
#~ msgid "Switch system controls directly"
#~ msgstr "Незабавно преместване на фокуса между служебните обекти"
#~ msgid "Switch directly to previous system control"
#~ msgstr "Незабавно преместване на фокуса към предишния служебен обект"
#~ msgid "Hide all normal windows"
#~ msgstr "Скриване на всички обикновени прозорци"
#~ msgid "Switch to workspace 1"
#~ msgstr "Превключване към работен плот 1"
#~ msgid "Switch to workspace 2"
#~ msgstr "Превключване към работен плот 2"
#~ msgid "Switch to workspace 3"
#~ msgstr "Превключване към работен плот 3"
#~ msgid "Switch to workspace 4"
#~ msgstr "Превключване към работен плот 4"
#~ msgid "Switch to last workspace"
#~ msgstr "Превключване към последния работен плот"
#~ msgid "Move to workspace left"
#~ msgstr "Преместване на левия работен плот"
#~ msgid "Move to workspace right"
#~ msgstr "Преместване на десния работен плот"
#~ msgid "Move to workspace above"
#~ msgstr "Преместване на горния работен плот"
#~ msgid "Move to workspace below"
#~ msgstr "Преместване на долния работен плот"
#~ msgid "System"
#~ msgstr "Система"
#~ msgid "Show the run command prompt"
#~ msgstr "Показване на прозореца за стартиране на команда"
#~ msgid "Show the activities overview"
#~ msgstr "Преглед на дейностите"
#~ msgid "Windows"
#~ msgstr "Прозорци"
#~ msgid "Activate the window menu"
#~ msgstr "Задействане на менюто за прозорците"
#~ msgid "Toggle fullscreen mode"
#~ msgstr "Превключване на режима за цял екран"
#~ msgid "Toggle maximization state"
#~ msgstr "Превключване на състоянието на максимизиране"
#~ msgid "Maximize window"
#~ msgstr "Максимизиране на прозорец"
#~ msgid "Restore window"
#~ msgstr "Възстановяване на прозорец"
#~ msgid "Toggle shaded state"
#~ msgstr "Превключване на състоянието на навиване"
#~ msgid "Close window"
#~ msgstr "Затваряне на прозореца"
#~ msgid "Hide window"
#~ msgstr "Скриване на прозорец"
#~ msgid "Move window"
#~ msgstr "Преместване на прозорец"
#~ msgid "Resize window"
#~ msgstr "Оразмеряване на прозорец"
#~ msgid "Toggle window on all workspaces or one"
#~ msgstr "Превключване на появата на прозореца на всички работни места"
#~ msgid "Raise window if covered, otherwise lower it"
#~ msgstr "Ако прозорецът е под друг, го издига, иначе го понижава"
#~ msgid "Raise window above other windows"
#~ msgstr "Издигане на прозореца над другите"
#~ msgid "Lower window below other windows"
#~ msgstr "Понижаване на прозореца под другите прозорци"
#~ msgid "Maximize window vertically"
#~ msgstr "Максимизиране на прозореца вертикално"
#~ msgid "Maximize window horizontally"
#~ msgstr "Максимизиране на прозореца хоризонтално"
#~ msgid "View split on left"
#~ msgstr "Изглед разделен отляво"
#~ msgid "View split on right"
#~ msgstr "Изглед разделен отдясно"
#~ msgid "Mutter"
#~ msgstr "Mutter"
#~ msgid "Modifier to use for extended window management operations"
#~ msgstr ""
#~ "Модификатор, който да се ползва за допълнителните действия по прозорците"
#~ msgid ""
#~ "This key will initiate the \"overlay\", which is a combination window "
#~ "overview and application launching system. The default is intended to be "
#~ "the \"Windows key\" on PC hardware. It's expected that this binding "
#~ "either the default or set to the empty string."
#~ msgstr ""
#~ "Този клавиш стартира наслагването, което е комбинация от прозорец и "
#~ "система за стартиране на програми. Стандартно клавишът е „Windows“ при "
#~ "системите съвместими с PC. Очаква се да е или стандартната стойност или "
#~ "празен низ."
#~ msgid "Attach modal dialogs"
#~ msgstr "Прилепени модални диалогови прозорци"
#~ msgid ""
#~ "When true, instead of having independent titlebars, modal dialogs appear "
#~ "attached to the titlebar of the parent window and are moved together with "
#~ "the parent window."
#~ msgstr ""
#~ "Когато е ключът е истина, модалните диалогови прозорци прилепват към "
#~ "заглавната лента на родителския си прозорец и се местят с него, вместо да "
#~ "са отделни и да имат собствена заглавна лента."
#~ msgid "Enable edge tiling when dropping windows on screen edges"
#~ msgstr ""
#~ "Включване на прилепването и максимизирането на прозорците по границите на "
#~ "екрана"
#~ msgid ""
#~ "If enabled, dropping windows on vertical screen edges maximizes them "
#~ "vertically and resizes them horizontally to cover half of the available "
#~ "area. Dropping windows on the top screen edge maximizes them completely."
#~ msgstr ""
#~ "Ако е включено, прозорците ще се максимизират по вертикала и ще заемат "
#~ "половината площ по хоризонтала при поставянето им край вертикалните "
#~ "граници на екрана. При поставянето им край горната граница прозорците ще "
#~ "се максимизират изцяло."
#~ msgid "Workspaces are managed dynamically"
#~ msgstr "Динамично управление на работните места"
#~ msgid ""
#~ "Determines whether workspaces are managed dynamically or whether there's "
#~ "a static number of workspaces (determined by the num-workspaces key in "
#~ "org.gnome.desktop.wm.preferences)."
#~ msgstr ""
#~ "Определя дали се ползва динамично управление на работните места или броят "
#~ "им е установено число (зададено чрез ключа „num-workspaces“ в „org.gnome."
#~ "desktop.wm.preferences“)."
#~ msgid "Workspaces only on primary"
#~ msgstr "Работни плотове само на основния екран"
#~ msgid ""
#~ "Determines whether workspace switching should happen for windows on all "
#~ "monitors or only for windows on the primary monitor."
#~ msgstr ""
#~ "Дали смяната на работни плотове да се извършва на всички екрани или само "
#~ "на основния."
#~ msgid "No tab popup"
#~ msgstr "Без изскачащ прозорец при обхождане"
#~ msgid ""
#~ "Determines whether the use of popup and highlight frame should be "
#~ "disabled for window cycling."
#~ msgstr ""
#~ "Дали отбелязването на рамка и изскачащият прозорец при обхождане на "
#~ "прозорците да се изключат."
#~ msgid "Delay focus changes until the pointer stops moving"
#~ msgstr "Смяната на фокуса да изчака спирането на показалеца"
#~ msgid ""
#~ "If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then "
#~ "the focus will not be changed immediately when entering a window, but "
#~ "only after the pointer stops moving."
#~ msgstr ""
#~ "Ако е включено и начинът за фокусиране е „sloppy“ (мързеливо) или "
#~ "„mouse“ (под мишката), тогава фокусът няма да се предава веднага при "
#~ "навлизането в прозорец, а едва след като показалецът спре да се движи."
#~ msgid "Draggable border width"
#~ msgstr "Широчина на границата за влачене"
#~ msgid ""
#~ "The amount of total draggable borders. If the theme's visible borders are "
#~ "not enough, invisible borders will be added to meet this value."
#~ msgstr ""
#~ "Общ размер на границите за влачене. Ако видимите граници на темата са по-"
#~ "малки, се добавят невидими граници, за да се достигне тази величина."
#~ msgid "Auto maximize nearly monitor sized windows"
#~ msgstr ""
#~ "Автоматично максимизиране на прозорци с размер близък до този на екрана"
#~ msgid ""
#~ "If enabled, new windows that are initially the size of the monitor "
#~ "automatically get maximized."
#~ msgstr ""
#~ "Ако е включено, новите прозорци, чийто размер е близък на този на екрана, "
#~ "автоматично ще се максимизират."
#~ msgid "Place new windows in the center"
#~ msgstr "Поставяне на новите прозорци в центъра на екрана"
#~ msgid ""
#~ "When true, the new windows will always be put in the center of the active "
#~ "screen of the monitor."
#~ msgstr "Ако е включено, новите прозорци ще се поставят в центъра на екрана."
#~ msgid "Select window from tab popup"
#~ msgstr "Избиране при обхождане чрез изскачащ прозорец"
#~ msgid "Cancel tab popup"
#~ msgstr "Без изскачащ прозорец при обхождане"
#~ msgid "Switch to VT 1"
#~ msgstr "Превключване към виртуална графична конзола 1"
#~ msgid "Switch to VT 2"
#~ msgstr "Превключване към виртуална графична конзола 2"
#~ msgid "Switch to VT 3"
#~ msgstr "Превключване към виртуална графична конзола 3"
#~ msgid "Switch to VT 4"
#~ msgstr "Превключване към виртуална графична конзола 4"
#~ msgid "Switch to VT 5"
#~ msgstr "Превключване към виртуална графична конзола 5"
#~ msgid "Switch to VT 6"
#~ msgstr "Превключване към виртуална графична конзола 6"
#~ msgid "Switch to VT 7"
#~ msgstr "Превключване към виртуална графична конзола 7"
#~ msgid "Switch to VT 8"
#~ msgstr "Превключване към виртуална графична конзола 8"
#~ msgid "Switch to VT 9"
#~ msgstr "Превключване към виртуална графична конзола 9"
#~ msgid "Switch to VT 10"
#~ msgstr "Превключване към виртуална графична конзола 10"
#~ msgid "Switch to VT 11"
#~ msgstr "Превключване към виртуална графична конзола 11"
#~ msgid "Switch to VT 12"
#~ msgstr "Превключване към виртуална графична конзола 12"

881
po/ca.po
View File

@@ -13,7 +13,7 @@ msgstr ""
"Project-Id-Version: metacity 2.24\n" "Project-Id-Version: metacity 2.24\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n" "product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-03-20 07:06+0100\n" "POT-Creation-Date: 2016-03-13 01:36+0000\n"
"PO-Revision-Date: 2016-03-13 14:45+0100\n" "PO-Revision-Date: 2016-03-13 14:45+0100\n"
"Last-Translator: Gil Forcada <gilforcada@guifi.net>\n" "Last-Translator: Gil Forcada <gilforcada@guifi.net>\n"
"Language-Team: Catalan <tradgnome@softcatala.org>\n" "Language-Team: Catalan <tradgnome@softcatala.org>\n"
@@ -24,60 +24,484 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Gtranslator 2.91.6\n" "X-Generator: Gtranslator 2.91.6\n"
#. TRANSLATORS: This string refers to a button that switches between #: ../data/50-mutter-navigation.xml.in.h:1
#. * different modes. msgid "Navigation"
#. msgstr "Navegació"
#: ../src/backends/meta-input-settings.c:1840
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Mode de commutació (grup %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets' #: ../data/50-mutter-navigation.xml.in.h:2
#. * mapping through the available outputs. msgid "Move window to workspace 1"
#. msgstr "Mou la finestra a l'espai de treball 1"
#: ../src/backends/meta-input-settings.c:1862
msgid "Switch monitor"
msgstr "Commuta el monitor"
#: ../src/backends/meta-input-settings.c:1864 #: ../data/50-mutter-navigation.xml.in.h:3
msgid "Show on-screen help" msgid "Move window to workspace 2"
msgstr "Mostra l'ajuda en pantalla" msgstr "Mou la finestra a l'espai de treball 2"
#: ../src/backends/meta-monitor-manager.c:630 #: ../data/50-mutter-navigation.xml.in.h:4
msgid "Move window to workspace 3"
msgstr "Mou la finestra a l'espai de treball 3"
#: ../data/50-mutter-navigation.xml.in.h:5
msgid "Move window to workspace 4"
msgstr "Mou la finestra a l'espai de treball 4"
#: ../data/50-mutter-navigation.xml.in.h:6
msgid "Move window to last workspace"
msgstr "Mou la finestra a l'últim espai de treball"
#: ../data/50-mutter-navigation.xml.in.h:7
msgid "Move window one workspace to the left"
msgstr "Mou la finestra un espai de treball a l'esquerra"
#: ../data/50-mutter-navigation.xml.in.h:8
msgid "Move window one workspace to the right"
msgstr "Mou la finestra un espai de treball a la dreta"
#: ../data/50-mutter-navigation.xml.in.h:9
msgid "Move window one workspace up"
msgstr "Mou la finestra un espai de treball amunt"
#: ../data/50-mutter-navigation.xml.in.h:10
msgid "Move window one workspace down"
msgstr "Mou la finestra un espai de treball avall"
#: ../data/50-mutter-navigation.xml.in.h:11
msgid "Move window one monitor to the left"
msgstr "Mou la finestra un monitor a l'esquerra"
#: ../data/50-mutter-navigation.xml.in.h:12
msgid "Move window one monitor to the right"
msgstr "Mou la finestra un monitor a la dreta"
#: ../data/50-mutter-navigation.xml.in.h:13
msgid "Move window one monitor up"
msgstr "Mou la finestra un monitor amunt"
#: ../data/50-mutter-navigation.xml.in.h:14
msgid "Move window one monitor down"
msgstr "Mou la finestra un monitor avall"
#: ../data/50-mutter-navigation.xml.in.h:15
msgid "Switch applications"
msgstr "Canvia d'aplicacions"
#: ../data/50-mutter-navigation.xml.in.h:16
msgid "Switch to previous application"
msgstr "Canvia a l'aplicació anterior"
#: ../data/50-mutter-navigation.xml.in.h:17
msgid "Switch windows"
msgstr "Canvia de finestres"
#: ../data/50-mutter-navigation.xml.in.h:18
msgid "Switch to previous window"
msgstr "Canvia a la finestra anterior"
#: ../data/50-mutter-navigation.xml.in.h:19
msgid "Switch windows of an application"
msgstr "Canvia entre les finestres d'una aplicació"
#: ../data/50-mutter-navigation.xml.in.h:20
msgid "Switch to previous window of an application"
msgstr "Canvia a la finestra anterior d'una aplicació"
#: ../data/50-mutter-navigation.xml.in.h:21
msgid "Switch system controls"
msgstr "Canvia entre els controls del sistema"
#: ../data/50-mutter-navigation.xml.in.h:22
msgid "Switch to previous system control"
msgstr "Canvia al control del sistema anterior"
#: ../data/50-mutter-navigation.xml.in.h:23
msgid "Switch windows directly"
msgstr "Canvia immediatament entre finestres"
#: ../data/50-mutter-navigation.xml.in.h:24
msgid "Switch directly to previous window"
msgstr "Canvia immediatament a la finestra anterior"
#: ../data/50-mutter-navigation.xml.in.h:25
msgid "Switch windows of an app directly"
msgstr "Canvia immediatament entre les finestres d'una aplicació"
#: ../data/50-mutter-navigation.xml.in.h:26
msgid "Switch directly to previous window of an app"
msgstr "Canvia immediatament a la finestra anterior d'una aplicació"
#: ../data/50-mutter-navigation.xml.in.h:27
msgid "Switch system controls directly"
msgstr "Canvia immediatament entre els controls del sistema"
#: ../data/50-mutter-navigation.xml.in.h:28
msgid "Switch directly to previous system control"
msgstr "Canvia immediatament al control del sistema anterior"
#: ../data/50-mutter-navigation.xml.in.h:29
msgid "Hide all normal windows"
msgstr "Oculta totes les finestres normals"
#: ../data/50-mutter-navigation.xml.in.h:30
msgid "Switch to workspace 1"
msgstr "Canvia a l'espai de treball 1"
#: ../data/50-mutter-navigation.xml.in.h:31
msgid "Switch to workspace 2"
msgstr "Canvia a l'espai de treball 2"
#: ../data/50-mutter-navigation.xml.in.h:32
msgid "Switch to workspace 3"
msgstr "Canvia a l'espai de treball 3"
#: ../data/50-mutter-navigation.xml.in.h:33
msgid "Switch to workspace 4"
msgstr "Canvia a l'espai de treball 4"
#: ../data/50-mutter-navigation.xml.in.h:34
msgid "Switch to last workspace"
msgstr "Canvia a l'últim espai de treball"
#: ../data/50-mutter-navigation.xml.in.h:35
msgid "Move to workspace left"
msgstr "Mou a l'espai de treball de l'esquerra"
#: ../data/50-mutter-navigation.xml.in.h:36
msgid "Move to workspace right"
msgstr "Mou a l'espai de treball de la dreta"
#: ../data/50-mutter-navigation.xml.in.h:37
msgid "Move to workspace above"
msgstr "Mou a l'espai de treball de sobre"
#: ../data/50-mutter-navigation.xml.in.h:38
msgid "Move to workspace below"
msgstr "Mou a l'espai de treball de sota"
#: ../data/50-mutter-system.xml.in.h:1
msgid "System"
msgstr "Sistema"
#: ../data/50-mutter-system.xml.in.h:2
msgid "Show the run command prompt"
msgstr "Mostra l'indicador d'execució d'aplicacions"
#: ../data/50-mutter-system.xml.in.h:3
msgid "Show the activities overview"
msgstr "Mostra la vista general d'activitats"
#: ../data/50-mutter-windows.xml.in.h:1
msgid "Windows"
msgstr "Finestres"
#: ../data/50-mutter-windows.xml.in.h:2
msgid "Activate the window menu"
msgstr "Activa el menú de finestra"
#: ../data/50-mutter-windows.xml.in.h:3
msgid "Toggle fullscreen mode"
msgstr "Canvia entre el mode a pantalla completa"
#: ../data/50-mutter-windows.xml.in.h:4
msgid "Toggle maximization state"
msgstr "Canvia l'estat de maximització"
#: ../data/50-mutter-windows.xml.in.h:5
msgid "Maximize window"
msgstr "Maximitza la finestra"
#: ../data/50-mutter-windows.xml.in.h:6
msgid "Restore window"
msgstr "Restaura la finestra"
#: ../data/50-mutter-windows.xml.in.h:7
msgid "Toggle shaded state"
msgstr "Canvia l'estat d'ombrejat"
#: ../data/50-mutter-windows.xml.in.h:8
msgid "Close window"
msgstr "Tanca la finestra"
#: ../data/50-mutter-windows.xml.in.h:9
msgid "Hide window"
msgstr "Oculta la finestra"
#: ../data/50-mutter-windows.xml.in.h:10
msgid "Move window"
msgstr "Mou la finestra"
#: ../data/50-mutter-windows.xml.in.h:11
msgid "Resize window"
msgstr "Redimensiona la finestra"
#: ../data/50-mutter-windows.xml.in.h:12
msgid "Toggle window on all workspaces or one"
msgstr ""
"Canvia la funció que fa que la finestra estigui en tots els espais de "
"treball o només en un"
#: ../data/50-mutter-windows.xml.in.h:13
msgid "Raise window if covered, otherwise lower it"
msgstr "Alça la finestra si està coberta per una altra, o sinó baixa-la"
#: ../data/50-mutter-windows.xml.in.h:14
msgid "Raise window above other windows"
msgstr "Alça la finestra per damunt de les altres"
#: ../data/50-mutter-windows.xml.in.h:15
msgid "Lower window below other windows"
msgstr "Baixa la finestra sota les altres"
#: ../data/50-mutter-windows.xml.in.h:16
msgid "Maximize window vertically"
msgstr "Maximitza la finestra verticalment"
#: ../data/50-mutter-windows.xml.in.h:17
msgid "Maximize window horizontally"
msgstr "Maximitza la finestra horitzontalment"
#: ../data/50-mutter-windows.xml.in.h:18
msgid "View split on left"
msgstr "Mostra la partició a l'esquerra"
#: ../data/50-mutter-windows.xml.in.h:19
msgid "View split on right"
msgstr "Mostra la partició a la dreta"
#: ../data/mutter.desktop.in.h:1
msgid "Mutter"
msgstr "Mutter"
#: ../data/org.gnome.mutter.gschema.xml.in.h:1
msgid "Modifier to use for extended window management operations"
msgstr ""
"Modificador que s'utilitzarà per les operacions ampliades de gestió de "
"finestres"
#: ../data/org.gnome.mutter.gschema.xml.in.h:2
msgid ""
"This key will initiate the \"overlay\", which is a combination window "
"overview and application launching system. The default is intended to be the "
"\"Windows key\" on PC hardware. It's expected that this binding either the "
"default or set to the empty string."
msgstr ""
"Aquesta tecla iniciarà l'«overlay» (superposador), el qual és una combinació "
"de visualització de finestres i sistema de llançament d'aplicacions. El "
"valor predeterminat és la «tecla Windows» en maquinari basat en ordinadors "
"PC. El valor d'aquesta vinculació s'espera que sigui el predeterminat o text "
"en blanc."
#: ../data/org.gnome.mutter.gschema.xml.in.h:3
msgid "Attach modal dialogs"
msgstr "Adjunta els diàlegs modals"
#: ../data/org.gnome.mutter.gschema.xml.in.h:4
msgid ""
"When true, instead of having independent titlebars, modal dialogs appear "
"attached to the titlebar of the parent window and are moved together with "
"the parent window."
msgstr ""
"Quan sigui «true» (cert), en lloc de tenir barres de títol independents, els "
"diàlegs modals apareixeran adjuntats a la barra de títol de la finestra mare "
"i es mouran juntament amb aquesta."
#: ../data/org.gnome.mutter.gschema.xml.in.h:5
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
"Habilita la tesselització a les vores en deixar anar les finestres a les "
"vores de la pantalla"
#: ../data/org.gnome.mutter.gschema.xml.in.h:6
msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
"area. Dropping windows on the top screen edge maximizes them completely."
msgstr ""
"Si s'habilita, es maximitzaran les finestres verticalment i es "
"redimensionaran horitzontalment per cobrir la meitat de l'àrea disponible en "
"deixar-les anar a les vores verticals de la pantalla. Si es deixen anar a la "
"vora superior de la pantalla es maximitzaran completament."
#: ../data/org.gnome.mutter.gschema.xml.in.h:7
msgid "Workspaces are managed dynamically"
msgstr "Els espais de treball es gestionen dinàmicament"
#: ../data/org.gnome.mutter.gschema.xml.in.h:8
msgid ""
"Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org."
"gnome.desktop.wm.preferences)."
msgstr ""
"Determina si els espais de treball es gestionen dinàmicament o hi ha un "
"nombre determinat d'espais de treball (determinat per la clau «num-"
"workspaces» a «org.gnome.desktop.wm.preferences»)."
#: ../data/org.gnome.mutter.gschema.xml.in.h:9
msgid "Workspaces only on primary"
msgstr "Espais de treball només en el primari"
#: ../data/org.gnome.mutter.gschema.xml.in.h:10
msgid ""
"Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor."
msgstr ""
"Determina si el canvi d'espai de treball hauria de ser per les finestres en "
"tots els monitors o només en les finestres del monitor primari."
#: ../data/org.gnome.mutter.gschema.xml.in.h:11
msgid "No tab popup"
msgstr "Sense finestres emergents a les pestanyes"
#: ../data/org.gnome.mutter.gschema.xml.in.h:12
msgid ""
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
msgstr ""
"Determina si s'ha d'inhabilitar el quadre que es mostra a les finestres "
"emergents i ressaltades en commutar entre finestres."
#: ../data/org.gnome.mutter.gschema.xml.in.h:13
msgid "Delay focus changes until the pointer stops moving"
msgstr "Retarda el canvi del focus fins que s'aturi el punter"
#: ../data/org.gnome.mutter.gschema.xml.in.h:14
msgid ""
"If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then "
"the focus will not be changed immediately when entering a window, but only "
"after the pointer stops moving."
msgstr ""
"Si és «true» (cert), i el mode del focus és «sloppy» o «mouse», no es "
"canviarà el focus immediatament quan s'entri a una finestra, només es "
"canviarà quan el punter deixi de moure's."
#: ../data/org.gnome.mutter.gschema.xml.in.h:15
msgid "Draggable border width"
msgstr "Amplada del contorn arrossegable"
#: ../data/org.gnome.mutter.gschema.xml.in.h:16
msgid ""
"The amount of total draggable borders. If the theme's visible borders are "
"not enough, invisible borders will be added to meet this value."
msgstr ""
"La quantitat total de contorn arrossegable. Si els contorns visibles del "
"tema no són suficients, s'afegiran contorns invisibles per aconseguir aquest "
"valor."
#: ../data/org.gnome.mutter.gschema.xml.in.h:17
msgid "Auto maximize nearly monitor sized windows"
msgstr ""
"Maximitza automàticament les finestres que gairebé facin la mida de la "
"pantalla"
#: ../data/org.gnome.mutter.gschema.xml.in.h:18
msgid ""
"If enabled, new windows that are initially the size of the monitor "
"automatically get maximized."
msgstr ""
"Si s'habilita, les finestres que inicialment gairebé fan la mida de la "
"pantalla es maximitzaran automàticament."
#: ../data/org.gnome.mutter.gschema.xml.in.h:19
msgid "Place new windows in the center"
msgstr "Posiciona les finestres noves al centre"
#: ../data/org.gnome.mutter.gschema.xml.in.h:20
msgid ""
"When true, the new windows will always be put in the center of the active "
"screen of the monitor."
msgstr ""
"Si és «true» (cert), les finestres noves seran posicionades al centre de la "
"pantalla activa del monitor."
#: ../data/org.gnome.mutter.gschema.xml.in.h:21
msgid "Select window from tab popup"
msgstr "Selecció de finestra entre les emergents d'una pestanya"
#: ../data/org.gnome.mutter.gschema.xml.in.h:22
msgid "Cancel tab popup"
msgstr "Cancel·lació de les finestres emergents a les pestanyes"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1
msgid "Switch to VT 1"
msgstr "Canvia al terminal virtual 1"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:2
msgid "Switch to VT 2"
msgstr "Canvia al terminal virtual 2"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:3
msgid "Switch to VT 3"
msgstr "Canvia al terminal virtual 3"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:4
msgid "Switch to VT 4"
msgstr "Canvia al terminal virtual 4"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:5
msgid "Switch to VT 5"
msgstr "Canvia al terminal virtual 5"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:6
msgid "Switch to VT 6"
msgstr "Canvia al terminal virtual 6"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:7
msgid "Switch to VT 7"
msgstr "Canvia al terminal virtual 7"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
msgid "Switch to VT 8"
msgstr "Canvia al terminal virtual 8"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
msgid "Switch to VT 9"
msgstr "Canvia al terminal virtual 9"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
msgid "Switch to VT 10"
msgstr "Canvia al terminal virtual 10"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
msgid "Switch to VT 11"
msgstr "Canvia al terminal virtual 11"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
msgid "Switch to VT 12"
msgstr "Canvia al terminal virtual 12"
#: ../src/backends/meta-monitor-manager.c:518
msgid "Built-in display" msgid "Built-in display"
msgstr "Pantalla integrada" msgstr "Pantalla integrada"
#: ../src/backends/meta-monitor-manager.c:653 #: ../src/backends/meta-monitor-manager.c:544
msgid "Unknown" msgid "Unknown"
msgstr "Desconeguda" msgstr "Desconeguda"
#: ../src/backends/meta-monitor-manager.c:655 #: ../src/backends/meta-monitor-manager.c:546
msgid "Unknown Display" msgid "Unknown Display"
msgstr "Pantalla desconeguda" msgstr "Pantalla desconeguda"
#. TRANSLATORS: this is a monitor vendor name, followed by a #. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"' #. * size in inches, like 'Dell 15"'
#. #.
#: ../src/backends/meta-monitor-manager.c:663 #: ../src/backends/meta-monitor-manager.c:554
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" 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:474 #: ../src/compositor/compositor.c:456
#, 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 ""
"Ja s'està executant un altre gestor de composició al monitor %i a la " "Ja s'està executant un altre gestor de composició a la pantalla %i a la "
"pantalla «%s»." "visualització «%s»."
#: ../src/core/bell.c:194 #: ../src/core/bell.c:192
msgid "Bell event" msgid "Bell event"
msgstr "Esdeveniment de campana" msgstr "Esdeveniment de campana"
#. Translators: %s is a window title
#: ../src/core/delete.c:127 #: ../src/core/delete.c:127
#, c-format #, c-format
msgid "“%s” is not responding." msgid "“%s” is not responding."
@@ -95,45 +519,45 @@ msgstr ""
"Podeu esperar un moment perquè continuï o podeu forçar-ne la sortida " "Podeu esperar un moment perquè continuï o podeu forçar-ne la sortida "
"completa." "completa."
#: ../src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Força'n la sortida"
#: ../src/core/delete.c:141 #: ../src/core/delete.c:141
msgid "_Wait" msgid "_Wait"
msgstr "_Espera" msgstr "_Espera"
#: ../src/core/display.c:608 #: ../src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Força'n la sortida"
#: ../src/core/display.c:555
#, 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 "" msgstr ""
"S'ha produït un error en obrir la pantalla del sistema de finestres X «%s»\n" "S'ha produït un error en obrir la pantalla del sistema de finestres X «%s»\n"
#: ../src/core/main.c:189 #: ../src/core/main.c:181
msgid "Disable connection to session manager" msgid "Disable connection to session manager"
msgstr "Inhabilita la connexió al gestor de sessions" msgstr "Inhabilita la connexió al gestor de sessions"
#: ../src/core/main.c:195 #: ../src/core/main.c:187
msgid "Replace the running window manager" msgid "Replace the running window manager"
msgstr "Reemplaça el gestor de finestres en execució" msgstr "Reemplaça el gestor de finestres en execució"
#: ../src/core/main.c:201 #: ../src/core/main.c:193
msgid "Specify session management ID" msgid "Specify session management ID"
msgstr "Especifica l'ID de gestió de sessió" msgstr "Especifica l'ID de gestió de sessió"
#: ../src/core/main.c:206 #: ../src/core/main.c:198
msgid "X Display to use" msgid "X Display to use"
msgstr "Visualització X per usar" msgstr "Visualització X per usar"
#: ../src/core/main.c:212 #: ../src/core/main.c:204
msgid "Initialize session from savefile" msgid "Initialize session from savefile"
msgstr "Inicialitza la sessió des del fitxer desat" msgstr "Inicialitza la sessió des del fitxer desat"
#: ../src/core/main.c:218 #: ../src/core/main.c:210
msgid "Make X calls synchronous" msgid "Make X calls synchronous"
msgstr "Fes que les crides a l'X siguin síncrones" msgstr "Fes que les crides a l'X siguin síncrones"
#: ../src/core/main.c:225 #: ../src/core/main.c:217
msgid "Run as a wayland compositor" msgid "Run as a wayland compositor"
msgstr "Funciona com a compositor de Wayland" msgstr "Funciona com a compositor de Wayland"
@@ -142,11 +566,12 @@ msgstr "Funciona com a compositor de Wayland"
# #
# Camins: # Camins:
# ../src/core/main.c:223 # ../src/core/main.c:223
#: ../src/core/main.c:231 #: ../src/core/main.c:223
#| msgid "Run as a wayland compositor"
msgid "Run as a nested compositor" msgid "Run as a nested compositor"
msgstr "Funciona com a compositor imbricat" msgstr "Funciona com a compositor imbricat"
#: ../src/core/main.c:239 #: ../src/core/main.c:231
msgid "Run as a full display server, rather than nested" msgid "Run as a full display server, rather than nested"
msgstr "Funciona com a servidor de pantalla completa, en comptes d'imbricat" msgstr "Funciona com a servidor de pantalla completa, en comptes d'imbricat"
@@ -154,7 +579,7 @@ msgstr "Funciona com a servidor de pantalla completa, en comptes d'imbricat"
#, c-format #, c-format
msgid "" msgid ""
"mutter %s\n" "mutter %s\n"
"Copyright © 2001-%d Havoc Pennington, Red Hat, Inc., and others\n" "Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., and others\n"
"This is free software; see the source for copying conditions.\n" "This is free software; see the source for copying conditions.\n"
"There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A " "There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A "
"PARTICULAR PURPOSE.\n" "PARTICULAR PURPOSE.\n"
@@ -179,387 +604,37 @@ msgstr "Connector del Mutter a utilitzar"
msgid "Workspace %d" msgid "Workspace %d"
msgstr "Espai de treball %d" msgstr "Espai de treball %d"
#: ../src/core/screen.c:580 #: ../src/core/screen.c:521
#, 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 "
"replace the current window manager." "to replace the current window manager."
msgstr "" msgstr ""
"La pantalla «%s» ja té un gestor de finestres; proveu l'opció --replace per " "La pantalla «%s» ja té un gestor de finestres; proveu l'opció --replace per "
"reemplaçar el gestor de finestres actual." "reemplaçar el gestor de finestres actual."
#: ../src/core/screen.c:665 #: ../src/core/screen.c:603
#, c-format #, c-format
msgid "Screen %d on display %s is invalid\n" msgid "Screen %d on display '%s' is invalid\n"
msgstr "El monitor %d en la pantalla '%s' no és vàlida\n" msgstr "La pantalla %d en la visualització '%s' no és vàlida\n"
#: ../src/core/util.c:120 #: ../src/core/util.c:121
msgid "Mutter was compiled without support for verbose mode\n" msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter es va compilar sense compatibilitat per al mode detallat\n" msgstr "Mutter es va compilar sense compatibilitat per al mode detallat\n"
#: ../src/wayland/meta-wayland-tablet-pad.c:563
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Mode de commutació: mode %d"
#: ../src/x11/session.c:1815 #: ../src/x11/session.c:1815
msgid "" msgid ""
"These windows do not support save current setup and will have to be " "These windows do not support &quot;save current setup&quot; and will have to "
"restarted manually next time you log in." "be restarted manually next time you log in."
msgstr "" msgstr ""
"Aquestes finestres no implementen «desa la configuració actual» i s'hauran " "Aquestes finestres no implementen «desa la configuració actual» i s'hauran "
"de reiniciar manualment la pròxima vegada que entreu." "de reiniciar manualment la pròxima vegada que entreu."
#: ../src/x11/window-props.c:559 #: ../src/x11/window-props.c:549
#, c-format #, c-format
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (a %s)" msgstr "%s (a %s)"
#~ msgid "Navigation"
#~ msgstr "Navegació"
#~ msgid "Move window to workspace 1"
#~ msgstr "Mou la finestra a l'espai de treball 1"
#~ msgid "Move window to workspace 2"
#~ msgstr "Mou la finestra a l'espai de treball 2"
#~ msgid "Move window to workspace 3"
#~ msgstr "Mou la finestra a l'espai de treball 3"
#~ msgid "Move window to workspace 4"
#~ msgstr "Mou la finestra a l'espai de treball 4"
#~ msgid "Move window to last workspace"
#~ msgstr "Mou la finestra a l'últim espai de treball"
#~ msgid "Move window one workspace to the left"
#~ msgstr "Mou la finestra un espai de treball a l'esquerra"
#~ msgid "Move window one workspace to the right"
#~ msgstr "Mou la finestra un espai de treball a la dreta"
#~ msgid "Move window one workspace up"
#~ msgstr "Mou la finestra un espai de treball amunt"
#~ msgid "Move window one workspace down"
#~ msgstr "Mou la finestra un espai de treball avall"
#~ msgid "Move window one monitor to the left"
#~ msgstr "Mou la finestra un monitor a l'esquerra"
#~ msgid "Move window one monitor to the right"
#~ msgstr "Mou la finestra un monitor a la dreta"
#~ msgid "Move window one monitor up"
#~ msgstr "Mou la finestra un monitor amunt"
#~ msgid "Move window one monitor down"
#~ msgstr "Mou la finestra un monitor avall"
#~ msgid "Switch applications"
#~ msgstr "Canvia d'aplicacions"
#~ msgid "Switch to previous application"
#~ msgstr "Canvia a l'aplicació anterior"
#~ msgid "Switch windows"
#~ msgstr "Canvia de finestres"
#~ msgid "Switch to previous window"
#~ msgstr "Canvia a la finestra anterior"
#~ msgid "Switch windows of an application"
#~ msgstr "Canvia entre les finestres d'una aplicació"
#~ msgid "Switch to previous window of an application"
#~ msgstr "Canvia a la finestra anterior d'una aplicació"
#~ msgid "Switch to previous system control"
#~ msgstr "Canvia al control del sistema anterior"
#~ msgid "Switch windows directly"
#~ msgstr "Canvia immediatament entre finestres"
#~ msgid "Switch directly to previous window"
#~ msgstr "Canvia immediatament a la finestra anterior"
#~ msgid "Switch windows of an app directly"
#~ msgstr "Canvia immediatament entre les finestres d'una aplicació"
#~ msgid "Switch directly to previous window of an app"
#~ msgstr "Canvia immediatament a la finestra anterior d'una aplicació"
#~ msgid "Switch system controls directly"
#~ msgstr "Canvia immediatament entre els controls del sistema"
#~ msgid "Switch directly to previous system control"
#~ msgstr "Canvia immediatament al control del sistema anterior"
#~ msgid "Hide all normal windows"
#~ msgstr "Oculta totes les finestres normals"
#~ msgid "Switch to workspace 1"
#~ msgstr "Canvia a l'espai de treball 1"
#~ msgid "Switch to workspace 2"
#~ msgstr "Canvia a l'espai de treball 2"
#~ msgid "Switch to workspace 3"
#~ msgstr "Canvia a l'espai de treball 3"
#~ msgid "Switch to workspace 4"
#~ msgstr "Canvia a l'espai de treball 4"
#~ msgid "Switch to last workspace"
#~ msgstr "Canvia a l'últim espai de treball"
#~ msgid "Move to workspace left"
#~ msgstr "Mou a l'espai de treball de l'esquerra"
#~ msgid "Move to workspace right"
#~ msgstr "Mou a l'espai de treball de la dreta"
#~ msgid "Move to workspace above"
#~ msgstr "Mou a l'espai de treball de sobre"
#~ msgid "Move to workspace below"
#~ msgstr "Mou a l'espai de treball de sota"
#~ msgid "System"
#~ msgstr "Sistema"
#~ msgid "Show the run command prompt"
#~ msgstr "Mostra l'indicador d'execució d'aplicacions"
#~ msgid "Show the activities overview"
#~ msgstr "Mostra la vista general d'activitats"
#~ msgid "Windows"
#~ msgstr "Finestres"
#~ msgid "Activate the window menu"
#~ msgstr "Activa el menú de finestra"
#~ msgid "Toggle fullscreen mode"
#~ msgstr "Canvia entre el mode a pantalla completa"
#~ msgid "Toggle maximization state"
#~ msgstr "Canvia l'estat de maximització"
#~ msgid "Maximize window"
#~ msgstr "Maximitza la finestra"
#~ msgid "Restore window"
#~ msgstr "Restaura la finestra"
#~ msgid "Toggle shaded state"
#~ msgstr "Canvia l'estat d'ombrejat"
#~ msgid "Close window"
#~ msgstr "Tanca la finestra"
#~ msgid "Hide window"
#~ msgstr "Oculta la finestra"
#~ msgid "Move window"
#~ msgstr "Mou la finestra"
#~ msgid "Resize window"
#~ msgstr "Redimensiona la finestra"
#~ msgid "Toggle window on all workspaces or one"
#~ msgstr ""
#~ "Canvia la funció que fa que la finestra estigui en tots els espais de "
#~ "treball o només en un"
#~ msgid "Raise window if covered, otherwise lower it"
#~ msgstr "Alça la finestra si està coberta per una altra, o sinó baixa-la"
#~ msgid "Raise window above other windows"
#~ msgstr "Alça la finestra per damunt de les altres"
#~ msgid "Lower window below other windows"
#~ msgstr "Baixa la finestra sota les altres"
#~ msgid "Maximize window vertically"
#~ msgstr "Maximitza la finestra verticalment"
#~ msgid "Maximize window horizontally"
#~ msgstr "Maximitza la finestra horitzontalment"
#~ msgid "View split on left"
#~ msgstr "Mostra la partició a l'esquerra"
#~ msgid "View split on right"
#~ msgstr "Mostra la partició a la dreta"
#~ msgid "Mutter"
#~ msgstr "Mutter"
#~ msgid "Modifier to use for extended window management operations"
#~ msgstr ""
#~ "Modificador que s'utilitzarà per les operacions ampliades de gestió de "
#~ "finestres"
#~ msgid ""
#~ "This key will initiate the \"overlay\", which is a combination window "
#~ "overview and application launching system. The default is intended to be "
#~ "the \"Windows key\" on PC hardware. It's expected that this binding "
#~ "either the default or set to the empty string."
#~ msgstr ""
#~ "Aquesta tecla iniciarà l'«overlay» (superposador), el qual és una "
#~ "combinació de visualització de finestres i sistema de llançament "
#~ "d'aplicacions. El valor predeterminat és la «tecla Windows» en maquinari "
#~ "basat en ordinadors PC. El valor d'aquesta vinculació s'espera que sigui "
#~ "el predeterminat o text en blanc."
#~ msgid "Attach modal dialogs"
#~ msgstr "Adjunta els diàlegs modals"
#~ msgid ""
#~ "When true, instead of having independent titlebars, modal dialogs appear "
#~ "attached to the titlebar of the parent window and are moved together with "
#~ "the parent window."
#~ msgstr ""
#~ "Quan sigui «true» (cert), en lloc de tenir barres de títol independents, "
#~ "els diàlegs modals apareixeran adjuntats a la barra de títol de la "
#~ "finestra mare i es mouran juntament amb aquesta."
#~ msgid "Enable edge tiling when dropping windows on screen edges"
#~ msgstr ""
#~ "Habilita la tesselització a les vores en deixar anar les finestres a les "
#~ "vores de la pantalla"
#~ msgid ""
#~ "If enabled, dropping windows on vertical screen edges maximizes them "
#~ "vertically and resizes them horizontally to cover half of the available "
#~ "area. Dropping windows on the top screen edge maximizes them completely."
#~ msgstr ""
#~ "Si s'habilita, es maximitzaran les finestres verticalment i es "
#~ "redimensionaran horitzontalment per cobrir la meitat de l'àrea disponible "
#~ "en deixar-les anar a les vores verticals de la pantalla. Si es deixen "
#~ "anar a la vora superior de la pantalla es maximitzaran completament."
#~ msgid "Workspaces are managed dynamically"
#~ msgstr "Els espais de treball es gestionen dinàmicament"
#~ msgid ""
#~ "Determines whether workspaces are managed dynamically or whether there's "
#~ "a static number of workspaces (determined by the num-workspaces key in "
#~ "org.gnome.desktop.wm.preferences)."
#~ msgstr ""
#~ "Determina si els espais de treball es gestionen dinàmicament o hi ha un "
#~ "nombre determinat d'espais de treball (determinat per la clau «num-"
#~ "workspaces» a «org.gnome.desktop.wm.preferences»)."
#~ msgid "Workspaces only on primary"
#~ msgstr "Espais de treball només en el primari"
#~ msgid ""
#~ "Determines whether workspace switching should happen for windows on all "
#~ "monitors or only for windows on the primary monitor."
#~ msgstr ""
#~ "Determina si el canvi d'espai de treball hauria de ser per les finestres "
#~ "en tots els monitors o només en les finestres del monitor primari."
#~ msgid "No tab popup"
#~ msgstr "Sense finestres emergents a les pestanyes"
#~ msgid ""
#~ "Determines whether the use of popup and highlight frame should be "
#~ "disabled for window cycling."
#~ msgstr ""
#~ "Determina si s'ha d'inhabilitar el quadre que es mostra a les finestres "
#~ "emergents i ressaltades en commutar entre finestres."
#~ msgid "Delay focus changes until the pointer stops moving"
#~ msgstr "Retarda el canvi del focus fins que s'aturi el punter"
#~ msgid ""
#~ "If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then "
#~ "the focus will not be changed immediately when entering a window, but "
#~ "only after the pointer stops moving."
#~ msgstr ""
#~ "Si és «true» (cert), i el mode del focus és «sloppy» o «mouse», no es "
#~ "canviarà el focus immediatament quan s'entri a una finestra, només es "
#~ "canviarà quan el punter deixi de moure's."
#~ msgid "Draggable border width"
#~ msgstr "Amplada del contorn arrossegable"
#~ msgid ""
#~ "The amount of total draggable borders. If the theme's visible borders are "
#~ "not enough, invisible borders will be added to meet this value."
#~ msgstr ""
#~ "La quantitat total de contorn arrossegable. Si els contorns visibles del "
#~ "tema no són suficients, s'afegiran contorns invisibles per aconseguir "
#~ "aquest valor."
#~ msgid "Auto maximize nearly monitor sized windows"
#~ msgstr ""
#~ "Maximitza automàticament les finestres que gairebé facin la mida de la "
#~ "pantalla"
#~ msgid ""
#~ "If enabled, new windows that are initially the size of the monitor "
#~ "automatically get maximized."
#~ msgstr ""
#~ "Si s'habilita, les finestres que inicialment gairebé fan la mida de la "
#~ "pantalla es maximitzaran automàticament."
#~ msgid "Place new windows in the center"
#~ msgstr "Posiciona les finestres noves al centre"
#~ msgid ""
#~ "When true, the new windows will always be put in the center of the active "
#~ "screen of the monitor."
#~ msgstr ""
#~ "Si és «true» (cert), les finestres noves seran posicionades al centre de "
#~ "la pantalla activa del monitor."
#~ msgid "Select window from tab popup"
#~ msgstr "Selecció de finestra entre les emergents d'una pestanya"
#~ msgid "Cancel tab popup"
#~ msgstr "Cancel·lació de les finestres emergents a les pestanyes"
#~ msgid "Switch to VT 1"
#~ msgstr "Canvia al terminal virtual 1"
#~ msgid "Switch to VT 2"
#~ msgstr "Canvia al terminal virtual 2"
#~ msgid "Switch to VT 3"
#~ msgstr "Canvia al terminal virtual 3"
#~ msgid "Switch to VT 4"
#~ msgstr "Canvia al terminal virtual 4"
#~ msgid "Switch to VT 5"
#~ msgstr "Canvia al terminal virtual 5"
#~ msgid "Switch to VT 6"
#~ msgstr "Canvia al terminal virtual 6"
#~ msgid "Switch to VT 7"
#~ msgstr "Canvia al terminal virtual 7"
#~ msgid "Switch to VT 8"
#~ msgstr "Canvia al terminal virtual 8"
#~ msgid "Switch to VT 9"
#~ msgstr "Canvia al terminal virtual 9"
#~ msgid "Switch to VT 10"
#~ msgstr "Canvia al terminal virtual 10"
#~ msgid "Switch to VT 11"
#~ msgstr "Canvia al terminal virtual 11"
#~ msgid "Switch to VT 12"
#~ msgstr "Canvia al terminal virtual 12"
#~ msgid "Failed to scan themes directory: %s\n" #~ msgid "Failed to scan themes directory: %s\n"
#~ msgstr "No s'ha pogut analitzar el directori de temes: %s\n" #~ msgstr "No s'ha pogut analitzar el directori de temes: %s\n"

997
po/cs.po

File diff suppressed because it is too large Load Diff

664
po/da.po
View File

@@ -1,5 +1,5 @@
# Danish translation of Mutter. # Danish translation of Mutter.
# Copyright (C) 2002-2009, 2012-2017. # Copyright (C) 2002-2009, 2012-2016.
# This file is distributed under the same license as the metacity package. # This file is distributed under the same license as the metacity package.
# Kjartan Maraas <kmaraas@gnome.org>, 2002 # Kjartan Maraas <kmaraas@gnome.org>, 2002
# Keld simonsen <keld@dkuug.dk>, 2002 # Keld simonsen <keld@dkuug.dk>, 2002
@@ -8,9 +8,9 @@
# Lasse Bang Mikkelsen <lbm@fatalerror.dk>, 2006. # Lasse Bang Mikkelsen <lbm@fatalerror.dk>, 2006.
# Kenneth Nielsen <k.nielsen81@gmail.com>, 2008. # Kenneth Nielsen <k.nielsen81@gmail.com>, 2008.
# Joe Hansen <joedalton2@yahoo.dk>, 2011. # Joe Hansen <joedalton2@yahoo.dk>, 2011.
# Ask Hjorth Larsen <asklarsen@gmail.com>, 2007, 09, 10, 12, 13, 14, 15, 16, 17. # Ask Hjorth Larsen <asklarsen@gmail.com>, 2007, 09, 10, 12, 13, 14, 15, 16.
# #
# Ordliste: # Konventioner:
# #
# display -> terminal # display -> terminal
# #
@@ -19,10 +19,9 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: mutter\n" "Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?" "Report-Msgid-Bugs-To: \n"
"product=mutter&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2016-03-20 23:17+0100\n"
"POT-Creation-Date: 2017-02-22 19:28+0000\n" "PO-Revision-Date: 2016-03-20 21:46+0100\n"
"PO-Revision-Date: 2017-03-02 12:04+0100\n"
"Last-Translator: Ask Hjorth Larsen <asklarsen@gmail.com>\n" "Last-Translator: Ask Hjorth Larsen <asklarsen@gmail.com>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n" "Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
"Language: da\n" "Language: da\n"
@@ -30,27 +29,271 @@ 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"
#: data/mutter.desktop.in:4 #: ../data/50-mutter-navigation.xml.in.h:1
msgid "Navigation"
msgstr "Navigation"
#: ../data/50-mutter-navigation.xml.in.h:2
msgid "Move window to workspace 1"
msgstr "Flyt vindue til arbejdsområde 1"
#: ../data/50-mutter-navigation.xml.in.h:3
msgid "Move window to workspace 2"
msgstr "Flyt vindue til arbejdsområde 2"
#: ../data/50-mutter-navigation.xml.in.h:4
msgid "Move window to workspace 3"
msgstr "Flyt vindue til arbejdsområde 3"
#: ../data/50-mutter-navigation.xml.in.h:5
msgid "Move window to workspace 4"
msgstr "Flyt vindue til arbejdsområde 4"
#: ../data/50-mutter-navigation.xml.in.h:6
msgid "Move window to last workspace"
msgstr "Flyt vindue til sidste arbejdsområde"
#: ../data/50-mutter-navigation.xml.in.h:7
msgid "Move window one workspace to the left"
msgstr "Flyt vindue et arbejdsområde til venstre"
#: ../data/50-mutter-navigation.xml.in.h:8
msgid "Move window one workspace to the right"
msgstr "Flyt vindue et arbejdsområde til højre"
#: ../data/50-mutter-navigation.xml.in.h:9
msgid "Move window one workspace up"
msgstr "Flyt vindue et arbejdsområde op"
#: ../data/50-mutter-navigation.xml.in.h:10
msgid "Move window one workspace down"
msgstr "Flyt vindue et arbejdsområde ned"
#: ../data/50-mutter-navigation.xml.in.h:11
msgid "Move window one monitor to the left"
msgstr "Flyt vindue en skærm til venstre"
#: ../data/50-mutter-navigation.xml.in.h:12
msgid "Move window one monitor to the right"
msgstr "Flyt vindue en skærm til højre"
#: ../data/50-mutter-navigation.xml.in.h:13
msgid "Move window one monitor up"
msgstr "Flyt vindue en skærm op"
#: ../data/50-mutter-navigation.xml.in.h:14
msgid "Move window one monitor down"
msgstr "Flyt vindue en skærm ned"
#: ../data/50-mutter-navigation.xml.in.h:15
msgid "Switch applications"
msgstr "Skift mellem programmer"
#: ../data/50-mutter-navigation.xml.in.h:16
msgid "Switch to previous application"
msgstr "Skift til forrige program"
#: ../data/50-mutter-navigation.xml.in.h:17
msgid "Switch windows"
msgstr "Skift mellem vinduer"
#: ../data/50-mutter-navigation.xml.in.h:18
msgid "Switch to previous window"
msgstr "Skift til forrige vindue"
#: ../data/50-mutter-navigation.xml.in.h:19
msgid "Switch windows of an application"
msgstr "Skift mellem vinduer i et program"
#: ../data/50-mutter-navigation.xml.in.h:20
msgid "Switch to previous window of an application"
msgstr "Skift til forrige vindue af et program"
#: ../data/50-mutter-navigation.xml.in.h:21
msgid "Switch system controls"
msgstr "Skift mellem systemkontroller"
#: ../data/50-mutter-navigation.xml.in.h:22
msgid "Switch to previous system control"
msgstr "Skift til forrige systemkontrol"
#: ../data/50-mutter-navigation.xml.in.h:23
msgid "Switch windows directly"
msgstr "Skift direkte mellem vinduer"
#: ../data/50-mutter-navigation.xml.in.h:24
msgid "Switch directly to previous window"
msgstr "Skift direkte til forrige vindue"
#: ../data/50-mutter-navigation.xml.in.h:25
msgid "Switch windows of an app directly"
msgstr "Skift direkte mellem vinduer i et program"
#: ../data/50-mutter-navigation.xml.in.h:26
msgid "Switch directly to previous window of an app"
msgstr "Skift direkte til forrige vindue af et program"
#: ../data/50-mutter-navigation.xml.in.h:27
msgid "Switch system controls directly"
msgstr "Skift direkte mellem systemkontroller"
#: ../data/50-mutter-navigation.xml.in.h:28
msgid "Switch directly to previous system control"
msgstr "Skift direkte til forrige systemkontrol"
#: ../data/50-mutter-navigation.xml.in.h:29
msgid "Hide all normal windows"
msgstr "Skjul alle normale vinduer"
#: ../data/50-mutter-navigation.xml.in.h:30
msgid "Switch to workspace 1"
msgstr "Skift til arbejdsområde 1"
#: ../data/50-mutter-navigation.xml.in.h:31
msgid "Switch to workspace 2"
msgstr "Skift til arbejdsområde 2"
#: ../data/50-mutter-navigation.xml.in.h:32
msgid "Switch to workspace 3"
msgstr "Skift til arbejdsområde 3"
#: ../data/50-mutter-navigation.xml.in.h:33
msgid "Switch to workspace 4"
msgstr "Skift til arbejdsområde 4"
#: ../data/50-mutter-navigation.xml.in.h:34
msgid "Switch to last workspace"
msgstr "Skift til sidste arbejdsområde"
#: ../data/50-mutter-navigation.xml.in.h:35
msgid "Move to workspace left"
msgstr "Flyt til arbejdsområdet til venstre"
#: ../data/50-mutter-navigation.xml.in.h:36
msgid "Move to workspace right"
msgstr "Flyt til arbejdsområdet til højre"
#: ../data/50-mutter-navigation.xml.in.h:37
msgid "Move to workspace above"
msgstr "Flyt til arbejdsområdet ovenover"
#: ../data/50-mutter-navigation.xml.in.h:38
msgid "Move to workspace below"
msgstr "Flyt til arbejdsområdet nedenunder"
#: ../data/50-mutter-system.xml.in.h:1
msgid "System"
msgstr "System"
#: ../data/50-mutter-system.xml.in.h:2
msgid "Show the run command prompt"
msgstr "Vis \"kør kommando\"-prompten"
#: ../data/50-mutter-system.xml.in.h:3
msgid "Show the activities overview"
msgstr "Vis aktivitetsoversigten"
#: ../data/50-mutter-windows.xml.in.h:1
msgid "Windows"
msgstr "Vinduer"
#: ../data/50-mutter-windows.xml.in.h:2
msgid "Activate the window menu"
msgstr "Aktivér vinduesmenuen"
#: ../data/50-mutter-windows.xml.in.h:3
msgid "Toggle fullscreen mode"
msgstr "Slå fuldskærmstilstand til/fra"
#: ../data/50-mutter-windows.xml.in.h:4
msgid "Toggle maximization state"
msgstr "Slå maksimering til/fra"
#: ../data/50-mutter-windows.xml.in.h:5
msgid "Maximize window"
msgstr "Maksimér vindue"
#: ../data/50-mutter-windows.xml.in.h:6
msgid "Restore window"
msgstr "Gendan vindue"
#: ../data/50-mutter-windows.xml.in.h:7
msgid "Toggle shaded state"
msgstr "Slå vinduesoprulning til/fra"
#: ../data/50-mutter-windows.xml.in.h:8
msgid "Close window"
msgstr "Luk vindue"
#: ../data/50-mutter-windows.xml.in.h:9
msgid "Hide window"
msgstr "Skjul vindue"
#: ../data/50-mutter-windows.xml.in.h:10
msgid "Move window"
msgstr "Flyt vindue"
#: ../data/50-mutter-windows.xml.in.h:11
msgid "Resize window"
msgstr "Ændr vinduesstørrelse"
#: ../data/50-mutter-windows.xml.in.h:12
msgid "Toggle window on all workspaces or one"
msgstr "Slå visning af vindue på alle arbejdsområder til/fra"
#: ../data/50-mutter-windows.xml.in.h:13
msgid "Raise window if covered, otherwise lower it"
msgstr "Hæv vindue hvis det er dækket, ellers sænk det"
#: ../data/50-mutter-windows.xml.in.h:14
msgid "Raise window above other windows"
msgstr "Hæv vindue over andre vinduer"
#: ../data/50-mutter-windows.xml.in.h:15
msgid "Lower window below other windows"
msgstr "Sænk vindue under andre vinduer"
#: ../data/50-mutter-windows.xml.in.h:16
msgid "Maximize window vertically"
msgstr "Maksimér vindue lodret"
#: ../data/50-mutter-windows.xml.in.h:17
msgid "Maximize window horizontally"
msgstr "Maksimér vindue vandret"
#: ../data/50-mutter-windows.xml.in.h:18
msgid "View split on left"
msgstr "Delt visning venstre"
#: ../data/50-mutter-windows.xml.in.h:19
msgid "View split on right"
msgstr "Delt visning højre"
#: ../data/mutter.desktop.in.h:1
msgid "Mutter" msgid "Mutter"
msgstr "Mutter" msgstr "Mutter"
#: data/org.gnome.mutter.gschema.xml.in:7 #: ../data/org.gnome.mutter.gschema.xml.in.h:1
msgid "Modifier to use for extended window management operations" msgid "Modifier to use for extended window management operations"
msgstr "Modifikationstast til brug for udvidede vindueshåndteringsoperationer" msgstr "Modifikationstast til brug for udvidede vindueshåndteringsoperationer"
#: data/org.gnome.mutter.gschema.xml.in:8 #: ../data/org.gnome.mutter.gschema.xml.in.h:2
msgid "" msgid ""
"This key will initiate the overlay, which is a combination window overview " "This key will initiate the \"overlay\", which is a combination window "
"and application launching system. The default is intended to be the “Windows " "overview and application launching system. The default is intended to be the "
"key on PC hardware. Its expected that this binding either the default or " "\"Windows key\" on PC hardware. It's expected that this binding either the "
"set to the empty string." "default or set to the empty string."
msgstr "Denne nøgle vil klargøre \"overlay\", som er en kombineret vinduesoversigt og programstartersystem. Standardværdien på PC-hardware er tiltænkt som \"Windows\"-tasten. Det forventes, at denne binding enten har standardværdien, eller er sat til den tomme streng." msgstr ""
"Denne nøgle vil klargøre \"overlay\", som er en kombineret vinduesoversigt "
"og programstartsystem. Standardværdien på PC-hardware er tiltænkt som "
"\"Windows\"-tasten. Det forventes at denne binding enten har "
"standardværdien, eller er sat til den tomme streng."
#: data/org.gnome.mutter.gschema.xml.in:20 #: ../data/org.gnome.mutter.gschema.xml.in.h:3
msgid "Attach modal dialogs" msgid "Attach modal dialogs"
msgstr "Fastgør modaldialoger" msgstr "Fastgør modaldialoger"
#: data/org.gnome.mutter.gschema.xml.in:21 #: ../data/org.gnome.mutter.gschema.xml.in.h:4
msgid "" msgid ""
"When true, instead of having independent titlebars, modal dialogs appear " "When true, instead of having independent titlebars, modal dialogs appear "
"attached to the titlebar of the parent window and are moved together with " "attached to the titlebar of the parent window and are moved together with "
@@ -59,13 +302,13 @@ msgstr ""
"Når sand, vil modaldialoger hænge sammen med titellinjen af ophavsvinduet og " "Når sand, vil modaldialoger hænge sammen med titellinjen af ophavsvinduet og "
"flyttes sammen med dette, frem for at have uafhængige titellinjer." "flyttes sammen med dette, frem for at have uafhængige titellinjer."
#: data/org.gnome.mutter.gschema.xml.in:30 #: ../data/org.gnome.mutter.gschema.xml.in.h:5
msgid "Enable edge tiling when dropping windows on screen edges" msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "" msgstr ""
"Aktivér maksimering eller halvmaksimering når vinduer slippes over " "Aktivér maksimering eller halvmaksimering når vinduer slippes over "
"skærmranden" "skærmranden"
#: data/org.gnome.mutter.gschema.xml.in:31 #: ../data/org.gnome.mutter.gschema.xml.in.h:6
msgid "" msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them " "If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available " "vertically and resizes them horizontally to cover half of the available "
@@ -76,13 +319,13 @@ msgstr ""
"tilgængelige område. Vinduer, der slippes på øverste skærmrand, maksimeres " "tilgængelige område. Vinduer, der slippes på øverste skærmrand, maksimeres "
"helt." "helt."
#: data/org.gnome.mutter.gschema.xml.in:40 #: ../data/org.gnome.mutter.gschema.xml.in.h:7
msgid "Workspaces are managed dynamically" msgid "Workspaces are managed dynamically"
msgstr "Arbejdsområder håndteres dynamisk" msgstr "Arbejdsområder håndteres dynamisk"
#: data/org.gnome.mutter.gschema.xml.in:41 #: ../data/org.gnome.mutter.gschema.xml.in.h:8
msgid "" msgid ""
"Determines whether workspaces are managed dynamically or whether theres a " "Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org." "static number of workspaces (determined by the num-workspaces key in org."
"gnome.desktop.wm.preferences)." "gnome.desktop.wm.preferences)."
msgstr "" msgstr ""
@@ -90,11 +333,11 @@ msgstr ""
"antal arbejdsområder (angivet med nøglen num-workspaces i org.gnome.desktop." "antal arbejdsområder (angivet med nøglen num-workspaces i org.gnome.desktop."
"wm.preferences)." "wm.preferences)."
#: data/org.gnome.mutter.gschema.xml.in:50 #: ../data/org.gnome.mutter.gschema.xml.in.h:9
msgid "Workspaces only on primary" msgid "Workspaces only on primary"
msgstr "Arbejdsområder kun på primær skærm" msgstr "Arbejdsområder kun på primær skærm"
#: data/org.gnome.mutter.gschema.xml.in:51 #: ../data/org.gnome.mutter.gschema.xml.in.h:10
msgid "" msgid ""
"Determines whether workspace switching should happen for windows on all " "Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor." "monitors or only for windows on the primary monitor."
@@ -102,11 +345,11 @@ msgstr ""
"Angiver om skift mellem arbejdsområder skal ske for vinduer på alle skærme, " "Angiver om skift mellem arbejdsområder skal ske for vinduer på alle skærme, "
"eller kun for vinduer på den primære skærm." "eller kun for vinduer på den primære skærm."
#: data/org.gnome.mutter.gschema.xml.in:59 #: ../data/org.gnome.mutter.gschema.xml.in.h:11
msgid "No tab popup" msgid "No tab popup"
msgstr "Ingen tab-pop-op" msgstr "Ingen tab-pop-op"
#: data/org.gnome.mutter.gschema.xml.in:60 #: ../data/org.gnome.mutter.gschema.xml.in.h:12
msgid "" msgid ""
"Determines whether the use of popup and highlight frame should be disabled " "Determines whether the use of popup and highlight frame should be disabled "
"for window cycling." "for window cycling."
@@ -114,37 +357,37 @@ msgstr ""
"Afgør om brugen af pop-op og fremhævet vinduesramme skal deaktiveres ved " "Afgør om brugen af pop-op og fremhævet vinduesramme skal deaktiveres ved "
"vinduesskifte." "vinduesskifte."
#: data/org.gnome.mutter.gschema.xml.in:68 #: ../data/org.gnome.mutter.gschema.xml.in.h:13
msgid "Delay focus changes until the pointer stops moving" msgid "Delay focus changes until the pointer stops moving"
msgstr "Lad fokusændringer vente indtil markøren holder op med at bevæge sig" msgstr "Lad fokusændringer vente indtil markøren holder op med at bevæge sig"
#: data/org.gnome.mutter.gschema.xml.in:69 #: ../data/org.gnome.mutter.gschema.xml.in.h:14
msgid "" msgid ""
"If set to true, and the focus mode is either sloppy or mouse then the " "If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then "
"focus will not be changed immediately when entering a window, but only after " "the focus will not be changed immediately when entering a window, but only "
"the pointer stops moving." "after the pointer stops moving."
msgstr "" msgstr ""
"Hvis sat til sand, og fokustilstanden er enten \"sloppy\" eller \"mouse\", " "Hvis sat til sand, og fokustilstanden er enten \"sloppy\" eller \"mouse\", "
"vil fokus ikke blive ændret omgående når man går ind i et nyt vindue, men " "vil fokus ikke blive ændret omgående når man går ind i et nyt vindue, men "
"først efter markøren holder op med at bevæge sig." "først efter markøren holder op med at bevæge sig."
#: data/org.gnome.mutter.gschema.xml.in:79 #: ../data/org.gnome.mutter.gschema.xml.in.h:15
msgid "Draggable border width" msgid "Draggable border width"
msgstr "Bredde af den trækbare kant" msgstr "Bredde af den trækbare kant"
#: data/org.gnome.mutter.gschema.xml.in:80 #: ../data/org.gnome.mutter.gschema.xml.in.h:16
msgid "" msgid ""
"The amount of total draggable borders. If the themes visible borders are " "The amount of total draggable borders. If the theme's visible borders are "
"not enough, invisible borders will be added to meet this value." "not enough, invisible borders will be added to meet this value."
msgstr "" msgstr ""
"Samlet mængde kant der kan trækkes. Hvis temaets synlige grænser ikke er " "Samlet mængde kant der kan trækkes. Hvis temaets synlige grænser ikke er "
"nok, så vil usynlige kanter blive tilføjet for at møde denne værdi." "nok, så vil usynlige kanter blive tilføjet for at møde denne værdi."
#: data/org.gnome.mutter.gschema.xml.in:89 #: ../data/org.gnome.mutter.gschema.xml.in.h:17
msgid "Auto maximize nearly monitor sized windows" msgid "Auto maximize nearly monitor sized windows"
msgstr "Maksimér automatisk vinduer hvis størrelse næsten passer til skærmen" msgstr "Maksimér automatisk vinduer hvis størrelse næsten passer til skærmen"
#: data/org.gnome.mutter.gschema.xml.in:90 #: ../data/org.gnome.mutter.gschema.xml.in.h:18
msgid "" msgid ""
"If enabled, new windows that are initially the size of the monitor " "If enabled, new windows that are initially the size of the monitor "
"automatically get maximized." "automatically get maximized."
@@ -152,136 +395,117 @@ msgstr ""
"Hvis aktiveret vil nye vinduer, som i begyndelsen har samme størrelse som " "Hvis aktiveret vil nye vinduer, som i begyndelsen har samme størrelse som "
"skærmen, blive automatisk maksimeret." "skærmen, blive automatisk maksimeret."
#: data/org.gnome.mutter.gschema.xml.in:98 #: ../data/org.gnome.mutter.gschema.xml.in.h:19
msgid "Place new windows in the center" msgid "Place new windows in the center"
msgstr "Placér nye vinduer i midten" msgstr "Placér nye vinduer i midten"
#: data/org.gnome.mutter.gschema.xml.in:99 #: ../data/org.gnome.mutter.gschema.xml.in.h:20
msgid "" msgid ""
"When true, the new windows will always be put in the center of the active " "When true, the new windows will always be put in the center of the active "
"screen of the monitor." "screen of the monitor."
msgstr "" msgstr ""
"Når sand, vil nye vinduer altid blive placeret i midten af den aktive skærm." "Når sand, vil nye vinduer altid blive placeret i midten af den aktive skærm."
#: data/org.gnome.mutter.gschema.xml.in:120 #: ../data/org.gnome.mutter.gschema.xml.in.h:21
msgid "Select window from tab popup" msgid "Select window from tab popup"
msgstr "Vælg vindue fra tab-pop-op" msgstr "Vælg vindue fra tab-pop-op"
#: data/org.gnome.mutter.gschema.xml.in:125 #: ../data/org.gnome.mutter.gschema.xml.in.h:22
msgid "Cancel tab popup" msgid "Cancel tab popup"
msgstr "Annullér faneblads-pop-op" msgstr "Annullér faneblads-pop-op"
#: data/org.gnome.mutter.wayland.gschema.xml.in:6 #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1
msgid "Switch to VT 1" msgid "Switch to VT 1"
msgstr "Skift til VT 1" msgstr "Skift til VT 1"
#: data/org.gnome.mutter.wayland.gschema.xml.in:10 #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:2
msgid "Switch to VT 2" msgid "Switch to VT 2"
msgstr "Skift til VT 2" msgstr "Skift til VT 2"
#: data/org.gnome.mutter.wayland.gschema.xml.in:14 #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:3
msgid "Switch to VT 3" msgid "Switch to VT 3"
msgstr "Skift til VT 3" msgstr "Skift til VT 3"
#: data/org.gnome.mutter.wayland.gschema.xml.in:18 #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:4
msgid "Switch to VT 4" msgid "Switch to VT 4"
msgstr "Skift til VT 4" msgstr "Skift til VT 4"
#: data/org.gnome.mutter.wayland.gschema.xml.in:22 #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:5
msgid "Switch to VT 5" msgid "Switch to VT 5"
msgstr "Skift til VT 5" msgstr "Skift til VT 5"
#: data/org.gnome.mutter.wayland.gschema.xml.in:26 #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:6
msgid "Switch to VT 6" msgid "Switch to VT 6"
msgstr "Skift til VT 6" msgstr "Skift til VT 6"
#: data/org.gnome.mutter.wayland.gschema.xml.in:30 #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:7
msgid "Switch to VT 7" msgid "Switch to VT 7"
msgstr "Skift til VT 7" msgstr "Skift til VT 7"
#: data/org.gnome.mutter.wayland.gschema.xml.in:34 #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
msgid "Switch to VT 8" msgid "Switch to VT 8"
msgstr "Skift til VT 8" msgstr "Skift til VT 8"
#: data/org.gnome.mutter.wayland.gschema.xml.in:38 #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
msgid "Switch to VT 9" msgid "Switch to VT 9"
msgstr "Skift til VT 9" msgstr "Skift til VT 9"
#: data/org.gnome.mutter.wayland.gschema.xml.in:42 #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
msgid "Switch to VT 10" msgid "Switch to VT 10"
msgstr "Skift til VT 10" msgstr "Skift til VT 10"
#: data/org.gnome.mutter.wayland.gschema.xml.in:46 #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
msgid "Switch to VT 11" msgid "Switch to VT 11"
msgstr "Skift til VT 11" msgstr "Skift til VT 11"
#: data/org.gnome.mutter.wayland.gschema.xml.in:50 #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
msgid "Switch to VT 12" msgid "Switch to VT 12"
msgstr "Skift til VT 12" msgstr "Skift til VT 12"
#. TRANSLATORS: This string refers to a button that switches between #: ../src/backends/meta-monitor-manager.c:518
#. * different modes.
#.
#: src/backends/meta-input-settings.c:1800
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Tilstandsskift (Gruppe %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:1822
msgid "Switch monitor"
msgstr "Skift skærm"
#: src/backends/meta-input-settings.c:1824
msgid "Show on-screen help"
msgstr "Vis integreret hjælp"
#: src/backends/meta-monitor-manager.c:675
msgid "Built-in display" msgid "Built-in display"
msgstr "Indbygget terminal" msgstr "Indbygget skærm"
#: src/backends/meta-monitor-manager.c:698 #: ../src/backends/meta-monitor-manager.c:544
msgid "Unknown" msgid "Unknown"
msgstr "Ukendt" msgstr "Ukendt"
#: src/backends/meta-monitor-manager.c:700 #: ../src/backends/meta-monitor-manager.c:546
msgid "Unknown Display" msgid "Unknown Display"
msgstr "Ukendt terminal" msgstr "Ukendt skærm"
#. TRANSLATORS: this is a monitor vendor name, followed by a #. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"' #. * size in inches, like 'Dell 15"'
#. #.
#: src/backends/meta-monitor-manager.c:708 #: ../src/backends/meta-monitor-manager.c:554
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" 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:471 #: ../src/compositor/compositor.c:456
#, 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 ""
"En anden komposithåndtering kører allerede på skærm %i på terminal \"%s\"." "En anden komposithåndtering kører allerede på skærm %i på terminal \"%s\"."
#: src/core/bell.c:194 #: ../src/core/bell.c:192
msgid "Bell event" msgid "Bell event"
msgstr "Bip-hændelse" msgstr "Bip-hændelse"
#. Translators: %s is a window title #: ../src/core/delete.c:127
#: src/core/delete.c:127
#, c-format #, c-format
msgid "“%s” is not responding." msgid "“%s” is not responding."
msgstr "“%s” svarer ikke." msgstr "“%s” svarer ikke."
#: src/core/delete.c:129 #: ../src/core/delete.c:129
msgid "Application is not responding." msgid "Application is not responding."
msgstr "Program svarer ikke." msgstr "Program svarer ikke."
#: src/core/delete.c:134 #: ../src/core/delete.c:134
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."
@@ -289,297 +513,115 @@ msgstr ""
"Du kan vælge at vente et lille stykke tid på at programmet fortsætter, eller " "Du kan vælge at vente et lille stykke tid på at programmet fortsætter, eller "
"du kan tvinge programmet til at afslutte fuldstændigt." "du kan tvinge programmet til at afslutte fuldstændigt."
#: src/core/delete.c:141 #: ../src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Tving til at afslutte"
#: src/core/delete.c:141
msgid "_Wait" msgid "_Wait"
msgstr "_Vent" msgstr "_Vent"
#: src/core/display.c:608 #: ../src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Tving til at afslutte"
#: ../src/core/display.c:555
#, 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 "Kunne ikke åbne X Window System-terminalen \"%s\"\n" msgstr "Kunne ikke åbne X Window System-terminalen \"%s\"\n"
#: src/core/main.c:189 #: ../src/core/main.c:181
msgid "Disable connection to session manager" msgid "Disable connection to session manager"
msgstr "Deaktivér forbindelse til sessionshåndtering" msgstr "Deaktivér forbindelse til sessionshåndtering"
#: src/core/main.c:195 #: ../src/core/main.c:187
msgid "Replace the running window manager" msgid "Replace the running window manager"
msgstr "Erstat den kørende vindueshåndtering" msgstr "Erstat den kørende vindueshåndtering"
#: src/core/main.c:201 #: ../src/core/main.c:193
msgid "Specify session management ID" msgid "Specify session management ID"
msgstr "Angiv sessionhåndterings-id" msgstr "Angiv sessionhåndterings-id"
#: src/core/main.c:206 #: ../src/core/main.c:198
msgid "X Display to use" msgid "X Display to use"
msgstr "X-terminal som bruges" msgstr "X-skærm som bruges"
#: src/core/main.c:212 #: ../src/core/main.c:204
msgid "Initialize session from savefile" msgid "Initialize session from savefile"
msgstr "Initialisér session fra gemt fil" msgstr "Initialisér session fra gemt fil"
#: src/core/main.c:218 #: ../src/core/main.c:210
msgid "Make X calls synchronous" msgid "Make X calls synchronous"
msgstr "Gør kald til X synkrone" msgstr "Gør kald til X synkrone"
#: src/core/main.c:225 #: ../src/core/main.c:217
msgid "Run as a wayland compositor" msgid "Run as a wayland compositor"
msgstr "Kør som en wayland-kompositor" msgstr "Kør som en wayland-kompositor"
#: src/core/main.c:231 #: ../src/core/main.c:223
msgid "Run as a nested compositor" msgid "Run as a nested compositor"
msgstr "Kør som en indlejret kompositor" msgstr "Kør som en indlejret kompositor"
#: src/core/main.c:239 #: ../src/core/main.c:231
msgid "Run as a full display server, rather than nested" msgid "Run as a full display server, rather than nested"
msgstr "Kør som fuld terminalserver, frem for indlejret" msgstr "Kør som fuld displayserver, frem for indlejret"
#: src/core/mutter.c:39 #: ../src/core/mutter.c:39
#, c-format #, c-format
msgid "" msgid ""
"mutter %s\n" "mutter %s\n"
"Copyright © 2001-%d Havoc Pennington, Red Hat, Inc., and others\n" "Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., and others\n"
"This is free software; see the source for copying conditions.\n" "This is free software; see the source for copying conditions.\n"
"There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A " "There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A "
"PARTICULAR PURPOSE.\n" "PARTICULAR PURPOSE.\n"
msgstr "" msgstr ""
"mutter %s\n" "mutter %s\n"
"Copyright © 2001%d Havoc Pennington, Red Hat, Inc., og andre\n" "Copyright © 2001-%d Havoc Pennington, Red Hat, Inc., og andre\n"
"Dette er frit programmel; se kildekoden for kopieringsbetingelser.\n" "Dette er frit programmel; se kildekoden for kopieringsbetingelser.\n"
"Der er INGEN garanti; ikke engang for SALGBARHED eller EGNETHED TIL ET BESTEMT FORMÅL.\n" "Der er INGEN garanti; ikke engang for SALGBARHED eller EGNETHED TIL ET "
"BESTEMT FORMÅL.\n"
#: src/core/mutter.c:53 #: ../src/core/mutter.c:53
msgid "Print version" msgid "Print version"
msgstr "Vis version" msgstr "Vis version"
#: src/core/mutter.c:59 #: ../src/core/mutter.c:59
msgid "Mutter plugin to use" msgid "Mutter plugin to use"
msgstr "Mutter-udvidelsesmodul der skal bruges" msgstr "Mutter-udvidelsesmodul der skal bruges"
#: src/core/prefs.c:1997 #: ../src/core/prefs.c:1997
#, c-format #, c-format
msgid "Workspace %d" msgid "Workspace %d"
msgstr "Arbejdsområde %d" msgstr "Arbejdsområde %d"
#: src/core/screen.c:580 #: ../src/core/screen.c:521
#, 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 "
"replace the current window manager." "to replace the current window manager."
msgstr "" msgstr ""
"Terminalen \"%s\" har allerede en vindueshåndtering; prøv tilvalget --" "Terminalen \"%s\" har allerede en vindueshåndtering; prøv tilvalget --"
"replace for at erstatte den aktuelle vindueshåndtering." "replace for at erstatte den aktuelle vindueshåndtering."
#: src/core/screen.c:665 #: ../src/core/screen.c:603
#, c-format #, c-format
msgid "Screen %d on display %s is invalid\n" msgid "Screen %d on display '%s' is invalid\n"
msgstr "Skærm %d på terminal \"%s\" er ugyldig\n" msgstr "Skærm %d på terminal \"%s\" er ugyldig\n"
#: src/core/util.c:120 #: ../src/core/util.c:121
msgid "Mutter was compiled without support for verbose mode\n" msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter blev kompileret uden understøttelse for uddybende tilstand\n" msgstr "Mutter blev kompileret uden understøttelse for uddybende tilstand\n"
#: src/wayland/meta-wayland-tablet-pad.c:563 #: ../src/x11/session.c:1815
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Tilstandsskift: Tilstand %d"
#: src/x11/session.c:1815
msgid "" msgid ""
"These windows do not support save current setup and will have to be " "These windows do not support &quot;save current setup&quot; and will have to "
"restarted manually next time you log in." "be restarted manually next time you log in."
msgstr "Disse vinduer understøtter ikke at gemme deres opsætning og skal genstartes manuelt næste gang, du logger på." msgstr ""
"Disse vinduer understøtter ikke gemning af deres opsætning og skal "
"genstartes manuelt næste gang du logger på."
# Lad os håbe dette er rigtigt # Lad os håbe dette er rigtigt
#: src/x11/window-props.c:559 #: ../src/x11/window-props.c:549
#, c-format #, c-format
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (på %s)" msgstr "%s (på %s)"
#~ msgid "Navigation"
#~ msgstr "Navigation"
#~ msgid "Move window to workspace 1"
#~ msgstr "Flyt vindue til arbejdsområde 1"
#~ msgid "Move window to workspace 2"
#~ msgstr "Flyt vindue til arbejdsområde 2"
#~ msgid "Move window to workspace 3"
#~ msgstr "Flyt vindue til arbejdsområde 3"
#~ msgid "Move window to workspace 4"
#~ msgstr "Flyt vindue til arbejdsområde 4"
#~ msgid "Move window to last workspace"
#~ msgstr "Flyt vindue til sidste arbejdsområde"
#~ msgid "Move window one workspace to the left"
#~ msgstr "Flyt vindue et arbejdsområde til venstre"
#~ msgid "Move window one workspace to the right"
#~ msgstr "Flyt vindue et arbejdsområde til højre"
#~ msgid "Move window one workspace up"
#~ msgstr "Flyt vindue et arbejdsområde op"
#~ msgid "Move window one workspace down"
#~ msgstr "Flyt vindue et arbejdsområde ned"
#~ msgid "Move window one monitor to the left"
#~ msgstr "Flyt vindue en skærm til venstre"
#~ msgid "Move window one monitor to the right"
#~ msgstr "Flyt vindue en skærm til højre"
#~ msgid "Move window one monitor up"
#~ msgstr "Flyt vindue en skærm op"
#~ msgid "Move window one monitor down"
#~ msgstr "Flyt vindue en skærm ned"
#~ msgid "Switch applications"
#~ msgstr "Skift mellem programmer"
#~ msgid "Switch to previous application"
#~ msgstr "Skift til forrige program"
#~ msgid "Switch windows"
#~ msgstr "Skift mellem vinduer"
#~ msgid "Switch to previous window"
#~ msgstr "Skift til forrige vindue"
#~ msgid "Switch windows of an application"
#~ msgstr "Skift mellem vinduer i et program"
#~ msgid "Switch to previous window of an application"
#~ msgstr "Skift til forrige vindue af et program"
#~ msgid "Switch system controls"
#~ msgstr "Skift mellem systemkontroller"
#~ msgid "Switch to previous system control"
#~ msgstr "Skift til forrige systemkontrol"
#~ msgid "Switch windows directly"
#~ msgstr "Skift direkte mellem vinduer"
#~ msgid "Switch directly to previous window"
#~ msgstr "Skift direkte til forrige vindue"
#~ msgid "Switch windows of an app directly"
#~ msgstr "Skift direkte mellem vinduer i et program"
#~ msgid "Switch directly to previous window of an app"
#~ msgstr "Skift direkte til forrige vindue af et program"
#~ msgid "Switch system controls directly"
#~ msgstr "Skift direkte mellem systemkontroller"
#~ msgid "Switch directly to previous system control"
#~ msgstr "Skift direkte til forrige systemkontrol"
#~ msgid "Hide all normal windows"
#~ msgstr "Skjul alle normale vinduer"
#~ msgid "Switch to workspace 1"
#~ msgstr "Skift til arbejdsområde 1"
#~ msgid "Switch to workspace 2"
#~ msgstr "Skift til arbejdsområde 2"
#~ msgid "Switch to workspace 3"
#~ msgstr "Skift til arbejdsområde 3"
#~ msgid "Switch to workspace 4"
#~ msgstr "Skift til arbejdsområde 4"
#~ msgid "Switch to last workspace"
#~ msgstr "Skift til sidste arbejdsområde"
#~ msgid "Move to workspace left"
#~ msgstr "Flyt til arbejdsområdet til venstre"
#~ msgid "Move to workspace right"
#~ msgstr "Flyt til arbejdsområdet til højre"
#~ msgid "Move to workspace above"
#~ msgstr "Flyt til arbejdsområdet ovenover"
#~ msgid "Move to workspace below"
#~ msgstr "Flyt til arbejdsområdet nedenunder"
#~ msgid "System"
#~ msgstr "System"
#~ msgid "Show the run command prompt"
#~ msgstr "Vis \"kør kommando\"-prompten"
#~ msgid "Show the activities overview"
#~ msgstr "Vis aktivitetsoversigten"
#~ msgid "Windows"
#~ msgstr "Vinduer"
#~ msgid "Activate the window menu"
#~ msgstr "Aktivér vinduesmenuen"
#~ msgid "Toggle fullscreen mode"
#~ msgstr "Slå fuldskærmstilstand til/fra"
#~ msgid "Toggle maximization state"
#~ msgstr "Slå maksimering til/fra"
#~ msgid "Maximize window"
#~ msgstr "Maksimér vindue"
#~ msgid "Restore window"
#~ msgstr "Gendan vindue"
#~ msgid "Toggle shaded state"
#~ msgstr "Slå vinduesoprulning til/fra"
#~ msgid "Close window"
#~ msgstr "Luk vindue"
#~ msgid "Hide window"
#~ msgstr "Skjul vindue"
#~ msgid "Move window"
#~ msgstr "Flyt vindue"
#~ msgid "Resize window"
#~ msgstr "Ændr vinduesstørrelse"
#~ msgid "Toggle window on all workspaces or one"
#~ msgstr "Slå visning af vindue på alle arbejdsområder til/fra"
#~ msgid "Raise window if covered, otherwise lower it"
#~ msgstr "Hæv vindue hvis det er dækket, ellers sænk det"
#~ msgid "Raise window above other windows"
#~ msgstr "Hæv vindue over andre vinduer"
#~ msgid "Lower window below other windows"
#~ msgstr "Sænk vindue under andre vinduer"
#~ msgid "Maximize window vertically"
#~ msgstr "Maksimér vindue lodret"
#~ msgid "Maximize window horizontally"
#~ msgstr "Maksimér vindue vandret"
#~ msgid "View split on left"
#~ msgstr "Delt visning venstre"
#~ msgid "View split on right"
#~ msgstr "Delt visning højre"
#~ msgid "Failed to scan themes directory: %s\n" #~ msgid "Failed to scan themes directory: %s\n"
#~ msgstr "Kunne ikke skanne temamappe: %s\n" #~ msgstr "Kunne ikke skanne temamappe: %s\n"
@@ -589,6 +631,9 @@ msgstr "%s (på %s)"
#~ "Kunne ikke finde et tema! Sikr dig at %s eksisterer og indeholder de " #~ "Kunne ikke finde et tema! Sikr dig at %s eksisterer og indeholder de "
#~ "sædvanlige temaer.\n" #~ "sædvanlige temaer.\n"
#~ msgid "Screen %d on display \"%s\" already has a window manager\n"
#~ msgstr "Skærm %d på terminal \"%s\" har allerede en vindueshåndtering\n"
#~ msgid "%d x %d" #~ msgid "%d x %d"
#~ msgstr "%d x %d" #~ msgstr "%d x %d"
@@ -1088,6 +1133,15 @@ msgstr "%s (på %s)"
#~ "\"%s\" fundet i konfigurationsdatabasen er ikke en gyldig værdi for " #~ "\"%s\" fundet i konfigurationsdatabasen er ikke en gyldig værdi for "
#~ "tastebindingen \"%s\"\n" #~ "tastebindingen \"%s\"\n"
#~ msgid ""
#~ "Could not acquire window manager selection on screen %d display \"%s\"\n"
#~ msgstr ""
#~ "Kunne ikke fremskaffe vindueshåndteringvælgeren på skærm %d på terminal "
#~ "\"%s\"\n"
#~ msgid "Could not release screen %d on display \"%s\"\n"
#~ msgstr "Kunne ikke frigive skærm %d på terminal \"%s\"\n"
#~ msgid "Could not create directory '%s': %s\n" #~ msgid "Could not create directory '%s': %s\n"
#~ msgstr "Kunne ikke oprette mappen \"%s\": %s\n" #~ msgstr "Kunne ikke oprette mappen \"%s\": %s\n"

324
po/de.po
View File

@@ -3,7 +3,7 @@
# Matthias Warkus <mawarkus@gnome.org>, 2002. # Matthias Warkus <mawarkus@gnome.org>, 2002.
# Christian Neumair <chris@gnome-de.org>, 2002-2004. # Christian Neumair <chris@gnome-de.org>, 2002-2004.
# Hendrik Richter <hendrikr@gnome.org>, 2005, 2006, 2007, 2008. # Hendrik Richter <hendrikr@gnome.org>, 2005, 2006, 2007, 2008.
# Mario Blättermann <mario.blaettermann@gmail.com>, 2010-2013, 2016-2017. # Mario Blättermann <mario.blaettermann@gmail.com>, 2010-2013, 2016.
# Christian Kirbach <Christian.Kirbach@googlemail.com>, 2009, 2011, 2012. # Christian Kirbach <Christian.Kirbach@googlemail.com>, 2009, 2011, 2012.
# Wolfgang Stöggl <c72578@yahoo.de> 2011. # Wolfgang Stöggl <c72578@yahoo.de> 2011.
# Tobias Endrigkeit <tobiasendrigkeit@googlemail.com>, 2012. # Tobias Endrigkeit <tobiasendrigkeit@googlemail.com>, 2012.
@@ -13,8 +13,8 @@ msgstr ""
"Project-Id-Version: mutter master\n" "Project-Id-Version: mutter master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n" "product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-02-16 01:44+0000\n" "POT-Creation-Date: 2016-02-28 13:37+0000\n"
"PO-Revision-Date: 2017-02-17 21:22+0100\n" "PO-Revision-Date: 2016-02-28 19:15+0100\n"
"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n" "Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
"Language-Team: Deutsch <gnome-de@gnome.org>\n" "Language-Team: Deutsch <gnome-de@gnome.org>\n"
"Language: de\n" "Language: de\n"
@@ -22,264 +22,264 @@ 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: Poedit 1.8.11\n" "X-Generator: Poedit 1.8.7\n"
#: data/50-mutter-navigation.xml:6 #: ../data/50-mutter-navigation.xml.in.h:1
msgid "Navigation" msgid "Navigation"
msgstr "Navigation" msgstr "Navigation"
#: data/50-mutter-navigation.xml:9 #: ../data/50-mutter-navigation.xml.in.h:2
msgid "Move window to workspace 1" msgid "Move window to workspace 1"
msgstr "Fenster auf Arbeitsfläche 1 verschieben" msgstr "Fenster auf Arbeitsfläche 1 verschieben"
#: data/50-mutter-navigation.xml:12 #: ../data/50-mutter-navigation.xml.in.h:3
msgid "Move window to workspace 2" msgid "Move window to workspace 2"
msgstr "Fenster auf Arbeitsfläche 2 verschieben" msgstr "Fenster auf Arbeitsfläche 2 verschieben"
#: data/50-mutter-navigation.xml:15 #: ../data/50-mutter-navigation.xml.in.h:4
msgid "Move window to workspace 3" msgid "Move window to workspace 3"
msgstr "Fenster auf Arbeitsfläche 3 verschieben" msgstr "Fenster auf Arbeitsfläche 3 verschieben"
#: data/50-mutter-navigation.xml:18 #: ../data/50-mutter-navigation.xml.in.h:5
msgid "Move window to workspace 4" msgid "Move window to workspace 4"
msgstr "Fenster auf Arbeitsfläche 4 verschieben" msgstr "Fenster auf Arbeitsfläche 4 verschieben"
#: data/50-mutter-navigation.xml:21 #: ../data/50-mutter-navigation.xml.in.h:6
msgid "Move window to last workspace" msgid "Move window to last workspace"
msgstr "Fenster auf letzte Arbeitsfläche verschieben" msgstr "Fenster auf letzte Arbeitsfläche verschieben"
#: data/50-mutter-navigation.xml:24 #: ../data/50-mutter-navigation.xml.in.h:7
msgid "Move window one workspace to the left" msgid "Move window one workspace to the left"
msgstr "Fenster eine Arbeitsfläche nach links verschieben" msgstr "Fenster eine Arbeitsfläche nach links verschieben"
#: data/50-mutter-navigation.xml:27 #: ../data/50-mutter-navigation.xml.in.h:8
msgid "Move window one workspace to the right" msgid "Move window one workspace to the right"
msgstr "Fenster eine Arbeitsfläche nach rechts verschieben" msgstr "Fenster eine Arbeitsfläche nach rechts verschieben"
#: data/50-mutter-navigation.xml:30 #: ../data/50-mutter-navigation.xml.in.h:9
msgid "Move window one workspace up" msgid "Move window one workspace up"
msgstr "Fenster eine Arbeitsfläche nach oben verschieben" msgstr "Fenster eine Arbeitsfläche nach oben verschieben"
#: data/50-mutter-navigation.xml:33 #: ../data/50-mutter-navigation.xml.in.h:10
msgid "Move window one workspace down" msgid "Move window one workspace down"
msgstr "Fenster eine Arbeitsfläche nach unten verschieben" msgstr "Fenster eine Arbeitsfläche nach unten verschieben"
#: data/50-mutter-navigation.xml:36 #: ../data/50-mutter-navigation.xml.in.h:11
msgid "Move window one monitor to the left" msgid "Move window one monitor to the left"
msgstr "Fenster einen Bildschirm nach links verschieben" msgstr "Fenster einen Bildschirm nach links verschieben"
#: data/50-mutter-navigation.xml:39 #: ../data/50-mutter-navigation.xml.in.h:12
msgid "Move window one monitor to the right" msgid "Move window one monitor to the right"
msgstr "Fenster einen Bildschirm nach rechts verschieben" msgstr "Fenster einen Bildschirm nach rechts verschieben"
#: data/50-mutter-navigation.xml:42 #: ../data/50-mutter-navigation.xml.in.h:13
msgid "Move window one monitor up" msgid "Move window one monitor up"
msgstr "Fenster einen Bildschirm nach oben verschieben" msgstr "Fenster einen Bildschirm nach oben verschieben"
#: data/50-mutter-navigation.xml:45 #: ../data/50-mutter-navigation.xml.in.h:14
msgid "Move window one monitor down" msgid "Move window one monitor down"
msgstr "Fenster einen Bildschirm nach unten verschieben" msgstr "Fenster einen Bildschirm nach unten verschieben"
#: data/50-mutter-navigation.xml:49 #: ../data/50-mutter-navigation.xml.in.h:15
msgid "Switch applications" msgid "Switch applications"
msgstr "Anwendungen wechseln" msgstr "Anwendungen wechseln"
#: data/50-mutter-navigation.xml:54 #: ../data/50-mutter-navigation.xml.in.h:16
msgid "Switch to previous application" msgid "Switch to previous application"
msgstr "Zur vorherigen Anwendung wechseln" msgstr "Zur vorherigen Anwendung wechseln"
#: data/50-mutter-navigation.xml:58 #: ../data/50-mutter-navigation.xml.in.h:17
msgid "Switch windows" msgid "Switch windows"
msgstr "Fenster wechseln" msgstr "Fenster wechseln"
#: data/50-mutter-navigation.xml:63 #: ../data/50-mutter-navigation.xml.in.h:18
msgid "Switch to previous window" msgid "Switch to previous window"
msgstr "Zum vorherigen Fenster wechseln" msgstr "Zum vorherigen Fenster wechseln"
#: data/50-mutter-navigation.xml:67 #: ../data/50-mutter-navigation.xml.in.h:19
msgid "Switch windows of an application" msgid "Switch windows of an application"
msgstr "Zwischen den Fenstern einer Anwendung wechseln" msgstr "Zwischen den Fenstern einer Anwendung wechseln"
#: data/50-mutter-navigation.xml:72 #: ../data/50-mutter-navigation.xml.in.h:20
msgid "Switch to previous window of an application" msgid "Switch to previous window of an application"
msgstr "Zum vorherigen Fenster einer Anwendung wechseln" msgstr "Zum vorherigen Fenster einer Anwendung wechseln"
#: data/50-mutter-navigation.xml:76 #: ../data/50-mutter-navigation.xml.in.h:21
msgid "Switch system controls" msgid "Switch system controls"
msgstr "Systemsteuerungen umschalten" msgstr "Systemsteuerungen umschalten"
#: data/50-mutter-navigation.xml:81 #: ../data/50-mutter-navigation.xml.in.h:22
msgid "Switch to previous system control" msgid "Switch to previous system control"
msgstr "Zur vorherigen Systemsteuerungen wechseln" msgstr "Zur vorherigen Systemsteuerungen wechseln"
#: data/50-mutter-navigation.xml:85 #: ../data/50-mutter-navigation.xml.in.h:23
msgid "Switch windows directly" msgid "Switch windows directly"
msgstr "Fenster sofort wechseln" msgstr "Fenster sofort wechseln"
#: data/50-mutter-navigation.xml:90 #: ../data/50-mutter-navigation.xml.in.h:24
msgid "Switch directly to previous window" msgid "Switch directly to previous window"
msgstr "Direkt zum vorherigen Fenster wechseln" msgstr "Direkt zum vorherigen Fenster wechseln"
#: data/50-mutter-navigation.xml:94 #: ../data/50-mutter-navigation.xml.in.h:25
msgid "Switch windows of an app directly" msgid "Switch windows of an app directly"
msgstr "Sofort zwischen den Fenstern einer Anwendung wechseln" msgstr "Sofort zwischen den Fenstern einer Anwendung wechseln"
#: data/50-mutter-navigation.xml:99 #: ../data/50-mutter-navigation.xml.in.h:26
msgid "Switch directly to previous window of an app" msgid "Switch directly to previous window of an app"
msgstr "Direkt zum vorherigen Fenster einer Anwendung wechseln" msgstr "Direkt zum vorherigen Fenster einer Anwendung wechseln"
#: data/50-mutter-navigation.xml:103 #: ../data/50-mutter-navigation.xml.in.h:27
msgid "Switch system controls directly" msgid "Switch system controls directly"
msgstr "Systemsteuerungen sofort umschalten" msgstr "Systemsteuerungen sofort umschalten"
#: data/50-mutter-navigation.xml:108 #: ../data/50-mutter-navigation.xml.in.h:28
msgid "Switch directly to previous system control" msgid "Switch directly to previous system control"
msgstr "Direkt zur vorherigen Systemsteuerungen wechselen" msgstr "Direkt zur vorherigen Systemsteuerungen wechselen"
#: data/50-mutter-navigation.xml:111 #: ../data/50-mutter-navigation.xml.in.h:29
msgid "Hide all normal windows" msgid "Hide all normal windows"
msgstr "Alle normalen Fenster verbergen" msgstr "Alle normalen Fenster verbergen"
#: data/50-mutter-navigation.xml:114 #: ../data/50-mutter-navigation.xml.in.h:30
msgid "Switch to workspace 1" msgid "Switch to workspace 1"
msgstr "Zur Arbeitsfläche 1 wechseln" msgstr "Zur Arbeitsfläche 1 wechseln"
#: data/50-mutter-navigation.xml:117 #: ../data/50-mutter-navigation.xml.in.h:31
msgid "Switch to workspace 2" msgid "Switch to workspace 2"
msgstr "Zur Arbeitsfläche 2 wechseln" msgstr "Zur Arbeitsfläche 2 wechseln"
#: data/50-mutter-navigation.xml:120 #: ../data/50-mutter-navigation.xml.in.h:32
msgid "Switch to workspace 3" msgid "Switch to workspace 3"
msgstr "Zur Arbeitsfläche 3 wechseln" msgstr "Zur Arbeitsfläche 3 wechseln"
#: data/50-mutter-navigation.xml:123 #: ../data/50-mutter-navigation.xml.in.h:33
msgid "Switch to workspace 4" msgid "Switch to workspace 4"
msgstr "Zur Arbeitsfläche 4 wechseln" msgstr "Zur Arbeitsfläche 4 wechseln"
#: data/50-mutter-navigation.xml:126 #: ../data/50-mutter-navigation.xml.in.h:34
msgid "Switch to last workspace" msgid "Switch to last workspace"
msgstr "Zur letzten Arbeitsfläche wechseln" msgstr "Zur letzten Arbeitsfläche wechseln"
#: data/50-mutter-navigation.xml:129 #: ../data/50-mutter-navigation.xml.in.h:35
msgid "Move to workspace left" msgid "Move to workspace left"
msgstr "Auf Arbeitsfläche links verschieben" msgstr "Auf Arbeitsfläche links verschieben"
#: data/50-mutter-navigation.xml:132 #: ../data/50-mutter-navigation.xml.in.h:36
msgid "Move to workspace right" msgid "Move to workspace right"
msgstr "Auf Arbeitsfläche rechts verschieben" msgstr "Auf Arbeitsfläche rechts verschieben"
#: data/50-mutter-navigation.xml:135 #: ../data/50-mutter-navigation.xml.in.h:37
msgid "Move to workspace above" msgid "Move to workspace above"
msgstr "Auf Arbeitsfläche darüber verschieben" msgstr "Auf Arbeitsfläche darüber verschieben"
#: data/50-mutter-navigation.xml:138 #: ../data/50-mutter-navigation.xml.in.h:38
msgid "Move to workspace below" msgid "Move to workspace below"
msgstr "Auf Arbeitsfläche darunter verschieben" msgstr "Auf Arbeitsfläche darunter verschieben"
#: data/50-mutter-system.xml:6 #: ../data/50-mutter-system.xml.in.h:1
msgid "System" msgid "System"
msgstr "System" msgstr "System"
#: data/50-mutter-system.xml:8 #: ../data/50-mutter-system.xml.in.h:2
msgid "Show the run command prompt" msgid "Show the run command prompt"
msgstr "Den »Befehl ausführen«-Dialog anzeigen" msgstr "Den »Befehl ausführen«-Dialog anzeigen"
#: data/50-mutter-system.xml:10 #: ../data/50-mutter-system.xml.in.h:3
msgid "Show the activities overview" msgid "Show the activities overview"
msgstr "Aktivitäten-Übersicht anzeigen" msgstr "Aktivitäten-Übersicht anzeigen"
#: data/50-mutter-windows.xml:6 #: ../data/50-mutter-windows.xml.in.h:1
msgid "Windows" msgid "Windows"
msgstr "Fenster" msgstr "Fenster"
#: data/50-mutter-windows.xml:8 #: ../data/50-mutter-windows.xml.in.h:2
msgid "Activate the window menu" msgid "Activate the window menu"
msgstr "Das Fenstermenü aktivieren" msgstr "Das Fenstermenü aktivieren"
#: data/50-mutter-windows.xml:10 #: ../data/50-mutter-windows.xml.in.h:3
msgid "Toggle fullscreen mode" msgid "Toggle fullscreen mode"
msgstr "Vollbildmodus ein-/ausschalten" msgstr "Vollbildmodus ein-/ausschalten"
#: data/50-mutter-windows.xml:12 #: ../data/50-mutter-windows.xml.in.h:4
msgid "Toggle maximization state" msgid "Toggle maximization state"
msgstr "Maximierungszustand ein-/ausschalten" msgstr "Maximierungszustand ein-/ausschalten"
#: data/50-mutter-windows.xml:14 #: ../data/50-mutter-windows.xml.in.h:5
msgid "Maximize window" msgid "Maximize window"
msgstr "Fenster maximieren" msgstr "Fenster maximieren"
#: data/50-mutter-windows.xml:16 #: ../data/50-mutter-windows.xml.in.h:6
msgid "Restore window" msgid "Restore window"
msgstr "Fenstergröße wiederherstellen" msgstr "Fenstergröße wiederherstellen"
#: data/50-mutter-windows.xml:18 #: ../data/50-mutter-windows.xml.in.h:7
msgid "Toggle shaded state" msgid "Toggle shaded state"
msgstr "Fenster ein-/ausrollen" msgstr "Fenster ein-/ausrollen"
#: data/50-mutter-windows.xml:20 #: ../data/50-mutter-windows.xml.in.h:8
msgid "Close window" msgid "Close window"
msgstr "Fenster schließen" msgstr "Fenster schließen"
#: data/50-mutter-windows.xml:22 #: ../data/50-mutter-windows.xml.in.h:9
msgid "Hide window" msgid "Hide window"
msgstr "Fenster verbergen" msgstr "Fenster verbergen"
#: data/50-mutter-windows.xml:24 #: ../data/50-mutter-windows.xml.in.h:10
msgid "Move window" msgid "Move window"
msgstr "Fenster verschieben" msgstr "Fenster verschieben"
#: data/50-mutter-windows.xml:26 #: ../data/50-mutter-windows.xml.in.h:11
msgid "Resize window" msgid "Resize window"
msgstr "Fenstergröße ändern" msgstr "Fenstergröße ändern"
#: data/50-mutter-windows.xml:29 #: ../data/50-mutter-windows.xml.in.h:12
msgid "Toggle window on all workspaces or one" msgid "Toggle window on all workspaces or one"
msgstr "" msgstr ""
"Festlegen, ob das Fenster auf allen oder nur einer Arbeitsfläche sichtbar ist" "Festlegen, ob das Fenster auf allen oder nur einer Arbeitsfläche sichtbar ist"
#: data/50-mutter-windows.xml:31 #: ../data/50-mutter-windows.xml.in.h:13
msgid "Raise window if covered, otherwise lower it" msgid "Raise window if covered, otherwise lower it"
msgstr "Fenster anheben, falls es verdeckt ist, andernfalls absenken" msgstr "Fenster anheben, falls es verdeckt ist, andernfalls absenken"
#: data/50-mutter-windows.xml:33 #: ../data/50-mutter-windows.xml.in.h:14
msgid "Raise window above other windows" msgid "Raise window above other windows"
msgstr "Fenster vor die anderen Fenster anheben" msgstr "Fenster vor die anderen Fenster anheben"
#: data/50-mutter-windows.xml:35 #: ../data/50-mutter-windows.xml.in.h:15
msgid "Lower window below other windows" msgid "Lower window below other windows"
msgstr "Fenster hinter die anderen Fenster absenken" msgstr "Fenster hinter die anderen Fenster absenken"
#: data/50-mutter-windows.xml:37 #: ../data/50-mutter-windows.xml.in.h:16
msgid "Maximize window vertically" msgid "Maximize window vertically"
msgstr "Fenster vertikal maximieren" msgstr "Fenster vertikal maximieren"
#: data/50-mutter-windows.xml:39 #: ../data/50-mutter-windows.xml.in.h:17
msgid "Maximize window horizontally" msgid "Maximize window horizontally"
msgstr "Fenster horizontal maximieren" msgstr "Fenster horizontal maximieren"
#: data/50-mutter-windows.xml:43 #: ../data/50-mutter-windows.xml.in.h:18
msgid "View split on left" msgid "View split on left"
msgstr "Ansicht links teilen" msgstr "Ansicht links teilen"
#: data/50-mutter-windows.xml:47 #: ../data/50-mutter-windows.xml.in.h:19
msgid "View split on right" msgid "View split on right"
msgstr "Ansicht rechts teilen" msgstr "Ansicht rechts teilen"
#: data/mutter.desktop.in:4 #: ../data/mutter.desktop.in.h:1
msgid "Mutter" msgid "Mutter"
msgstr "Mutter" msgstr "Mutter"
#: data/org.gnome.mutter.gschema.xml.in:7 #: ../data/org.gnome.mutter.gschema.xml.in.h:1
msgid "Modifier to use for extended window management operations" msgid "Modifier to use for extended window management operations"
msgstr "Zusatztaste für erweiterte Aktionen der Fensterverwaltung" msgstr "Zusatztaste für erweiterte Aktionen der Fensterverwaltung"
# bzw- die Apfel-Taste auf Mac-Computern # bzw- die Apfel-Taste auf Mac-Computern
#: data/org.gnome.mutter.gschema.xml.in:8 #: ../data/org.gnome.mutter.gschema.xml.in.h:2
msgid "" msgid ""
"This key will initiate the overlay, which is a combination window overview " "This key will initiate the \"overlay\", which is a combination window "
"and application launching system. The default is intended to be the “Windows " "overview and application launching system. The default is intended to be the "
"key on PC hardware. Its expected that this binding either the default or " "\"Windows key\" on PC hardware. It's expected that this binding either the "
"set to the empty string." "default or set to the empty string."
msgstr "" msgstr ""
"Dieser Schlüssel wird die »Überlagerung« auslösen, d.h. eine kombinierte " "Dieser Schlüssel wird die »Überlagerung« auslösen, d.h. eine kombinierte "
"Fensterübersicht und ein System zum Starten von Anwendungen. Als " "Fensterübersicht und ein System zum Starten von Anwendungen. Als "
@@ -287,11 +287,11 @@ msgstr ""
"vorgesehen. Man geht davon aus, dass diese Tastenverknüpfung entweder die " "vorgesehen. Man geht davon aus, dass diese Tastenverknüpfung entweder die "
"Vorgabe ist oder als leere Zeichenkette gesetzt ist." "Vorgabe ist oder als leere Zeichenkette gesetzt ist."
#: data/org.gnome.mutter.gschema.xml.in:20 #: ../data/org.gnome.mutter.gschema.xml.in.h:3
msgid "Attach modal dialogs" msgid "Attach modal dialogs"
msgstr "Modale Dialoge anhängen" msgstr "Modale Dialoge anhängen"
#: data/org.gnome.mutter.gschema.xml.in:21 #: ../data/org.gnome.mutter.gschema.xml.in.h:4
msgid "" msgid ""
"When true, instead of having independent titlebars, modal dialogs appear " "When true, instead of having independent titlebars, modal dialogs appear "
"attached to the titlebar of the parent window and are moved together with " "attached to the titlebar of the parent window and are moved together with "
@@ -301,12 +301,12 @@ msgstr ""
"die Titelleisten des Elternfensters angehängte modale Dialoge, welche " "die Titelleisten des Elternfensters angehängte modale Dialoge, welche "
"zusammen mit dem Elternfenster bewegt werden." "zusammen mit dem Elternfenster bewegt werden."
#: data/org.gnome.mutter.gschema.xml.in:30 #: ../data/org.gnome.mutter.gschema.xml.in.h:5
msgid "Enable edge tiling when dropping windows on screen edges" msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "" msgstr ""
"Kantenplatzierung beim Berühren der Bildschirmränder mit Fenstern aktivieren" "Kantenplatzierung beim Berühren der Bildschirmränder mit Fenstern aktivieren"
#: data/org.gnome.mutter.gschema.xml.in:31 #: ../data/org.gnome.mutter.gschema.xml.in.h:6
msgid "" msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them " "If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available " "vertically and resizes them horizontally to cover half of the available "
@@ -317,13 +317,13 @@ msgstr ""
"Hälfte des verfügbaren Bereiches zu belegen. Eine Berührung mit dem oberen " "Hälfte des verfügbaren Bereiches zu belegen. Eine Berührung mit dem oberen "
"Bildschirmrand maximiert das Fenster vollständig." "Bildschirmrand maximiert das Fenster vollständig."
#: data/org.gnome.mutter.gschema.xml.in:40 #: ../data/org.gnome.mutter.gschema.xml.in.h:7
msgid "Workspaces are managed dynamically" msgid "Workspaces are managed dynamically"
msgstr "Arbeitsflächen sollen dynamisch verwaltet werden " msgstr "Arbeitsflächen sollen dynamisch verwaltet werden "
#: data/org.gnome.mutter.gschema.xml.in:41 #: ../data/org.gnome.mutter.gschema.xml.in.h:8
msgid "" msgid ""
"Determines whether workspaces are managed dynamically or whether theres a " "Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org." "static number of workspaces (determined by the num-workspaces key in org."
"gnome.desktop.wm.preferences)." "gnome.desktop.wm.preferences)."
msgstr "" msgstr ""
@@ -331,11 +331,11 @@ msgstr ""
"eine feste Anzahl Arbeitsflächen gibt (welche durch den Schlüssel num-" "eine feste Anzahl Arbeitsflächen gibt (welche durch den Schlüssel num-"
"workspaces in org.gnome.desktop.wm.preferences festgelegt wird)." "workspaces in org.gnome.desktop.wm.preferences festgelegt wird)."
#: data/org.gnome.mutter.gschema.xml.in:50 #: ../data/org.gnome.mutter.gschema.xml.in.h:9
msgid "Workspaces only on primary" msgid "Workspaces only on primary"
msgstr "Nur primärer Arbeitsflächenwechsel" msgstr "Nur primärer Arbeitsflächenwechsel"
#: data/org.gnome.mutter.gschema.xml.in:51 #: ../data/org.gnome.mutter.gschema.xml.in.h:10
msgid "" msgid ""
"Determines whether workspace switching should happen for windows on all " "Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor." "monitors or only for windows on the primary monitor."
@@ -343,11 +343,11 @@ msgstr ""
"Legt fest, ob Arbeitsflächenwechsel für alle Fenster auf allen Bildschirmen " "Legt fest, ob Arbeitsflächenwechsel für alle Fenster auf allen Bildschirmen "
"oder nur für Fenster auf dem primären Bildschirm ausgeführt werden soll." "oder nur für Fenster auf dem primären Bildschirm ausgeführt werden soll."
#: data/org.gnome.mutter.gschema.xml.in:59 #: ../data/org.gnome.mutter.gschema.xml.in.h:11
msgid "No tab popup" msgid "No tab popup"
msgstr "Keine Tab-Anzeige" msgstr "Keine Tab-Anzeige"
#: data/org.gnome.mutter.gschema.xml.in:60 #: ../data/org.gnome.mutter.gschema.xml.in.h:12
msgid "" msgid ""
"Determines whether the use of popup and highlight frame should be disabled " "Determines whether the use of popup and highlight frame should be disabled "
"for window cycling." "for window cycling."
@@ -355,39 +355,39 @@ msgstr ""
"Legt fest, ob beim Durchblättern der Fenster die Tab-Anzeige und die " "Legt fest, ob beim Durchblättern der Fenster die Tab-Anzeige und die "
"Hervorhebung des Rahmens deaktiviert werden soll." "Hervorhebung des Rahmens deaktiviert werden soll."
#: data/org.gnome.mutter.gschema.xml.in:68 #: ../data/org.gnome.mutter.gschema.xml.in.h:13
msgid "Delay focus changes until the pointer stops moving" msgid "Delay focus changes until the pointer stops moving"
msgstr "Fokus-Änderungen verzögern, bis der Zeiger aufhört sich zu bewegen" msgstr "Fokus-Änderungen verzögern, bis der Zeiger aufhört sich zu bewegen"
#: data/org.gnome.mutter.gschema.xml.in:69 #: ../data/org.gnome.mutter.gschema.xml.in.h:14
msgid "" msgid ""
"If set to true, and the focus mode is either sloppy or mouse then the " "If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then "
"focus will not be changed immediately when entering a window, but only after " "the focus will not be changed immediately when entering a window, but only "
"the pointer stops moving." "after the pointer stops moving."
msgstr "" msgstr ""
"Falls dieser Schlüssel gesetzt ist und der Fokusmodus entweder »sloppy« oder " "Falls dieser Schlüssel gesetzt ist und der Fokusmodus entweder »sloppy« oder "
"»mouse« ist, wird der Fokus nicht sofort beim Erreichen eines Fensters " "»mouse« ist, wird der Fokus nicht sofort beim Erreichen eines Fensters "
"geändert, sondern erst, wenn der Zeiger aufhört sich zu bewegen." "geändert, sondern erst, wenn der Zeiger aufhört sich zu bewegen."
#: data/org.gnome.mutter.gschema.xml.in:79 #: ../data/org.gnome.mutter.gschema.xml.in.h:15
msgid "Draggable border width" msgid "Draggable border width"
msgstr "Breite der ziehbaren Ränder" msgstr "Breite der ziehbaren Ränder"
# Lange Beschreibung von »Draggable border width« # Lange Beschreibung von »Draggable border width«
#: data/org.gnome.mutter.gschema.xml.in:80 #: ../data/org.gnome.mutter.gschema.xml.in.h:16
msgid "" msgid ""
"The amount of total draggable borders. If the themes visible borders are " "The amount of total draggable borders. If the theme's visible borders are "
"not enough, invisible borders will be added to meet this value." "not enough, invisible borders will be added to meet this value."
msgstr "" msgstr ""
"Die Gesamtbreite ziehbarer Ränder. Falls die im Thema sichtbaren Ränder " "Die Gesamtbreite ziehbarer Ränder. Falls die im Thema sichtbaren Ränder "
"nicht ausreichen, werden unsichtbare Ränder hinzugefügt, um diesen Wert zu " "nicht ausreichen, werden unsichtbare Ränder hinzugefügt, um diesen Wert zu "
"erreichen." "erreichen."
#: data/org.gnome.mutter.gschema.xml.in:89 #: ../data/org.gnome.mutter.gschema.xml.in.h:17
msgid "Auto maximize nearly monitor sized windows" msgid "Auto maximize nearly monitor sized windows"
msgstr "Fenster nahe der Bildschirmgröße automatisch maximieren" msgstr "Fenster nahe der Bildschirmgröße automatisch maximieren"
#: data/org.gnome.mutter.gschema.xml.in:90 #: ../data/org.gnome.mutter.gschema.xml.in.h:18
msgid "" msgid ""
"If enabled, new windows that are initially the size of the monitor " "If enabled, new windows that are initially the size of the monitor "
"automatically get maximized." "automatically get maximized."
@@ -395,11 +395,11 @@ msgstr ""
"Wenn aktiviert, werden neue Fenster, die beim Öffnen nahezu die Größe des " "Wenn aktiviert, werden neue Fenster, die beim Öffnen nahezu die Größe des "
"Bildschirms haben, direkt maximiert." "Bildschirms haben, direkt maximiert."
#: data/org.gnome.mutter.gschema.xml.in:98 #: ../data/org.gnome.mutter.gschema.xml.in.h:19
msgid "Place new windows in the center" msgid "Place new windows in the center"
msgstr "Neue Fenster in der Mitte platzieren" msgstr "Neue Fenster in der Mitte platzieren"
#: data/org.gnome.mutter.gschema.xml.in:99 #: ../data/org.gnome.mutter.gschema.xml.in.h:20
msgid "" msgid ""
"When true, the new windows will always be put in the center of the active " "When true, the new windows will always be put in the center of the active "
"screen of the monitor." "screen of the monitor."
@@ -407,126 +407,107 @@ msgstr ""
"Falls wahr, so werden neue Fenster immer in der Mitte des aktiven " "Falls wahr, so werden neue Fenster immer in der Mitte des aktiven "
"Bildschirms platziert" "Bildschirms platziert"
#: data/org.gnome.mutter.gschema.xml.in:120 #: ../data/org.gnome.mutter.gschema.xml.in.h:21
msgid "Select window from tab popup" msgid "Select window from tab popup"
msgstr "Fenster aus Tab-Anzeige auswählen" msgstr "Fenster aus Tab-Anzeige auswählen"
#: data/org.gnome.mutter.gschema.xml.in:125 #: ../data/org.gnome.mutter.gschema.xml.in.h:22
msgid "Cancel tab popup" msgid "Cancel tab popup"
msgstr "Tab-Anzeige abbrechen" msgstr "Tab-Anzeige abbrechen"
#: data/org.gnome.mutter.wayland.gschema.xml.in:6 #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1
msgid "Switch to VT 1" msgid "Switch to VT 1"
msgstr "Zum virtuellen Terminal 1 wechseln" msgstr "Zum virtuellen Terminal 1 wechseln"
#: data/org.gnome.mutter.wayland.gschema.xml.in:10 #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:2
msgid "Switch to VT 2" msgid "Switch to VT 2"
msgstr "Zum virtuellen Terminal 2 wechseln" msgstr "Zum virtuellen Terminal 2 wechseln"
#: data/org.gnome.mutter.wayland.gschema.xml.in:14 #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:3
msgid "Switch to VT 3" msgid "Switch to VT 3"
msgstr "Zum virtuellen Terminal 3 wechseln" msgstr "Zum virtuellen Terminal 3 wechseln"
#: data/org.gnome.mutter.wayland.gschema.xml.in:18 #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:4
msgid "Switch to VT 4" msgid "Switch to VT 4"
msgstr "Zum virtuellen Terminal 4 wechseln" msgstr "Zum virtuellen Terminal 4 wechseln"
#: data/org.gnome.mutter.wayland.gschema.xml.in:22 #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:5
msgid "Switch to VT 5" msgid "Switch to VT 5"
msgstr "Zum virtuellen Terminal 5 wechseln" msgstr "Zum virtuellen Terminal 5 wechseln"
#: data/org.gnome.mutter.wayland.gschema.xml.in:26 #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:6
msgid "Switch to VT 6" msgid "Switch to VT 6"
msgstr "Zum virtuellen Terminal 6 wechseln" msgstr "Zum virtuellen Terminal 6 wechseln"
#: data/org.gnome.mutter.wayland.gschema.xml.in:30 #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:7
msgid "Switch to VT 7" msgid "Switch to VT 7"
msgstr "Zum virtuellen Terminal 7 wechseln" msgstr "Zum virtuellen Terminal 7 wechseln"
#: data/org.gnome.mutter.wayland.gschema.xml.in:34 #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
msgid "Switch to VT 8" msgid "Switch to VT 8"
msgstr "Zum virtuellen Terminal 8 wechseln" msgstr "Zum virtuellen Terminal 8 wechseln"
#: data/org.gnome.mutter.wayland.gschema.xml.in:38 #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
msgid "Switch to VT 9" msgid "Switch to VT 9"
msgstr "Zum virtuellen Terminal 9 wechseln" msgstr "Zum virtuellen Terminal 9 wechseln"
#: data/org.gnome.mutter.wayland.gschema.xml.in:42 #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
msgid "Switch to VT 10" msgid "Switch to VT 10"
msgstr "Zum virtuellen Terminal 10 wechseln" msgstr "Zum virtuellen Terminal 10 wechseln"
#: data/org.gnome.mutter.wayland.gschema.xml.in:46 #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
msgid "Switch to VT 11" msgid "Switch to VT 11"
msgstr "Zum virtuellen Terminal 11 wechseln" msgstr "Zum virtuellen Terminal 11 wechseln"
#: data/org.gnome.mutter.wayland.gschema.xml.in:50 #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
msgid "Switch to VT 12" msgid "Switch to VT 12"
msgstr "Zum virtuellen Terminal 12 wechseln" msgstr "Zum virtuellen Terminal 12 wechseln"
#. TRANSLATORS: This string refers to a button that switches between #: ../src/backends/meta-monitor-manager.c:518
#. * different modes.
#.
#: src/backends/meta-input-settings.c:1759
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Moduswechsel (Gruppe %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:1781
msgid "Switch monitor"
msgstr "Bildschirm wechseln"
#: src/backends/meta-input-settings.c:1783
msgid "Show on-screen help"
msgstr "Bildschirmhilfe anzeigen"
#: src/backends/meta-monitor-manager.c:675
msgid "Built-in display" msgid "Built-in display"
msgstr "Eingebaute Anzeige" msgstr "Eingebaute Anzeige"
#: src/backends/meta-monitor-manager.c:698 #: ../src/backends/meta-monitor-manager.c:544
msgid "Unknown" msgid "Unknown"
msgstr "Unbekannt" msgstr "Unbekannt"
#: src/backends/meta-monitor-manager.c:700 #: ../src/backends/meta-monitor-manager.c:546
msgid "Unknown Display" msgid "Unknown Display"
msgstr "Unbekannte Anzeige" msgstr "Unbekannte Anzeige"
#. TRANSLATORS: this is a monitor vendor name, followed by a #. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"' #. * size in inches, like 'Dell 15"'
#. #.
#: src/backends/meta-monitor-manager.c:708 #: ../src/backends/meta-monitor-manager.c:554
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" 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:471 #: ../src/compositor/compositor.c:456
#, 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 ""
"Ein weiterer Compositing-Verwalter läuft bereits auf Bildschirm %i der " "Ein weiterer Compositing-Verwalter läuft bereits auf Bildschirm %i der "
"Anzeige »%s«." "Anzeige »%s«."
#: src/core/bell.c:194 #: ../src/core/bell.c:185
msgid "Bell event" msgid "Bell event"
msgstr "Klangereignis" msgstr "Klangereignis"
#. Translators: %s is a window title #: ../src/core/delete.c:127
#: src/core/delete.c:127
#, c-format #, c-format
msgid "“%s” is not responding." msgid "“%s” is not responding."
msgstr "»%s« antwortet nicht." msgstr "»%s« antwortet nicht."
#: src/core/delete.c:129 #: ../src/core/delete.c:129
msgid "Application is not responding." msgid "Application is not responding."
msgstr "Die Anwendung antwortet nicht." msgstr "Die Anwendung antwortet nicht."
#: src/core/delete.c:134 #: ../src/core/delete.c:134
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."
@@ -534,62 +515,62 @@ msgstr ""
"Sie können der Anwendung noch etwas Zeit geben oder ein sofortiges Beenden " "Sie können der Anwendung noch etwas Zeit geben oder ein sofortiges Beenden "
"erzwingen." "erzwingen."
#: src/core/delete.c:141 #: ../src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Beenden erzwingen"
#: src/core/delete.c:141
msgid "_Wait" msgid "_Wait"
msgstr "_Warten" msgstr "_Warten"
#: src/core/display.c:608 #: ../src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Beenden erzwingen"
#: ../src/core/display.c:555
#, 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 "X-Window-Systemanzeige »%s« konnte nicht geöffnet werden\n" msgstr "X-Window-Systemanzeige »%s« konnte nicht geöffnet werden\n"
#: src/core/main.c:189 #: ../src/core/main.c:181
msgid "Disable connection to session manager" msgid "Disable connection to session manager"
msgstr "Verbindung zur Sitzungsverwaltung deaktivieren" msgstr "Verbindung zur Sitzungsverwaltung deaktivieren"
#: src/core/main.c:195 #: ../src/core/main.c:187
msgid "Replace the running window manager" msgid "Replace the running window manager"
msgstr "Den aktuellen Fensterverwalter ersetzen" msgstr "Den aktuellen Fensterverwalter ersetzen"
#: src/core/main.c:201 #: ../src/core/main.c:193
msgid "Specify session management ID" msgid "Specify session management ID"
msgstr "Kennung der Sitzungsverwaltung angeben" msgstr "Kennung der Sitzungsverwaltung angeben"
#: src/core/main.c:206 #: ../src/core/main.c:198
msgid "X Display to use" msgid "X Display to use"
msgstr "Zu verwendende X-Anzeige" msgstr "Zu verwendende X-Anzeige"
#: src/core/main.c:212 #: ../src/core/main.c:204
msgid "Initialize session from savefile" msgid "Initialize session from savefile"
msgstr "Sitzung anhand gespeicherter Datei starten" msgstr "Sitzung anhand gespeicherter Datei starten"
#: src/core/main.c:218 #: ../src/core/main.c:210
msgid "Make X calls synchronous" msgid "Make X calls synchronous"
msgstr "X-Aufrufe abgleichen" msgstr "X-Aufrufe abgleichen"
#: src/core/main.c:225 #: ../src/core/main.c:217
msgid "Run as a wayland compositor" msgid "Run as a wayland compositor"
msgstr "Als Wayland-Compositor ausführen" msgstr "Als Wayland-Compositor ausführen"
#: src/core/main.c:231 #: ../src/core/main.c:223
msgid "Run as a nested compositor" msgid "Run as a nested compositor"
msgstr "Als eingebetteten Compositor ausführen" msgstr "Als eingebetteten Compositor ausführen"
#: src/core/main.c:239 #: ../src/core/main.c:231
msgid "Run as a full display server, rather than nested" msgid "Run as a full display server, rather than nested"
msgstr "Als vollwertigen Display-Server verwenden (nicht eingebettet)" msgstr "Als vollwertigen Display-Server verwenden (nicht eingebettet)"
# CHECK # CHECK
# c-format # c-format
#: src/core/mutter.c:39 #: ../src/core/mutter.c:39
#, c-format #, c-format
msgid "" msgid ""
"mutter %s\n" "mutter %s\n"
"Copyright © 2001-%d Havoc Pennington, Red Hat, Inc., and others\n" "Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., and others\n"
"This is free software; see the source for copying conditions.\n" "This is free software; see the source for copying conditions.\n"
"There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A " "There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A "
"PARTICULAR PURPOSE.\n" "PARTICULAR PURPOSE.\n"
@@ -601,51 +582,46 @@ msgstr ""
"Es besteht KEINE Garantie auf MARKTREIFE oder EIGNUNG für einen BESTIMMTEN " "Es besteht KEINE Garantie auf MARKTREIFE oder EIGNUNG für einen BESTIMMTEN "
"ZWECK.\n" "ZWECK.\n"
#: src/core/mutter.c:53 #: ../src/core/mutter.c:53
msgid "Print version" msgid "Print version"
msgstr "Version ausgeben" msgstr "Version ausgeben"
#: src/core/mutter.c:59 #: ../src/core/mutter.c:59
msgid "Mutter plugin to use" msgid "Mutter plugin to use"
msgstr "Zu benutzendes Mutter-Plugin" msgstr "Zu benutzendes Mutter-Plugin"
#: src/core/prefs.c:1997 #: ../src/core/prefs.c:1997
#, c-format #, c-format
msgid "Workspace %d" msgid "Workspace %d"
msgstr "Arbeitsfläche %d" msgstr "Arbeitsfläche %d"
#: src/core/screen.c:580 #: ../src/core/screen.c:521
#, 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 "
"replace the current window manager." "to replace the current window manager."
msgstr "" msgstr ""
"Bildschirm »%s« hat bereits einen Fensterverwalter. Versuchen Sie die Option " "Bildschirm »%s« hat bereits einen Fensterverwalter. Versuchen Sie die Option "
"»--replace«, um den aktuellen Fensterverwalter zu ersetzen." "»--replace«, um den aktuellen Fensterverwalter zu ersetzen."
#: src/core/screen.c:665 #: ../src/core/screen.c:603
#, c-format #, c-format
msgid "Screen %d on display %s is invalid\n" msgid "Screen %d on display '%s' is invalid\n"
msgstr "Bildschirm %d auf Anzeige »%s« ist ungültig\n" msgstr "Bildschirm %d auf Anzeige »%s« ist ungültig\n"
#: src/core/util.c:120 #: ../src/core/util.c:121
msgid "Mutter was compiled without support for verbose mode\n" msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter wurde ohne Unterstützung für den redseligen Modus kompiliert\n" msgstr "Mutter wurde ohne Unterstützung für den redseligen Modus kompiliert\n"
#: src/wayland/meta-wayland-tablet-pad.c:563 #: ../src/x11/session.c:1815
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Moduswechsel: Modus %d"
#: src/x11/session.c:1815
msgid "" msgid ""
"These windows do not support save current setup and will have to be " "These windows do not support &quot;save current setup&quot; and will have to "
"restarted manually next time you log in." "be restarted manually next time you log in."
msgstr "" msgstr ""
"Diese Fenster unterstützen das Speichern der aktuellen Einstellungen nicht " "Diese Fenster unterstützen das Speichern der aktuellen Einstellungen nicht "
"und müssen bei der nächsten Anmeldung manuell neu gestartet werden." "und müssen bei der nächsten Anmeldung manuell neu gestartet werden."
#: src/x11/window-props.c:559 #: ../src/x11/window-props.c:549
#, c-format #, c-format
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (auf %s)" msgstr "%s (auf %s)"

Some files were not shown because too many files have changed in this diff Show More