03242a4e2a
tests/test-runner: Assorted style cleanup
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 11:25:21 +02:00
e09de6787f
context: Handle dealing with option entries
...
Users can add option entries, and it'll be part of the configuration
phase.
Create the main group manually to be able to set a user_data pointer;
this will be required to not have to rely on globals when parsing
options using a callback.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 11:25:21 +02:00
3d2160b473
tests/unit-tests: Port to MetaContext
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 11:25:20 +02:00
ccd8da336f
context/test: Add 'before-tests' and 'after-tests' signals
...
Will be used to set up and tear down test infrastructure.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 10:59:40 +02:00
bccd93a598
tests/native-headless: Port to MetaContext
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 10:59:40 +02:00
82d9dda08a
context/test: Add helper to run a test session
...
Takes care of setup, starting, running, and terminating, as well as
running the GLib test suite.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 10:59:40 +02:00
6732e3e585
main: Temporarily tie meta_quit() to meta_context_terminate*()
...
Makes it possible for mutter internally to use meta_quit() both if we're
running using a MetaContext or the scattered functions.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 10:59:40 +02:00
2e784e23a2
context: Add 'notify_ready()' vfunc and method
...
This intends to replace the call to `meta_register_with_session()` that
deals with X11 session management, and is called when the user is
"ready". In thet test context, doing that makes no sense, so make it a
no-op.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 10:59:40 +02:00
4cd1154b3d
context/test: Respect MUTTER_SYNC envvar
...
It just calls meta_set_syncing() accordingly. Is currently done by
meta_init() either when the env var is set, or when a command line
argument is passed.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 10:59:40 +02:00
fddc631599
context/test: Enable 'scale-monitor-framebuffer' backend setting
...
This is done in all tests, so make life easier by doing it here.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 10:59:40 +02:00
8bf7d5c155
context: Init debug utils during setup phase
...
Is currently done during meta_init().
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 10:59:40 +02:00
ecc40e7b23
context: Init introspection paths during setup
...
This is currently done during meta_init().
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 10:59:40 +02:00
a32b005848
context: Change to home directory during setup
...
Is currently done during meta_init().
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 10:59:40 +02:00
6f4b973329
context: Initialize signal handlers during setup
...
Is currently done during meta_init().
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 10:59:40 +02:00
8ace1bf3ea
context: Init prefs when starting
...
Is currently done by meta_start().
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 10:59:40 +02:00
02176eab83
context: Add start/run/terminate phases
...
The start phase creates the MetaDisplay object, and initializes Wayland, and
creates the main loop.
The run phase runs the main loop and handles returning an error if the
context was terminated with an error.
The terminate phase terminates the main loop, with or without an error.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 10:59:40 +02:00
fe652518af
context: Load plugin during setup phase
...
The plugin must be configured by the context implementation during the
configure phase.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 10:59:40 +02:00
75f9085ab9
context: Add setup phase
...
During this phase, the backend is created and configured. Currently only
configured, but will gain more logic that currently main.c does with
various helpers.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 10:59:40 +02:00
df8074c636
util: Export meta_set_syncing() symbol
...
Will be set by MetaContextTest, until we can move away from the function
completely.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 10:59:40 +02:00
c45a1619f5
context: Set up locale on init
...
Taken from main.c, which does that when getting the main option context,
which happens to happen early in a process's lifetime.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 10:59:40 +02:00
6e4d3e0f85
context: Add create_backend() vfunc
...
This lets the context implementation create a backend. Will later be
used in a 'setup' phase.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 10:59:40 +02:00
434f5e5b7b
context/test: Add test context type enum
...
A test context type will later determine what kind of backend the test
case should use; i.e. whether the nested or headless backend should be
used.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 10:43:28 +02:00
8cb177499d
context/test: Configure test setup during configuration
...
This includes setting up the GLib test framework, overriding the X11
and Wayland display names.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 10:43:28 +02:00
bbf6d88d54
test-utils: Expose helper for ensuring client path
...
Will be used by the test context to reduce boiler plate.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 10:43:28 +02:00
6c6b5b9a48
context: Add entry points for context configuration
...
Configuration is the first step of the lifetime of a context, after
creation; it's here where argc/argv is processed, and it's determined
what kind of compositor, etc, it is going to be.
The tests always run as Wayand compositors, so the configuration is
quite simple, but will involve more steps later on.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 10:43:28 +02:00
bf84b2423d
main: Move MetaCompositorType to a new meta-enums.h
...
It'll be part of and owned by MetaContext, intending to replace
`meta_is_wayland_compositor()`, but place it in a new file for public
enums so that it can be used from wherever.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 10:43:28 +02:00
e17bf88d5e
tests: Introduce MetaContextTest
...
This introduces a MetaContext implementation aimed to be used for test
cases, with as little boiler plate as possible needed in the test.
It currently doesn't do anything, just fills out the GObject boiler
plate and sets a name.
Build it into every core test, for compilation, even though it isn't
used anywhere yet.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 10:43:28 +02:00
e020fdfddf
Introduce mostly empty MetaContext type
...
This type is intended to replace the scattered functions used to
configure how the Mutter compositor is run. It currently doesn't do
anything, and only has a human readable name, intended to be set to e.g.
"GNOME Shell".
It's an abstract type, and is intended to be used via either a future
`MetaContextMain` for real display server use cases, and a
`MetaContextTest` for test cases.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861 >
2021-07-15 10:43:28 +02:00
23b79f33fa
launcher: Remove open/close restricted file API
...
It has since some time been replaced with MetaDevicePool, and isn't used
by anything anymore, so remove it.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1929 >
2021-07-13 12:19:14 +00:00
1116b14f38
backends/native: Get rendering and swap timings during scanout
...
Scanout doesn't go through the usual path of compositing and doing
eglSwapBuffers, therefore it doesn't hit the timestamp query placed in
that path. Instead, get the timings by binding the scanout buffer to an
FBO and doing a timestamp query on the FBO.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1762 >
2021-07-13 08:09:42 +00:00
5a0d3ed4dd
backends/native: Remove unneeded NULL check
...
There seems to be no way to construct this type with an invalid bo.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1762 >
2021-07-13 08:09:42 +00:00
8c258d1de1
cogl: Add CPU swap time and GPU rendering query to CoglFrameInfo
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1762 >
2021-07-13 08:09:42 +00:00
3aa0e3074f
clutter: Store vblank duration in ClutterFrameClock
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1762 >
2021-07-13 08:09:42 +00:00
d10567ea3e
clutter: Add vblank duration to ClutterStageView
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1762 >
2021-07-13 08:09:42 +00:00
2d939754b1
crtc-mode-info: Add vblank duration field
...
Only populated for KMS backed modes, as that's where it's relevant.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1762 >
2021-07-13 08:09:42 +00:00
e40ff9d8b7
backends/native: Add meta_calculate_drm_mode_vblank_duration_us()
...
Computes the vblank duration from mode timings.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1762 >
2021-07-13 08:09:42 +00:00
9f492a0ee0
kms: Add fixed point formatting to MUTTER_DEBUG=kms printing
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1923 >
2021-07-13 15:29:14 +08:00
b59c5386b9
kms: Add a trivial meta_fixed_16_to_double conversion function
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1923 >
2021-07-13 15:26:43 +08:00
ea75ea0b73
kms: Add an internal MetaKmsPropType to distinguish fixed point values
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1923 >
2021-07-13 15:26:43 +08:00
c2c41bbf0a
tests/kms-utils: Add some basic 16:16 fixed tests
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1927 >
2021-07-09 22:40:06 +00:00
021a401bc8
tests: Move out KMS utils unit tests to its own executable
...
Better to split things up a bit, so one can with more ease run a
specific test.
In the KMS utils case, we don't even need a mutter context, making it
much lighter.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1927 >
2021-07-09 22:40:05 +00:00
ec390b68c5
wayland: Implement the xdg-activation protocol
...
This protocol implements the IPC necessary to focus application
windows across launcher/launchee. Add support for it.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1845 >
2021-07-09 09:34:28 +00:00
665081d268
core: Add ::timeout signal to MetaStartupSequence
...
These objects are missing explicit notifications about when they
are going away by themselves, add one.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1845 >
2021-07-09 09:34:28 +00:00
2115debd09
build: Add xdg-activation to build
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1845 >
2021-07-09 09:34:28 +00:00
256939cb84
build: Add support for "staging" wayland protocols
...
These come in a different folder, with no stable/unstable nomenclature.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1845 >
2021-07-09 09:34:28 +00:00
d996319cf9
kms: Add a missing g_set_error on error
...
So the GError is not left NULL and then dereferenced.
Fix provided by Jonas Ådahl <jadahl@gmail.com >
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1878
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1925 >
2021-07-09 16:26:11 +08:00
357c506ee7
events: Only support super+scroll on wayland
...
On Xorg, the event only reaches us when the pointer is within the
stage input region. That makes the feature more confusing than
useful, so make it wayland-only.
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3759
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1922 >
2021-07-08 00:02:41 +02:00
ce5a5789bb
native: Release output device files that are unused
...
In order to make it possible to e.g. unload an unused DRM device, we
need to make sure that we don't keep the file descriptor open if we
don't need it; otherwise we block anyone from unloading the
corresponding module.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1828 >
2021-07-07 21:10:30 +02:00
3c47661b78
egl: Add eglBindAPI helper
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1828 >
2021-07-07 21:03:26 +02:00
173d895d53
kms: Remove now unused API to get file descriptor
...
The last user switched to using MetaDeviceFile, so time to clean up.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1828 >
2021-07-07 21:03:26 +02:00