compositor: Remove wl_output-global on unplug

Or we would segfault when a client binds to a output thats already
destroyed.
Benjamin Franzke 13 years ago
parent fe0444a9a9
commit b687940cd5
  1. 9
      src/compositor.c
  2. 1
      src/compositor.h

@ -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;

Loading…
Cancel
Save