wayland: Clean up output state

Fixes memory leak:

==995170== 383 (96 direct, 287 indirect) bytes in 1 blocks are definitely lost in loss record 14,733 of 15,641
==995170==    at 0x483F7B5: malloc (vg_replace_malloc.c:381)
==995170==    by 0x4B21178: g_malloc (gmem.c:125)
==995170==    by 0x4B395C0: g_slice_alloc (gslice.c:1072)
==995170==    by 0x4B0766D: g_hash_table_new_full (ghash.c:1071)
==995170==    by 0x4A4A8B4: meta_wayland_compositor_update_outputs (meta-wayland-outputs.c:483)
==995170==    by 0x4A4ABAB: meta_wayland_outputs_init (meta-wayland-outputs.c:716)
==995170==    by 0x4A3FA65: meta_wayland_compositor_new (meta-wayland.c:620)
==995170==    by 0x49C7FA7: meta_context_start (meta-context.c:412)
==995170==    by 0x10F065: main (mutter.c:148)

v2:
* Use meta_backend_get_monitor_manager. (Jonas Ådahl)

Fixes: 9a4783e364 ("Integrate the monitor manager with wayland")
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2527>
This commit is contained in:
Michel Dänzer 2022-07-23 17:06:59 +02:00 committed by Marge Bot
parent 806e64dcb0
commit f3cd2b8ce7
3 changed files with 16 additions and 0 deletions

View File

@ -704,6 +704,19 @@ bind_xdg_output_manager (struct wl_client *client,
NULL, NULL);
}
void
meta_wayland_outputs_finalize (MetaWaylandCompositor *compositor)
{
MetaBackend *backend = meta_context_get_backend (compositor->context);
MetaMonitorManager *monitor_manager =
meta_backend_get_monitor_manager (backend);
g_signal_handlers_disconnect_by_func (monitor_manager, on_monitors_changed,
compositor);
g_hash_table_destroy (compositor->outputs);
}
void
meta_wayland_outputs_init (MetaWaylandCompositor *compositor)
{

View File

@ -36,6 +36,8 @@ const GList * meta_wayland_output_get_resources (MetaWaylandOutput *wayland_outp
MetaLogicalMonitor * meta_wayland_output_get_logical_monitor (MetaWaylandOutput *wayland_output);
void meta_wayland_outputs_finalize (MetaWaylandCompositor *compositor);
void meta_wayland_outputs_init (MetaWaylandCompositor *compositor);
#endif /* META_WAYLAND_OUTPUTS_H */

View File

@ -449,6 +449,7 @@ meta_wayland_compositor_finalize (GObject *object)
ClutterActor *stage = meta_backend_get_stage (backend);
meta_wayland_activation_finalize (compositor);
meta_wayland_outputs_finalize (compositor);
meta_wayland_presentation_time_finalize (compositor);
g_hash_table_destroy (compositor->scheduled_surface_associations);