# Checks for libraries.
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-channels], [freerdp_channels_new],, AC_MSG_ERROR("libfreerdp is required"))
+AC_CHECK_LIB([freerdp-core], [freerdp_new],, AC_MSG_ERROR("libfreerdp-core is required (part of FreeRDP)"))
+AC_CHECK_LIB([freerdp-channels], [freerdp_channels_new],, AC_MSG_ERROR("libfreerdp-channels is required (part of FreeRDP)"))
+AC_CHECK_LIB([freerdp-utils], [xzalloc],, AC_MSG_ERROR("libfreerdp-utils is required (part of FreeRDP)"))
# Checks for header files.
AC_CHECK_HEADERS([guacamole/client.h guacamole/guacio.h guacamole/protocol.h])
#include <errno.h>
#include <freerdp/freerdp.h>
+#include <freerdp/utils/memory.h>
+#include <freerdp/cache/bitmap.h>
#include <freerdp/channels/channels.h>
#include <freerdp/input.h>
#include "client.h"
#include "guac_handlers.h"
#include "rdp_keymap.h"
+#include "rdp_bitmap.h"
/* Client plugin arguments */
const char* GUAC_CLIENT_ARGS[] = {
freerdp* rdp_inst;
rdpChannels* channels;
rdpSettings* settings;
+ rdpBitmap* bitmap;
char* hostname;
int port = RDP_DEFAULT_PORT;
((rdp_freerdp_context*) rdp_inst->context)->client = client;
client->data = guac_client_data;
- /* FIXME: Set RDP handlers */
+ /* Set up bitmap handling */
+ bitmap = xnew(rdpBitmap);
+ bitmap->size = sizeof(guac_rdp_bitmap);
+ bitmap->New = guac_rdp_bitmap_new;
+ /* bitmap->Free = guac_rdp_bitmap_free; */
+ /* bitmap->Paint = guac_rdp_bitmap_paint; */
+ /* bitmap->Decompress = guac_rdp_bitmap_decompress; */
+ /* bitmap->SetSurface = guac_rdp_bitmap_setsurface; */
+ graphics_register_bitmap(rdp_inst->context->graphics, bitmap);
/* Init channels (pre-connect) */
if (freerdp_channels_pre_connect(channels, rdp_inst)) {