mirror of
https://github.com/brl/mutter.git
synced 2024-11-23 00:20:42 -05:00
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:
parent
806e64dcb0
commit
f3cd2b8ce7
@ -704,6 +704,19 @@ bind_xdg_output_manager (struct wl_client *client,
|
|||||||
NULL, NULL);
|
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
|
void
|
||||||
meta_wayland_outputs_init (MetaWaylandCompositor *compositor)
|
meta_wayland_outputs_init (MetaWaylandCompositor *compositor)
|
||||||
{
|
{
|
||||||
|
@ -36,6 +36,8 @@ const GList * meta_wayland_output_get_resources (MetaWaylandOutput *wayland_outp
|
|||||||
|
|
||||||
MetaLogicalMonitor * meta_wayland_output_get_logical_monitor (MetaWaylandOutput *wayland_output);
|
MetaLogicalMonitor * meta_wayland_output_get_logical_monitor (MetaWaylandOutput *wayland_output);
|
||||||
|
|
||||||
|
void meta_wayland_outputs_finalize (MetaWaylandCompositor *compositor);
|
||||||
|
|
||||||
void meta_wayland_outputs_init (MetaWaylandCompositor *compositor);
|
void meta_wayland_outputs_init (MetaWaylandCompositor *compositor);
|
||||||
|
|
||||||
#endif /* META_WAYLAND_OUTPUTS_H */
|
#endif /* META_WAYLAND_OUTPUTS_H */
|
||||||
|
@ -449,6 +449,7 @@ meta_wayland_compositor_finalize (GObject *object)
|
|||||||
ClutterActor *stage = meta_backend_get_stage (backend);
|
ClutterActor *stage = meta_backend_get_stage (backend);
|
||||||
|
|
||||||
meta_wayland_activation_finalize (compositor);
|
meta_wayland_activation_finalize (compositor);
|
||||||
|
meta_wayland_outputs_finalize (compositor);
|
||||||
meta_wayland_presentation_time_finalize (compositor);
|
meta_wayland_presentation_time_finalize (compositor);
|
||||||
|
|
||||||
g_hash_table_destroy (compositor->scheduled_surface_associations);
|
g_hash_table_destroy (compositor->scheduled_surface_associations);
|
||||||
|
Loading…
Reference in New Issue
Block a user