toytoolkit: Don't crash if wl_data_device_manager is not present

This is primaraly to get weston-fullscreen to run on compositors that lack
copy-paste support.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
dev
Jason Ekstrand 11 years ago committed by Kristian Høgsberg
parent 738715d628
commit a669bd5e00
  1. 10
      clients/window.c

@ -3507,6 +3507,7 @@ void
input_set_selection(struct input *input, input_set_selection(struct input *input,
struct wl_data_source *source, uint32_t time) struct wl_data_source *source, uint32_t time)
{ {
if (input->data_device)
wl_data_device_set_selection(input->data_device, source, time); wl_data_device_set_selection(input->data_device, source, time);
} }
@ -4903,11 +4904,14 @@ display_add_input(struct display *d, uint32_t id)
wl_seat_add_listener(input->seat, &seat_listener, input); wl_seat_add_listener(input->seat, &seat_listener, input);
wl_seat_set_user_data(input->seat, input); wl_seat_set_user_data(input->seat, input);
if (d->data_device_manager) {
input->data_device = input->data_device =
wl_data_device_manager_get_data_device(d->data_device_manager, wl_data_device_manager_get_data_device(d->data_device_manager,
input->seat); input->seat);
wl_data_device_add_listener(input->data_device, &data_device_listener, wl_data_device_add_listener(input->data_device,
&data_device_listener,
input); input);
}
input->pointer_surface = wl_compositor_create_surface(d->compositor); input->pointer_surface = wl_compositor_create_surface(d->compositor);
@ -4930,6 +4934,7 @@ input_destroy(struct input *input)
if (input->selection_offer) if (input->selection_offer)
data_offer_destroy(input->selection_offer); data_offer_destroy(input->selection_offer);
if (input->data_device)
wl_data_device_destroy(input->data_device); wl_data_device_destroy(input->data_device);
if (input->display->seat_version >= 3) { if (input->display->seat_version >= 3) {
@ -5413,7 +5418,10 @@ display_get_egl_display(struct display *d)
struct wl_data_source * struct wl_data_source *
display_create_data_source(struct display *display) display_create_data_source(struct display *display)
{ {
if (display->data_device_manager)
return wl_data_device_manager_create_data_source(display->data_device_manager); return wl_data_device_manager_create_data_source(display->data_device_manager);
else
return NULL;
} }
EGLConfig EGLConfig

Loading…
Cancel
Save