diff options
author | Alon Levy <alevy@redhat.com> | 2012-09-14 00:42:48 +0300 |
---|---|---|
committer | Alon Levy <alevy@redhat.com> | 2012-10-23 18:46:59 +0200 |
commit | faccd43e106cf8f9a0987a4c6ecc839cc2b8424f (patch) | |
tree | 396ca5fe0018a04287cf431357c6a31ddb06a9ef | |
parent | 2bd57d49a2f0bafdb04d3fd99b7ed8a25c00ad04 (diff) |
xspice: implement client capabilities
-rw-r--r-- | src/qxl.h | 3 | ||||
-rw-r--r-- | src/qxl_driver.c | 5 | ||||
-rw-r--r-- | src/spiceqxl_display.c | 15 |
3 files changed, 23 insertions, 0 deletions
@@ -307,6 +307,9 @@ struct _qxl_screen_t uint32_t bytes_pp; uint8_t *data, *flipped; } guest_primary; + + uint8_t client_present; + uint8_t client_capabilities[58]; #endif /* XSPICE */ }; diff --git a/src/qxl_driver.c b/src/qxl_driver.c index 2faf3ca..db72c8d 100644 --- a/src/qxl_driver.c +++ b/src/qxl_driver.c @@ -1597,8 +1597,13 @@ can_accelerate_picture (PicturePtr pict) return TRUE; } +#ifdef XSPICE +#define QXL_HAS_CAP(qxl, cap) \ + (((qxl)->client_capabilities[(cap) / 8]) & (1 << ((cap) % 8))) +#else #define QXL_HAS_CAP(qxl, cap) \ (((qxl)->rom->client_capabilities[(cap) / 8]) & (1 << ((cap) % 8))) +#endif static Bool qxl_has_composite (qxl_screen_t *qxl) diff --git a/src/spiceqxl_display.c b/src/spiceqxl_display.c index b1ce557..d19e054 100644 --- a/src/spiceqxl_display.c +++ b/src/spiceqxl_display.c @@ -307,6 +307,17 @@ static int interface_flush_resources(QXLInstance *sin) return ret; } +#if SPICE_SERVER_VERSION >= 0x000b04 +static void interface_set_client_capabilities(QXLInstance *sin, + uint8_t client_present, + uint8_t caps[58]) +{ + qxl_screen_t *qxl = container_of(sin, qxl_screen_t, display_sin); + + memcpy(qxl->client_capabilities, caps, sizeof(qxl->client_capabilities)); + qxl->client_present = client_present; +} +#endif static const QXLInterface qxl_interface = { .base.type = SPICE_INTERFACE_QXL, @@ -327,6 +338,10 @@ static const QXLInterface qxl_interface = { .req_cursor_notification = interface_req_cursor_notification, .notify_update = interface_notify_update, .flush_resources = interface_flush_resources, +#if SPICE_SERVER_VERSION >= 0x000b04 + .set_client_capabilities = interface_set_client_capabilities, + // TODO client_monitors_config +#endif }; void qxl_add_spice_display_interface(qxl_screen_t *qxl) |