Jonas Ådahl
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
Jonas Ådahl
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
Jonas Ådahl
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
Jonas Ådahl
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
Jonas Ådahl
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
Jonas Ådahl
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
Jonas Ådahl
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
Jonas Ådahl
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
Jonas Ådahl
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
Jonas Ådahl
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
Jonas Ådahl
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
Jonas Ådahl
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
Jonas Ådahl
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
Jonas Ådahl
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
Jonas Ådahl
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
Jonas Ådahl
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
Jonas Ådahl
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
Ivan Molodetskikh
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
Ivan Molodetskikh
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
Ivan Molodetskikh
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
Ivan Molodetskikh
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
Ivan Molodetskikh
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
Ivan Molodetskikh
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
Ivan Molodetskikh
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
Daniel van Vugt
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
Daniel van Vugt
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
Daniel van Vugt
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
Jonas Ådahl
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
Jonas Ådahl
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
Carlos Garnacho
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
Carlos Garnacho
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
Carlos Garnacho
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
Carlos Garnacho
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
Daniel van Vugt
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
Florian Müllner
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
Jonas Ådahl
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
Jonas Ådahl
3c47661b78
egl: Add eglBindAPI helper
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1828 >
2021-07-07 21:03:26 +02:00
Jonas Ådahl
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
Jonas Ådahl
10c4bc6e3f
drm-buffer: Create from MetaDeviceFile instead of MetaKmsDevice
...
The DRM buffers aren't really tied to mode setting, so they shouldn't
need to have an associated mode setting device. Now that we have a
device file level object that can fill this role, port over
MetaDrmBuffer and friends away from MetaKmsDevice to MetaDeviceFile.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1828 >
2021-07-07 21:03:26 +02:00
Jonas Ådahl
6613463f58
renderer/native: Decouple device file from MetaKmsDevice
...
Keep a private MetaDeviceFile instance for the GPU's managed by the
renderer. This is a step towards decoupling rendering from mode setting,
as well as on-demand holding of device file descriptors.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1828 >
2021-07-07 21:03:26 +02:00
Jonas Ådahl
e567cb972d
renderer/native: Get 'uses-monotonic' state from MetaKmsDevice
...
It's better suited to be handled by the MetaKmsDevice abstraction.
This eliminates the last caller of drmGetCaps() from outside
MetaKmsImplDevice.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1828 >
2021-07-07 21:03:26 +02:00
Jonas Ådahl
86c4369f41
renderer/native: Look up prefers-shadow cap via MetaKmsDevice
...
This eliminates the second last user of drmGetCap() from outside of
MetaKmsImplDevice.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1828 >
2021-07-07 21:03:26 +02:00
Jonas Ådahl
93f9c99cc5
kms/impl-device: Set universal plane client cap when opening file
...
This means it will be set again if the file is reopened.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1828 >
2021-07-07 21:03:26 +02:00
Jonas Ådahl
5502f956f5
device-file: Add tags
...
Tags are meant to make it possible for a device file opener to tag a
file if it has affected the state the file descriptor is in; e.g. if it
has enabled a DRM capability.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1828 >
2021-07-07 21:03:26 +02:00
Jonas Ådahl
ceff2a93ca
renderer/native: Create dummy offscreens if onscreens fail to allocate
...
This is less dramatic than aborting, and could in theory be a temporary
issue, so handle it by rendering into an offscreen.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1828 >
2021-07-07 21:03:26 +02:00
Jonas Ådahl
db1d35c53d
kms/mode: Recreate blob id each mode set
...
This simplifies the blob management and isn't that less efficient that
it matters.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1828 >
2021-07-07 21:03:25 +02:00
Jonas Ådahl
3c9ab768ec
launcher: Remove now unused file management API
...
The open/close helpers for (maybe) restricted files has been replaced
with MetaDevicePool, so lets remove that functionality from here.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1828 >
2021-07-07 21:03:25 +02:00
Jonas Ådahl
7ce266628e
seat-impl: Open/close files via device pool
...
This replaces going through MetaLauncher to open/close restricted files.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1828 >
2021-07-07 21:03:25 +02:00
Jonas Ådahl
f6f9c093ba
clutter/seat: Remove backend pointer
...
It was unused, and having a pointer to the MetaBackend in subtypes is
more useful, so remove it.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1828 >
2021-07-07 21:03:25 +02:00
Jonas Ådahl
b4cf839e87
device-pool: Add way to open files read-only
...
Will be used by libinput's tablet device led device files.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1828 >
2021-07-07 21:03:25 +02:00