Allowing to disable font rendering integration, making it possible to
build Mutter without pango/harfbuzz/fribidi dependencies.
This commit also adds a new clutter-pango header that is used to include
pango specific bits.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4106>
There is no real need to re-create a new cairo_font_options_t now that
the API is internal. Instead, create the font_options once and just
update it attributes.
Actors already register for the emitted font-changed signal to re-create
a new PangoContext.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4106>
When the `org.gnome.desktop.interface` schema is not found, currently
we were not initializing the font_options which means we needed to
handle that on the backend side. Instead, generate the font_options at
that moment.
As the settings are loaded the moment we assign a backend to the
settings `_clutter_settings_set_backend` which is called just after the
backend is constructed which is too early for any actor to use it for
creating a PangoContext, so the change is safe.
Also, as the font_options getter is only used in ClutterActor when
creating the PangoContext, drop the getter. As we might just store that
info somewhere else in the future.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4106>
Currently, we were first reading the settings, creating a FontSettings
struct and then mapping the string associated on that struct back to
their corresponding cairo type. A lot of dancing for not much benefits.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4106>
The cairo_font_options is only meant to be consumed by ClutterActor when
creating a PangoContext and as those APIs are never used externally,
mark them private to not expose more cairo APIs.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4106>
As those properties are never set externally and just end up mapping the
gsettings values, in order to create a cairo_font_options_t.
Instead, simplify the whole thing and just create the
cairo_font_options_t from the resulting FontSettings.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4106>
Not with VRR though, because the deadline timer fires at most every 33ms
then.
Previously, the deadline timer was used only for cursor-only updates.
Using it for other updates means they pick up the latest cursor position
available at the deadline, resulting in the lowest possible input→output
latency for cursor movement.
TTBOMK this unlocks the full potential of the KMS thread given the
current atomic KMS API.
v2:
* Don't call meta_kms_update_merge_from with twice the same update
pointer.
v3:
* Don't arm deadline timer if crtc_frame->pending_page_flip is true.
v4:
* Tweak want_deadline_timer indentation per check-code-style CI job.
v5:
* Also check crtc_frame->await_flush for want_deadline_timer.
v6:
* Tweak coding style to keep lines shorter. (Jonas Ådahl)
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3964>
Previously it was just dropped on the floor with no feedback, which
could result in the main thread waiting for something which never
happens.
Fixes: 0d9fd1ead7a7 ("kms/impl-device: Destroy submitted update in disarm_all_deadline_timers")
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3964>
To swap_buffer_result_feedback from page_flip_feedback_discarded. The
former is where META_KMS_ERROR_DISCARDED from disarm_all_frame_sources
gets handled here.
Fixes: af250506fbe8 ("kms/impl-device: Queue result when discarding submitted update")
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3964>
Currently, we cast the CoglXlibRenderer pointer into a CoglX11Renderer
which is something that we would get rid of later on, along with the
usage of a data field once the Renderers become a subtypes of
CoglRenderer.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4187>
We closed all the DMA buffer fds after creating the DMA buffer backed
CoglFramebuffer, which meant that the fds we passed to CoglDmaBufHandle
were already closed. This broke screen casting with DMA buffers.
Fixes: 8509b74532 ("Make DMA buffer allocation format and modifier aware")
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4177>
This makes it possible to use udev even for backends which are not
native. Specifically we want to start controling backlights in mutter
which has to happen for both native and X11.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4130>
The generic backend now provides the launcher which is the last native
specific dependency. This makes it possible to move the udev component
to the generic backend.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4130>
For now we only pause/resume the rendering in the base class but in the
next few commits, we'll move udev from native to generic and need to
pause/resume it as well.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4130>