From a3604301894c4dd5ec36ed1401b6b8819c6795b7 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Sat, 26 Nov 2011 15:47:11 -0800 Subject: [PATCH] Bumped version number, migrated to new libguac API. --- protocols/rdp/configure.in | 4 +- protocols/rdp/src/rdp_client.c | 37 ++++---- protocols/rdp/src/rdp_handlers.c | 146 ++++++++++++++++++------------- 3 files changed, 105 insertions(+), 82 deletions(-) diff --git a/protocols/rdp/configure.in b/protocols/rdp/configure.in index 13b9e1f0..076567fd 100644 --- a/protocols/rdp/configure.in +++ b/protocols/rdp/configure.in @@ -35,7 +35,7 @@ # ***** END LICENSE BLOCK ***** AC_INIT(src/rdp_client.c) -AM_INIT_AUTOMAKE([libguac-client-rdp], 0.4.0) +AM_INIT_AUTOMAKE([libguac-client-rdp], 0.5.0) AC_CONFIG_MACRO_DIR([m4]) # Checks for programs. @@ -44,7 +44,7 @@ AC_PROG_CC_C99 AC_PROG_LIBTOOL # Checks for libraries. -AC_CHECK_LIB([guac], [guac_get_client],, AC_MSG_ERROR("libguac is required for communication via the guacamole protocol")) +AC_CHECK_LIB([guac], [guac_client_plugin_open],, AC_MSG_ERROR("libguac must be installed first")) AC_CHECK_LIB([cairo], [cairo_create],, AC_MSG_ERROR("cairo is required for drawing instructions")) AC_CHECK_LIB([freerdp-core], [freerdp_new],, AC_MSG_ERROR("libfreerdp is required")) AC_CHECK_LIB([freerdp-chanman], [freerdp_chanman_new],, AC_MSG_ERROR("libfreerdp is required")) diff --git a/protocols/rdp/src/rdp_client.c b/protocols/rdp/src/rdp_client.c index 9e435189..33d575a4 100644 --- a/protocols/rdp/src/rdp_client.c +++ b/protocols/rdp/src/rdp_client.c @@ -45,8 +45,7 @@ #include #include -#include -#include +#include #include #include @@ -97,13 +96,13 @@ int rdp_guac_client_handle_messages(guac_client* client) { /* get rdp fds */ if (rdp_inst->rdp_get_fds(rdp_inst, read_fds, &read_count, write_fds, &write_count) != 0) { - guac_log_error("Unable to read RDP file descriptors."); + guac_client_log_error(client, "Unable to read RDP file descriptors."); return 1; } /* get channel fds */ if (freerdp_chanman_get_fds(chanman, rdp_inst, read_fds, &read_count, write_fds, &write_count) != 0) { - guac_log_error("Unable to read RDP channel file descriptors."); + guac_client_log_error(client, "Unable to read RDP channel file descriptors."); return 1; } @@ -128,7 +127,7 @@ int rdp_guac_client_handle_messages(guac_client* client) { /* If no file descriptors, error */ if (max_fd == 0) { - guac_log_error("No file descriptors"); + guac_client_log_error(client, "No file descriptors"); return 1; } @@ -140,20 +139,20 @@ int rdp_guac_client_handle_messages(guac_client* client) { (errno == EINPROGRESS) || (errno == EINTR))) /* signal occurred */ { - guac_log_error("Error waiting for file descriptor."); + guac_client_log_error(client, "Error waiting for file descriptor."); return 1; } } /* check the libfreerdp fds */ if (rdp_inst->rdp_check_fds(rdp_inst) != 0) { - guac_log_error("Error handling RDP file descriptors."); + guac_client_log_error(client, "Error handling RDP file descriptors."); return 1; } /* check channel fds */ if (freerdp_chanman_check_fds(chanman, rdp_inst) != 0) { - guac_log_error("Error handling RDP channel file descriptors."); + guac_client_log_error(client, "Error handling RDP channel file descriptors."); return 1; } @@ -174,8 +173,8 @@ int guac_client_init(guac_client* client, int argc, char** argv) { int port = RDP_DEFAULT_PORT; if (argc < 2) { - guac_send_error(client->io, "Wrong argument count received."); - guac_flush(client->io); + guac_protocol_send_error(client->socket, "Wrong argument count received."); + guac_socket_flush(client->socket); return 1; } @@ -228,8 +227,8 @@ int guac_client_init(guac_client* client, int argc, char** argv) { /* Init client */ rdp_inst = freerdp_new(settings); if (rdp_inst == NULL) { - guac_send_error(client->io, "Error initializing RDP client"); - guac_flush(client->io); + guac_protocol_send_error(client->socket, "Error initializing RDP client"); + guac_socket_flush(client->socket); return 1; } guac_client_data->rdp_inst = rdp_inst; @@ -289,22 +288,22 @@ int guac_client_init(guac_client* client, int argc, char** argv) { /* Init chanman (pre-connect) */ if (freerdp_chanman_pre_connect(chanman, rdp_inst)) { - guac_send_error(client->io, "Error initializing RDP client channel manager"); - guac_flush(client->io); + guac_protocol_send_error(client->socket, "Error initializing RDP client channel manager"); + guac_socket_flush(client->socket); return 1; } /* Connect to RDP server */ if (rdp_inst->rdp_connect(rdp_inst)) { - guac_send_error(client->io, "Error connecting to RDP server"); - guac_flush(client->io); + guac_protocol_send_error(client->socket, "Error connecting to RDP server"); + guac_socket_flush(client->socket); return 1; } /* Init chanman (post-connect) */ if (freerdp_chanman_post_connect(chanman, rdp_inst)) { - guac_send_error(client->io, "Error initializing RDP client channel manager"); - guac_flush(client->io); + guac_protocol_send_error(client->socket, "Error initializing RDP client channel manager"); + guac_socket_flush(client->socket); return 1; } @@ -412,7 +411,7 @@ int rdp_guac_client_key_handler(guac_client* client, int keysym, int pressed) { keymap->flags & KBDFLAGS_EXTENDED, keymap->scancode); else - guac_log_info("unmapped keysym: 0x%x", keysym); + guac_client_log_info(client, "unmapped keysym: 0x%x", keysym); } diff --git a/protocols/rdp/src/rdp_handlers.c b/protocols/rdp/src/rdp_handlers.c index 76e31b6a..ee1304e4 100644 --- a/protocols/rdp/src/rdp_handlers.c +++ b/protocols/rdp/src/rdp_handlers.c @@ -40,8 +40,7 @@ #include -#include -#include +#include #include #include @@ -77,19 +76,21 @@ void guac_rdp_convert_color(int depth, int color, guac_rdp_color* comp) { void guac_rdp_ui_error(rdpInst* inst, const char* text) { guac_client* client = (guac_client*) inst->param1; - GUACIO* io = client->io; + guac_socket* socket = client->socket; - guac_send_error(io, text); - guac_flush(io); + guac_protocol_send_error(socket, text); + guac_socket_flush(socket); } void guac_rdp_ui_warning(rdpInst* inst, const char* text) { - guac_log_info("guac_rdp_ui_warning: %s\n", text); + guac_client* client = (guac_client*) inst->param1; + guac_client_log_info(client, "guac_rdp_ui_warning: %s\n", text); } void guac_rdp_ui_unimpl(rdpInst* inst, const char* text) { - guac_log_info("guac_rdp_ui_unimpl: %s\n", text); + guac_client* client = (guac_client*) inst->param1; + guac_client_log_info(client, "guac_rdp_ui_unimpl: %s\n", text); } void guac_rdp_ui_begin_update(rdpInst* inst) { @@ -98,16 +99,18 @@ void guac_rdp_ui_begin_update(rdpInst* inst) { void guac_rdp_ui_end_update(rdpInst* inst) { guac_client* client = (guac_client*) inst->param1; - GUACIO* io = client->io; - guac_flush(io); + guac_socket* socket = client->socket; + guac_socket_flush(socket); } void guac_rdp_ui_desktop_save(rdpInst* inst, int offset, int x, int y, int cx, int cy) { - guac_log_info("guac_rdp_ui_desktop_save: STUB\n"); + guac_client* client = (guac_client*) inst->param1; + guac_client_log_info(client, "guac_rdp_ui_desktop_save: STUB\n"); } void guac_rdp_ui_desktop_restore(rdpInst* inst, int offset, int x, int y, int cx, int cy) { - guac_log_info("guac_rdp_ui_desktop_restore: STUB\n"); + guac_client* client = (guac_client*) inst->param1; + guac_client_log_info(client, "guac_rdp_ui_desktop_restore: STUB\n"); } @@ -115,7 +118,7 @@ RD_HBITMAP guac_rdp_ui_create_bitmap(rdpInst* inst, int width, int height, uint8 /* Allocate buffer */ guac_client* client = (guac_client*) inst->param1; - GUACIO* io = client->io; + guac_socket* socket = client->socket; guac_layer* buffer = guac_client_alloc_buffer(client); int x, y; @@ -174,8 +177,8 @@ RD_HBITMAP guac_rdp_ui_create_bitmap(rdpInst* inst, int width, int height, uint8 } surface = cairo_image_surface_create_for_data(image_buffer, CAIRO_FORMAT_RGB24, width, height, stride); - guac_send_png(io, GUAC_COMP_SRC, buffer, 0, 0, surface); - guac_flush(io); + guac_protocol_send_png(socket, GUAC_COMP_SRC, buffer, 0, 0, surface); + guac_socket_flush(socket); /* Free surface */ cairo_surface_destroy(surface); @@ -190,7 +193,7 @@ void guac_rdp_ui_paint_bitmap(rdpInst* inst, int x, int y, int cx, int cy, int w guac_client* client = (guac_client*) inst->param1; rdp_guac_client_data* guac_client_data = (rdp_guac_client_data*) client->data; const guac_layer* current_surface = guac_client_data->current_surface; - GUACIO* io = client->io; + guac_socket* socket = client->socket; int dx, dy; int stride; @@ -256,8 +259,8 @@ void guac_rdp_ui_paint_bitmap(rdpInst* inst, int x, int y, int cx, int cy, int w } surface = cairo_image_surface_create_for_data(image_buffer, CAIRO_FORMAT_RGB24, cx, cy, stride); - guac_send_png(io, GUAC_COMP_OVER, current_surface, x, y, surface); - guac_flush(io); + guac_protocol_send_png(socket, GUAC_COMP_OVER, current_surface, x, y, surface); + guac_socket_flush(socket); /* Free surface */ cairo_surface_destroy(surface); @@ -274,7 +277,8 @@ void guac_rdp_ui_destroy_bitmap(rdpInst* inst, RD_HBITMAP bmp) { } void guac_rdp_ui_line(rdpInst* inst, uint8 opcode, int startx, int starty, int endx, int endy, RD_PEN* pen) { - guac_log_info("guac_rdp_ui_line: STUB\n"); + guac_client* client = (guac_client*) inst->param1; + guac_client_log_info(client, "guac_rdp_ui_line: STUB\n"); } void guac_rdp_ui_rect(rdpInst* inst, int x, int y, int cx, int cy, uint32 color) { @@ -282,7 +286,7 @@ void guac_rdp_ui_rect(rdpInst* inst, int x, int y, int cx, int cy, uint32 color) guac_client* client = (guac_client*) inst->param1; rdp_guac_client_data* guac_client_data = (rdp_guac_client_data*) client->data; const guac_layer* current_surface = guac_client_data->current_surface; - GUACIO* io = client->io; + guac_socket* socket = client->socket; unsigned char red, green, blue; @@ -306,22 +310,25 @@ void guac_rdp_ui_rect(rdpInst* inst, int x, int y, int cx, int cy, uint32 color) } /* Send rectangle */ - guac_send_rect(io, GUAC_COMP_OVER, current_surface, + guac_protocol_send_rect(socket, GUAC_COMP_OVER, current_surface, x, y, cx, cy, red, green, blue, 0xFF); } void guac_rdp_ui_polygon(rdpInst* inst, uint8 opcode, uint8 fillmode, RD_POINT* point, int npoints, RD_BRUSH* brush, uint32 bgcolor, uint32 fgcolor) { - guac_log_info("guac_rdp_ui_polygon: STUB\n"); + guac_client* client = (guac_client*) inst->param1; + guac_client_log_info(client, "guac_rdp_ui_polygon: STUB\n"); } void guac_rdp_ui_polyline(rdpInst* inst, uint8 opcode, RD_POINT* points, int npoints, RD_PEN* pen) { - guac_log_info("guac_rdp_ui_polyline: STUB\n"); + guac_client* client = (guac_client*) inst->param1; + guac_client_log_info(client, "guac_rdp_ui_polyline: STUB\n"); } void guac_rdp_ui_ellipse(rdpInst* inst, uint8 opcode, uint8 fillmode, int x, int y, int cx, int cy, RD_BRUSH* brush, uint32 bgcolor, uint32 fgcolor) { - guac_log_info("guac_rdp_ui_ellipse: STUB\n"); + guac_client* client = (guac_client*) inst->param1; + guac_client_log_info(client, "guac_rdp_ui_ellipse: STUB\n"); } void guac_rdp_ui_start_draw_glyphs(rdpInst* inst, uint32 bgcolor, uint32 fgcolor) { @@ -346,13 +353,13 @@ void guac_rdp_ui_draw_glyph(rdpInst* inst, int x, int y, int width, int height, guac_client* client = (guac_client*) inst->param1; rdp_guac_client_data* guac_client_data = (rdp_guac_client_data*) client->data; const guac_layer* current_surface = guac_client_data->current_surface; - GUACIO* io = client->io; + guac_socket* socket = client->socket; /* NOTE: Originally: Stencil=SRC, FG=ATOP, BG=RATOP */ /* Temporarily removed BG drawing... */ /* Foreground */ - guac_send_rect(io, GUAC_COMP_ATOP, glyph, + guac_protocol_send_rect(socket, GUAC_COMP_ATOP, glyph, 0, 0, width, height, guac_client_data->foreground.red, guac_client_data->foreground.green, @@ -360,7 +367,7 @@ void guac_rdp_ui_draw_glyph(rdpInst* inst, int x, int y, int width, int height, 255); /* Background */ - /*guac_send_rect(io, GUAC_COMP_OVER, current_surface, + /*guac_protocol_send_rect(socket, GUAC_COMP_OVER, current_surface, x, y, width, height, guac_client_data->background.red, guac_client_data->background.green, @@ -368,7 +375,7 @@ void guac_rdp_ui_draw_glyph(rdpInst* inst, int x, int y, int width, int height, 255);*/ /* Draw */ - guac_send_copy(io, + guac_protocol_send_copy(socket, (guac_layer*) glyph, 0, 0, width, height, GUAC_COMP_OVER, current_surface, x, y); @@ -379,20 +386,24 @@ void guac_rdp_ui_end_draw_glyphs(rdpInst* inst, int x, int y, int cx, int cy) { } uint32 guac_rdp_ui_get_toggle_keys_state(rdpInst* inst) { - guac_log_info("guac_rdp_ui_get_toggle_keys_state: STUB\n"); + guac_client* client = (guac_client*) inst->param1; + guac_client_log_info(client, "guac_rdp_ui_get_toggle_keys_state: STUB\n"); return 0; } void guac_rdp_ui_bell(rdpInst* inst) { - guac_log_info("guac_rdp_ui_bell: STUB\n"); + guac_client* client = (guac_client*) inst->param1; + guac_client_log_info(client, "guac_rdp_ui_bell: STUB\n"); } void guac_rdp_ui_destblt(rdpInst* inst, uint8 opcode, int x, int y, int cx, int cy) { - guac_log_info("guac_rdp_ui_destblt: STUB\n"); + guac_client* client = (guac_client*) inst->param1; + guac_client_log_info(client, "guac_rdp_ui_destblt: STUB\n"); } void guac_rdp_ui_patblt(rdpInst* inst, uint8 opcode, int x, int y, int cx, int cy, RD_BRUSH* brush, uint32 bgcolor, uint32 fgcolor) { - guac_log_info("guac_rdp_ui_patblt: STUB\n"); + guac_client* client = (guac_client*) inst->param1; + guac_client_log_info(client, "guac_rdp_ui_patblt: STUB\n"); } void guac_rdp_ui_screenblt(rdpInst* inst, uint8 opcode, int x, int y, int cx, int cy, int srcx, int srcy) { @@ -400,9 +411,9 @@ void guac_rdp_ui_screenblt(rdpInst* inst, uint8 opcode, int x, int y, int cx, in guac_client* client = (guac_client*) inst->param1; rdp_guac_client_data* guac_client_data = (rdp_guac_client_data*) client->data; const guac_layer* current_surface = guac_client_data->current_surface; - GUACIO* io = client->io; + guac_socket* socket = client->socket; - guac_send_copy(io, + guac_protocol_send_copy(socket, GUAC_DEFAULT_LAYER, srcx, srcy, cx, cy, GUAC_COMP_OVER, current_surface, x, y); @@ -413,27 +424,29 @@ void guac_rdp_ui_memblt(rdpInst* inst, uint8 opcode, int x, int y, int width, in guac_client* client = (guac_client*) inst->param1; rdp_guac_client_data* guac_client_data = (rdp_guac_client_data*) client->data; const guac_layer* current_surface = guac_client_data->current_surface; - GUACIO* io = client->io; + guac_socket* socket = client->socket; if (opcode != 204) - guac_log_info("guac_rdp_ui_memblt: opcode=%i, index=%i\n", opcode, + guac_client_log_info(client, + "guac_rdp_ui_memblt: opcode=%i, index=%i\n", opcode, ((guac_layer*) src)->index); - guac_send_copy(io, + guac_protocol_send_copy(socket, (guac_layer*) src, srcx, srcy, width, height, GUAC_COMP_OVER, current_surface, x, y); } void guac_rdp_ui_triblt(rdpInst* inst, uint8 opcode, int x, int y, int cx, int cy, RD_HBITMAP src, int srcx, int srcy, RD_BRUSH* brush, uint32 bgcolor, uint32 fgcolor) { - guac_log_info("guac_rdp_ui_triblt: STUB\n"); + guac_client* client = (guac_client*) inst->param1; + guac_client_log_info(client, "guac_rdp_ui_triblt: STUB\n"); } RD_HGLYPH guac_rdp_ui_create_glyph(rdpInst* inst, int width, int height, uint8* data) { /* Allocate buffer */ guac_client* client = (guac_client*) inst->param1; - GUACIO* io = client->io; + guac_socket* socket = client->socket; guac_layer* glyph = guac_client_alloc_buffer(client); int x, y, i; @@ -480,8 +493,8 @@ RD_HGLYPH guac_rdp_ui_create_glyph(rdpInst* inst, int width, int height, uint8* } surface = cairo_image_surface_create_for_data(image_buffer, CAIRO_FORMAT_ARGB32, width, height, stride); - guac_send_png(io, GUAC_COMP_SRC, glyph, 0, 0, surface); - guac_flush(io); + guac_protocol_send_png(socket, GUAC_COMP_SRC, glyph, 0, 0, surface); + guac_socket_flush(socket); /* Free surface */ cairo_surface_destroy(surface); @@ -509,9 +522,9 @@ void guac_rdp_ui_set_clip(rdpInst* inst, int x, int y, int cx, int cy) { guac_client* client = (guac_client*) inst->param1; rdp_guac_client_data* guac_client_data = (rdp_guac_client_data*) client->data; const guac_layer* current_surface = guac_client_data->current_surface; - GUACIO* io = client->io; + guac_socket* socket = client->socket; - guac_send_clip(io, current_surface, x, y, cx, cy); + guac_protocol_send_clip(socket, current_surface, x, y, cx, cy); } @@ -520,51 +533,59 @@ void guac_rdp_ui_reset_clip(rdpInst* inst) { guac_client* client = (guac_client*) inst->param1; rdp_guac_client_data* guac_client_data = (rdp_guac_client_data*) client->data; const guac_layer* current_surface = guac_client_data->current_surface; - GUACIO* io = client->io; + guac_socket* socket = client->socket; - guac_send_clip(io, current_surface, 0, 0, inst->settings->width, inst->settings->height); + guac_protocol_send_clip(socket, current_surface, 0, 0, inst->settings->width, inst->settings->height); } void guac_rdp_ui_resize_window(rdpInst* inst) { - guac_log_info("guac_rdp_ui_resize_window: %ix%i\n", inst->settings->width, inst->settings->height); + guac_client* client = (guac_client*) inst->param1; + guac_client_log_info(client, "guac_rdp_ui_resize_window: %ix%i\n", inst->settings->width, inst->settings->height); } void guac_rdp_ui_set_cursor(rdpInst* inst, RD_HCURSOR cursor) { - guac_log_info("guac_rdp_ui_set_cursor: STUB\n"); + guac_client* client = (guac_client*) inst->param1; + guac_client_log_info(client, "guac_rdp_ui_set_cursor: STUB\n"); } void guac_rdp_ui_destroy_cursor(rdpInst* inst, RD_HCURSOR cursor) { - guac_log_info("guac_rdp_ui_destroy_cursor: STUB\n"); + guac_client* client = (guac_client*) inst->param1; + guac_client_log_info(client, "guac_rdp_ui_destroy_cursor: STUB\n"); } RD_HCURSOR guac_rdp_ui_create_cursor(rdpInst* inst, unsigned int x, unsigned int y, int width, int height, uint8* andmask, uint8* xormask, int bpp) { guac_client* client = (guac_client*) inst->param1; - guac_log_info("guac_rdp_ui_create_cursor: STUB\n"); + guac_client_log_info(client, "guac_rdp_ui_create_cursor: STUB\n"); return guac_client_alloc_buffer(client); } void guac_rdp_ui_set_null_cursor(rdpInst* inst) { - guac_log_info("guac_rdp_ui_set_null_cursor: STUB\n"); + guac_client* client = (guac_client*) inst->param1; + guac_client_log_info(client, "guac_rdp_ui_set_null_cursor: STUB\n"); } void guac_rdp_ui_set_default_cursor(rdpInst* inst) { - guac_log_info("guac_rdp_ui_set_default_cursor: STUB\n"); + guac_client* client = (guac_client*) inst->param1; + guac_client_log_info(client, "guac_rdp_ui_set_default_cursor: STUB\n"); } RD_HPALETTE guac_rdp_ui_create_colormap(rdpInst* inst, RD_PALETTE* colors) { - guac_log_info("guac_rdp_ui_create_colormap: STUB\n"); + guac_client* client = (guac_client*) inst->param1; + guac_client_log_info(client, "guac_rdp_ui_create_colormap: STUB\n"); return NULL; } void guac_rdp_ui_move_pointer(rdpInst* inst, int x, int y) { - guac_log_info("guac_rdp_ui_move_pointer: STUB\n"); + guac_client* client = (guac_client*) inst->param1; + guac_client_log_info(client, "guac_rdp_ui_move_pointer: STUB\n"); } void guac_rdp_ui_set_colormap(rdpInst* inst, RD_HPALETTE map) { - guac_log_info("guac_rdp_ui_set_colormap: STUB\n"); + guac_client* client = (guac_client*) inst->param1; + guac_client_log_info(client, "guac_rdp_ui_set_colormap: STUB\n"); } RD_HBITMAP guac_rdp_ui_create_surface(rdpInst* inst, int width, int height, RD_HBITMAP old) { @@ -585,16 +606,16 @@ void guac_rdp_ui_set_surface(rdpInst* inst, RD_HBITMAP surface) { guac_client* client = (guac_client*) inst->param1; rdp_guac_client_data* guac_client_data = (rdp_guac_client_data*) client->data; - GUACIO* io = client->io; + guac_socket* socket = client->socket; - guac_log_info("guac_rdp_ui_set_surface: %p (index=%i)\n", surface, surface != NULL ? ((guac_layer*) surface)->index : 0); + guac_client_log_info(client, "guac_rdp_ui_set_surface: %p (index=%i)\n", surface, surface != NULL ? ((guac_layer*) surface)->index : 0); /* Init desktop */ if (surface == NULL) { - guac_send_name(io, inst->settings->server); - guac_send_size(io, inst->settings->width, inst->settings->height); - guac_flush(io); + guac_protocol_send_name(socket, inst->settings->server); + guac_protocol_send_size(socket, inst->settings->width, inst->settings->height); + guac_socket_flush(socket); guac_client_data->current_surface = GUAC_DEFAULT_LAYER; } @@ -613,15 +634,18 @@ void guac_rdp_ui_destroy_surface(rdpInst* inst, RD_HBITMAP surface) { } void guac_rdp_ui_channel_data(rdpInst* inst, int chan_id, char* data, int data_size, int flags, int total_size) { - guac_log_info("guac_rdp_ui_channel_data: STUB\n"); + guac_client* client = (guac_client*) inst->param1; + guac_client_log_info(client, "guac_rdp_ui_channel_data: STUB\n"); } RD_HPALETTE guac_rdp_ui_create_palette(rdpInst* inst, RD_PALETTE* colours) { - guac_log_info("guac_rdp_ui_create_palette: STUB\n"); + guac_client* client = (guac_client*) inst->param1; + guac_client_log_info(client, "guac_rdp_ui_create_palette: STUB\n"); return NULL; } void guac_rdp_ui_set_palette(rdpInst* inst, RD_HPALETTE map) { - guac_log_info("guac_rdp_ui_set_palette: STUB\n"); + guac_client* client = (guac_client*) inst->param1; + guac_client_log_info(client, "guac_rdp_ui_set_palette: STUB\n"); }