diff options
author | Jason Ekstrand <jason@jlekstrand.net> | 2014-04-02 19:53:51 -0500 |
---|---|---|
committer | Kristian Høgsberg <krh@bitplanet.net> | 2014-04-02 21:26:20 -0700 |
commit | a669bd5e00443587b901fc12395bc1773a78616a (patch) | |
tree | 455bc7e03bfbd76b357b730bf72019277393bba1 /clients | |
parent | 738715d628f2b710c57544ed2db81be7e7450c52 (diff) | |
download | weston-a669bd5e00443587b901fc12395bc1773a78616a.tar.gz |
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>
Diffstat (limited to 'clients')
-rw-r--r-- | clients/window.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/clients/window.c b/clients/window.c index 5309f313..83934249 100644 --- a/clients/window.c +++ b/clients/window.c @@ -3507,7 +3507,8 @@ void input_set_selection(struct input *input, struct wl_data_source *source, uint32_t time) { - wl_data_device_set_selection(input->data_device, source, time); + if (input->data_device) + wl_data_device_set_selection(input->data_device, source, time); } void @@ -4903,11 +4904,14 @@ display_add_input(struct display *d, uint32_t id) wl_seat_add_listener(input->seat, &seat_listener, input); wl_seat_set_user_data(input->seat, input); - input->data_device = - wl_data_device_manager_get_data_device(d->data_device_manager, - input->seat); - wl_data_device_add_listener(input->data_device, &data_device_listener, - input); + if (d->data_device_manager) { + input->data_device = + wl_data_device_manager_get_data_device(d->data_device_manager, + input->seat); + wl_data_device_add_listener(input->data_device, + &data_device_listener, + input); + } input->pointer_surface = wl_compositor_create_surface(d->compositor); @@ -4930,7 +4934,8 @@ input_destroy(struct input *input) if (input->selection_offer) data_offer_destroy(input->selection_offer); - wl_data_device_destroy(input->data_device); + if (input->data_device) + wl_data_device_destroy(input->data_device); if (input->display->seat_version >= 3) { if (input->pointer) @@ -5413,7 +5418,10 @@ display_get_egl_display(struct display *d) struct wl_data_source * display_create_data_source(struct display *display) { - return wl_data_device_manager_create_data_source(display->data_device_manager); + if (display->data_device_manager) + return wl_data_device_manager_create_data_source(display->data_device_manager); + else + return NULL; } EGLConfig |