compositor: Remove wl_output-global on unplug
Or we would segfault when a client binds to a output thats already destroyed.
This commit is contained in:
+7
-2
@@ -2224,8 +2224,12 @@ weston_shader_init(struct weston_shader *shader,
|
|||||||
WL_EXPORT void
|
WL_EXPORT void
|
||||||
weston_output_destroy(struct weston_output *output)
|
weston_output_destroy(struct weston_output *output)
|
||||||
{
|
{
|
||||||
|
struct weston_compositor *c = output->compositor;
|
||||||
|
|
||||||
pixman_region32_fini(&output->region);
|
pixman_region32_fini(&output->region);
|
||||||
pixman_region32_fini(&output->previous_damage);
|
pixman_region32_fini(&output->previous_damage);
|
||||||
|
|
||||||
|
wl_display_remove_global(c->wl_display, output->global);
|
||||||
}
|
}
|
||||||
|
|
||||||
WL_EXPORT void
|
WL_EXPORT void
|
||||||
@@ -2313,8 +2317,9 @@ weston_output_init(struct weston_output *output, struct weston_compositor *c,
|
|||||||
|
|
||||||
wl_list_init(&output->frame_callback_list);
|
wl_list_init(&output->frame_callback_list);
|
||||||
|
|
||||||
wl_display_add_global(c->wl_display,
|
output->global =
|
||||||
&wl_output_interface, output, bind_output);
|
wl_display_add_global(c->wl_display, &wl_output_interface,
|
||||||
|
output, bind_output);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|||||||
@@ -73,6 +73,7 @@ enum dpms_enum {
|
|||||||
|
|
||||||
struct weston_output {
|
struct weston_output {
|
||||||
struct wl_list link;
|
struct wl_list link;
|
||||||
|
struct wl_global *global;
|
||||||
struct weston_compositor *compositor;
|
struct weston_compositor *compositor;
|
||||||
struct weston_matrix matrix;
|
struct weston_matrix matrix;
|
||||||
struct wl_list frame_callback_list;
|
struct wl_list frame_callback_list;
|
||||||
|
|||||||
Reference in New Issue
Block a user