From a189c131b94bcb6a764d179e917396fb772a1d0b Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Fri, 25 May 2012 00:21:00 -0700 Subject: [PATCH] Test for SetDefault and SetNull before using them (not present in FreeRDP 1.0.1), fix naming conflict with default pointer setting functions. --- configure.in | 5 +++++ include/default_pointer.h | 2 +- src/client.c | 6 +++++- src/default_pointer.c | 2 +- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/configure.in b/configure.in index 881a0f9..97b0b28 100644 --- a/configure.in +++ b/configure.in @@ -55,6 +55,11 @@ AC_CHECK_LIB([freerdp-codec], [freerdp_image_convert],, AC_MSG_ERROR("libfreerdp # Checks for header files. AC_CHECK_HEADERS([guacamole/client.h guacamole/guacio.h guacamole/protocol.h freerdp/locale/keyboard.h freerdp/kbd/layouts.h]) +# Check for FreeRDP version-specific features +AC_CHECK_MEMBERS([rdpPointer.SetDefault, rdpPointer.SetNull], + [], [], + [[#include ]]) + # Checks for library functions. AC_FUNC_MALLOC diff --git a/include/default_pointer.h b/include/default_pointer.h index a45f3de..b13ff48 100644 --- a/include/default_pointer.h +++ b/include/default_pointer.h @@ -71,6 +71,6 @@ extern unsigned char guac_rdp_default_pointer[]; * * @param client The guac_client to send the cursor to. */ -void guac_rdp_pointer_set_default(guac_client* client); +void guac_rdp_set_default_pointer(guac_client* client); #endif diff --git a/src/client.c b/src/client.c index e873d9d..aa0dfe7 100644 --- a/src/client.c +++ b/src/client.c @@ -152,8 +152,12 @@ boolean rdp_freerdp_pre_connect(freerdp* instance) { pointer->New = guac_rdp_pointer_new; pointer->Free = guac_rdp_pointer_free; pointer->Set = guac_rdp_pointer_set; +#ifdef HAVE_RDPPOINTER_SETNULL pointer->SetNull = guac_rdp_pointer_set_null; +#endif +#ifdef HAVE_RDPPOINTER_SETDEFAULT pointer->SetDefault = guac_rdp_pointer_set_default; +#endif graphics_register_pointer(context->graphics, pointer); xfree(pointer); @@ -433,7 +437,7 @@ int guac_client_init(guac_client* client, int argc, char** argv) { CAIRO_FORMAT_ARGB32, settings->width, settings->height); /* Set default pointer */ - guac_rdp_pointer_set_default(client); + guac_rdp_set_default_pointer(client); /* Success */ return 0; diff --git a/src/default_pointer.c b/src/default_pointer.c index b41ef2a..e38d767 100644 --- a/src/default_pointer.c +++ b/src/default_pointer.c @@ -76,7 +76,7 @@ unsigned char guac_rdp_default_pointer[] = { }; -void guac_rdp_pointer_set_default(guac_client* client) { +void guac_rdp_set_default_pointer(guac_client* client) { guac_socket* socket = client->socket; -- 1.7.10.4