From: Pekka Paalanen <pekka.paala...@collabora.co.uk> You can bind to the global interface, and it delivers a fake clock id. All requests on it raise an error.
Signed-off-by: Pekka Paalanen <pekka.paala...@collabora.co.uk> --- src/compositor.c | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/src/compositor.c b/src/compositor.c index 16b9b57..cd07a0d 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -1,7 +1,7 @@ /* * Copyright © 2010-2011 Intel Corporation * Copyright © 2008-2011 Kristian Høgsberg - * Copyright © 2012 Collabora, Ltd. + * Copyright © 2012-2014 Collabora, Ltd. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided @@ -54,6 +54,7 @@ #include "compositor.h" #include "scaler-server-protocol.h" +#include "presentation_timing-server-protocol.h" #include "../shared/os-compatibility.h" #include "git-version.h" #include "version.h" @@ -3475,6 +3476,69 @@ bind_scaler(struct wl_client *client, } static void +presentation_destroy(struct wl_client *client, struct wl_resource *resource) +{ + wl_resource_destroy(resource); +} + +static void +presentation_feedback(struct wl_client *client, + struct wl_resource *resource, + struct wl_resource *surface, + uint32_t callback) +{ + wl_resource_post_error(resource, WL_DISPLAY_ERROR_INVALID_METHOD, + "presentation_feedback unimplemented"); +} + +static void +presentation_queue(struct wl_client *client, + struct wl_resource *resource, + struct wl_resource *surface, + uint32_t tv_sec_hi, + uint32_t tv_sec_lo, + uint32_t tv_nsec) +{ + wl_resource_post_error(resource, WL_DISPLAY_ERROR_INVALID_METHOD, + "presentation_queue unimplemented"); +} + +static void +presentation_discard_queue(struct wl_client *client, + struct wl_resource *resource, + struct wl_resource *surface) +{ + wl_resource_post_error(resource, WL_DISPLAY_ERROR_INVALID_METHOD, + "presentation_discard_queue unimplemented"); +} + +static const struct presentation_interface presentation_implementation = { + presentation_destroy, + presentation_feedback, + presentation_queue, + presentation_discard_queue +}; + +static void +bind_presentation(struct wl_client *client, + void *data, uint32_t version, uint32_t id) +{ + struct weston_compositor *compositor = data; + struct wl_resource *resource; + + resource = wl_resource_create(client, &presentation_interface, + MIN(version, 1), id); + if (resource == NULL) { + wl_client_post_no_memory(client); + return; + } + + wl_resource_set_implementation(resource, &presentation_implementation, + compositor, NULL); + presentation_send_clock_id(resource, CLOCK_MONOTONIC); +} + +static void compositor_bind(struct wl_client *client, void *data, uint32_t version, uint32_t id) { @@ -3568,6 +3632,10 @@ weston_compositor_init(struct weston_compositor *ec, ec, bind_scaler)) return -1; + if (!wl_global_create(ec->wl_display, &presentation_interface, 1, + ec, bind_presentation)) + return -1; + wl_list_init(&ec->view_list); wl_list_init(&ec->plane_list); wl_list_init(&ec->layer_list); -- 1.8.3.2 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel