It took a MetaTestClient, which wasn't used. To allow it be used for windows
that doesn't come from a MetaTestClient, remove the MetaTestClient
namespace, and update the callers.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
This adds wl_seat and wl_pointer boilerplate, and a pointer-entered
signal on the surface helper struct. It's intended to be used by a
future cursor test case client.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
Following previous commit, rename _clutter_paint_volume_init_static()
to clutter_paint_volume_init_from_actor(), and also
_clutter_paint_volume_copy_static() to
clutter_paint_volume_init_from_paint_volume().
Make clutter_paint_volume_init_from_paint_volume() follow the dst/src
semantic in its arguments, which also allows removing
_clutter_paint_volume_set_from_volume() which is exactly the same now.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4175>
And change clutter_paint_volume_free() to always free the paint volume.
Remove all calls to clutter_paint_volume_free() on static variables.
Having to call a free function on a static variable always seemed a bit
odd, and this genuinely confuses Coverity (and me).
Coverity CID: #1505838
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4175>
As far as I can see this doesn't happen in practice, but theoretically
the uninitialized values can be used if:
1. `did_placement` is TRUE
2. `flags` contains both `META_MOVE_RESIZE_RESIZE_ACTION` and
also `META_MOVE_RESIZE_MOVE_ACTION`
3. `!meta_window_is_tied_to_drag (window)` is FALSE
In that case, the `frame_rect` variable (with uninitialized values) is
passed to `unconstrained_rect`, then passed to `constrained_rect`,
then finally the (uninitialized) X and Y values are read in the
`if (did_placement)` branch.
This is probably a regression from 3047b2ce261. I don't know if this is
the appropriate fix.
Coverity CID: #1511378
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4175>
As they are now shared between GL3 and GLES3 texture driver, there is no
need anymore for having them in a separate header and included.
Cleanup the names of the functions while doing so.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4163>
Abstract away the common bits between GL3 and GLES2 TextureDriver
implementations by sharing the common bits in a parent class.
Ideally, we would move the various vfuncs that are GL specific from the
abstract TextureDriver type but that can be done at a later stage once
there is actual work on adding a Vulkan driver.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4163>
As they make more sense there. Maybe we could have a common
OpenGLTextureDriver
that would share the common texture_2d_* vfuncs but that can be done
later.
By moving those vfuncs to the TextureDriver, we can get rid of the
texutre_2d
nop driver implementations.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4163>
Trying to update the opacity before the window actor get assigned a
surface will be ignored.
As result, the initial opacity set by X11 clients using the EWMH
property _NET_WM_WINDOW_OPACITY is not applied at first.
To avoid the issue, make sure to set the opacity once the window actor
has a surface assigned.
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3513
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4170>
As those tests are not really useful, see previous commit. Removing them
allows us
to get rid of gdk-pixbuf in this code path and so, allowing to
completely remove it
once the MetaBackground API is refactored.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4133>
As is, ClutterImage is not really useful, it only serves for rendering a
CoglTexture as an actor. Shell, has a subclass that adds more features
that unfortunately cannot be upstreamed without bringing more gdk-pixbuf
usage inside libmutter, eg implementing GIcon/GLoadableIcon.
It also has requirements based on whether the image is symbolic or not.
Things that Clutter so far doesn't care about.
So just remove ClutterImage & let shells re-implement it themselves if
needed based on their needs.
Note, that once we have ClutterSnapshot, it should be straightforward to
write a custom actor that renders a CoglTexture or so.
This "un"fortunately means getting rid of various interactive tests that
either didn't compile at all or are not useful as is, like all the
remaining interactive tests.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4133>
g_hash_table_steal leaked the MetaMonitorSpec key in the old
compositor->outputs hash table:
==1059254== 62 (32 direct, 30 indirect) bytes in 1 blocks are definitely lost in loss record 8,232 of 13,059
==1059254== at 0x48489F3: calloc (vg_replace_malloc.c:1340)
==1059254== by 0x4C65C19: g_malloc0 (gmem.c:133)
==1059254== by 0x4956FE8: meta_monitor_spec_clone (meta-monitor.c:108)
==1059254== by 0x4A7B9E8: meta_wayland_compositor_update_outputs (meta-wayland-outputs.c:555)
==1059254== by 0x4A7C09E: meta_wayland_outputs_init (meta-wayland-outputs.c:796)
==1059254== by 0x4A63B60: meta_wayland_compositor_new (meta-wayland.c:874)
==1059254== by 0x49B58D0: meta_context_start (meta-context.c:523)
==1059254== by 0x10A8D7: main (mutter.c:148)
==1059254==
==1059254== 62 (32 direct, 30 indirect) bytes in 1 blocks are definitely lost in loss record 8,233 of 13,059
==1059254== at 0x48489F3: calloc (vg_replace_malloc.c:1340)
==1059254== by 0x4C65C19: g_malloc0 (gmem.c:133)
==1059254== by 0x4956FE8: meta_monitor_spec_clone (meta-monitor.c:108)
==1059254== by 0x4A7B9E8: meta_wayland_compositor_update_outputs (meta-wayland-outputs.c:555)
==1059254== by 0x4A7BA8C: on_monitors_changed (meta-wayland-outputs.c:572)
==1059254== by 0x4F5E9BF: g_closure_invoke (gclosure.c:833)
==1059254== by 0x4F72D82: signal_emit_unlocked_R.isra.0 (gsignal.c:3887)
==1059254== by 0x4F747A8: signal_emit_valist_unlocked (gsignal.c:3519)
==1059254== by 0x4F7A665: g_signal_emit_valist (gsignal.c:3262)
==1059254== by 0x4F7A722: g_signal_emit (gsignal.c:3582)
==1059254== by 0x49691BD: meta_monitor_manager_notify_monitors_changed (meta-monitor-manager.c:1241)
==1059254== by 0x496EA8D: meta_monitor_manager_rebuild (meta-monitor-manager.c:3968)
v2:
* Use g_autoptr. (Sebastian Wick, Jonas Ådahl)
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4149>
Fixes leak:
==9634== 60 (16 direct, 44 indirect) bytes in 1 blocks are definitely lost in loss record 8,198 of 13,049
==9634== at 0x48489F3: calloc (vg_replace_malloc.c:1340)
==9634== by 0x5DDCD29: drmModeGetPlaneResources (xf86drmMode.c:1243)
==9634== by 0x4AD94C9: init_planes (meta-kms-impl-device.c:1010)
==9634== by 0x4ADC7B5: meta_kms_impl_device_init_mode_setting (meta-kms-impl-device.c:2350)
==9634== by 0x4AD27BC: meta_kms_impl_device_atomic_initable_init (meta-kms-impl-device-atomic.c:1416)
==9634== by 0x4DD3B32: g_initable_new_valist (ginitable.c:249)
==9634== by 0x4DD3C19: g_initable_new (ginitable.c:163)
==9634== by 0x4ACEAE8: meta_create_kms_impl_device (meta-kms-device.c:662)
==9634== by 0x4ACECD1: create_impl_device_in_impl (meta-kms-device.c:722)
==9634== by 0x4B01837: meta_thread_impl_dispatch (meta-thread-impl.c:542)
==9634== by 0x4B00D06: impl_source_dispatch (meta-thread-impl.c:175)
==9634== by 0x4C5C81E: g_main_dispatch (gmain.c:3357)
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4149>
Fixes leak:
==6470== 64 bytes in 1 blocks are definitely lost in loss record 8,677 of 13,062
==6470== at 0x48489F3: calloc (vg_replace_malloc.c:1340)
==6470== by 0x4C65C19: g_malloc0 (gmem.c:133)
==6470== by 0x4C746C5: g_rc_box_alloc_full (grcbox.c:106)
==6470== by 0x527B63B: mtk_region_create (mtk-region.c:75)
==6470== by 0x527B69C: mtk_region_copy (mtk-region.c:96)
==6470== by 0x4A54F56: meta_screen_cast_stream_src_maybe_record_frame_with_timestamp (meta-screen-cast-stream-src.c:1023)
==6470== by 0x4A54A9F: meta_screen_cast_stream_src_maybe_record_frame (meta-screen-cast-stream-src.c:871)
==6470== by 0x4A49431: on_after_paint (meta-screen-cast-virtual-stream-src.c:190)
==6470== by 0x49787F6: notify_watchers_for_mode (meta-stage.c:195)
==6470== by 0x4978A2F: meta_stage_paint_view (meta-stage.c:271)
==6470== by 0x533D152: clutter_stage_paint_view (clutter-stage.c:490)
==6470== by 0x497A476: paint_stage (meta-stage-impl.c:410)
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4149>
Fixes leaks:
==1060013== 96 (32 direct, 64 indirect) bytes in 1 blocks are definitely lost in loss record 10,897 of 13,064
==1060013== at 0x4F81D57: g_type_create_instance (gtype.c:1929)
==1060013== by 0x4F64ABF: g_object_new_internal.part.0 (gobject.c:2606)
==1060013== by 0x4F66ADD: g_object_new_internal (gobject.c:2603)
==1060013== by 0x4F66ADD: g_object_new_with_properties (gobject.c:2769)
==1060013== by 0x4F67A30: g_object_new (gobject.c:2415)
==1060013== by 0x52F7C7B: clutter_color_state_new_full (clutter-color-state.c:339)
==1060013== by 0x4939CD0: update_color_state (meta-color-device.c:725)
==1060013== by 0x4939DDE: meta_color_device_new (meta-color-device.c:759)
==1060013== by 0x493CB7B: update_devices (meta-color-manager.c:205)
==1060013== by 0x493CE65: meta_color_manager_monitors_changed (meta-color-manager.c:264)
==1060013== by 0x49341CB: meta_backend_monitors_changed (meta-backend.c:371)
==1060013== by 0x4969150: meta_monitor_manager_notify_monitors_changed (meta-monitor-manager.c:1235)
==1060013== by 0x496928F: meta_monitor_manager_setup (meta-monitor-manager.c:1273)
==1060013==
==1060013== 96 (32 direct, 64 indirect) bytes in 1 blocks are definitely lost in loss record 10,898 of 13,064
==1060013== at 0x4F81D57: g_type_create_instance (gtype.c:1929)
==1060013== by 0x4F64ABF: g_object_new_internal.part.0 (gobject.c:2606)
==1060013== by 0x4F66ADD: g_object_new_internal (gobject.c:2603)
==1060013== by 0x4F66ADD: g_object_new_with_properties (gobject.c:2769)
==1060013== by 0x4F67A30: g_object_new (gobject.c:2415)
==1060013== by 0x52F7C7B: clutter_color_state_new_full (clutter-color-state.c:339)
==1060013== by 0x4939CD0: update_color_state (meta-color-device.c:725)
==1060013== by 0x4939DDE: meta_color_device_new (meta-color-device.c:759)
==1060013== by 0x493CB7B: update_devices (meta-color-manager.c:205)
==1060013== by 0x493CE65: meta_color_manager_monitors_changed (meta-color-manager.c:264)
==1060013== by 0x49341CB: meta_backend_monitors_changed (meta-backend.c:371)
==1060013== by 0x4969150: meta_monitor_manager_notify_monitors_changed (meta-monitor-manager.c:1235)
==1060013== by 0x496EA7D: meta_monitor_manager_rebuild (meta-monitor-manager.c:3968)
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4149>
Fixes leak:
==5763== 96 (32 direct, 64 indirect) bytes in 1 blocks are definitely lost in loss record 10,901 of 13,065
==5763== at 0x4F81D57: g_type_create_instance (gtype.c:1929)
==5763== by 0x4F64ABF: g_object_new_internal.part.0 (gobject.c:2606)
==5763== by 0x4F66ADD: g_object_new_internal (gobject.c:2603)
==5763== by 0x4F66ADD: g_object_new_with_properties (gobject.c:2769)
==5763== by 0x4F67A30: g_object_new (gobject.c:2415)
==5763== by 0x52F7C46: clutter_color_state_new_full (clutter-color-state.c:339)
==5763== by 0x52F7C03: clutter_color_state_new (clutter-color-state.c:312)
==5763== by 0x52F7110: clutter_color_manager_get_default_color_state (clutter-color-manager.c:150)
==5763== by 0x52E7543: get_default_color_state (clutter-actor.c:17836)
==5763== by 0x52E765D: clutter_actor_unset_color_state (clutter-actor.c:17864)
==5763== by 0x52CF056: clutter_actor_constructor (clutter-actor.c:5646)
==5763== by 0x4F64DD3: g_object_new_with_custom_constructor (gobject.c:2524)
==5763== by 0x4F67275: g_object_new_internal (gobject.c:2604)
==5763== by 0x4F67275: g_object_new_valist (gobject.c:2945)
Fixes: 2693cac83a5c ("clutter/color-manager: Add a method to get the default color state")
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4149>