summaryrefslogtreecommitdiff
path: root/clients
diff options
context:
space:
mode:
authorJason Ekstrand <jason@jlekstrand.net>2014-04-02 19:53:51 -0500
committerKristian Høgsberg <krh@bitplanet.net>2014-04-02 21:26:20 -0700
commita669bd5e00443587b901fc12395bc1773a78616a (patch)
tree455bc7e03bfbd76b357b730bf72019277393bba1 /clients
parent738715d628f2b710c57544ed2db81be7e7450c52 (diff)
downloadweston-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.c24
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