Add cache and bitmap decompress stub.
authorMichael Jumper <zhangmaike@users.sourceforge.net>
Sun, 8 Jan 2012 23:18:31 +0000 (15:18 -0800)
committerMichael Jumper <zhangmaike@users.sourceforge.net>
Sun, 8 Jan 2012 23:18:31 +0000 (15:18 -0800)
configure.in
include/rdp_bitmap.h
src/client.c
src/rdp_bitmap.c

index a86ee99..fa11749 100644 (file)
@@ -46,6 +46,7 @@ AC_PROG_LIBTOOL
 # 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-cache], [glyph_cache_register_callbacks],, AC_MSG_ERROR("libfreerdp-cache is required (part of FreeRDP)"))
 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)"))
index 0968cb3..72fa11f 100644 (file)
@@ -57,6 +57,7 @@ typedef struct guac_rdp_bitmap {
 } guac_rdp_bitmap;
 
 void guac_rdp_bitmap_new(rdpContext* context, rdpBitmap* bitmap);
+void guac_rdp_bitmap_decompress(rdpContext* context, rdpBitmap* bitmap, uint8* data, int width, int height, int bpp, int length, boolean compressed);
 void guac_rdp_bitmap_paint(rdpContext* context, rdpBitmap* bitmap);
 void guac_rdp_bitmap_free(rdpContext* context, rdpBitmap* bitmap);
 void guac_rdp_bitmap_setsurface(rdpContext* context, rdpBitmap* bitmap, boolean primary);
index b8723ee..b357403 100644 (file)
 #include <freerdp/freerdp.h>
 #include <freerdp/utils/memory.h>
 #include <freerdp/cache/bitmap.h>
+#include <freerdp/cache/brush.h>
+#include <freerdp/cache/glyph.h>
+#include <freerdp/cache/palette.h>
+#include <freerdp/cache/pointer.h>
+#include <freerdp/cache/offscreen.h>
 #include <freerdp/channels/channels.h>
 #include <freerdp/input.h>
 #include <freerdp/constants.h>
@@ -84,13 +89,16 @@ boolean rdp_freerdp_pre_connect(freerdp* instance) {
     rdpPointer* pointer;
     rdpPrimaryUpdate* primary;
 
+    /* Init FreeRDP cache */
+    instance->context->cache = cache_new(instance->settings);
+
     /* 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->Decompress = guac_rdp_bitmap_decompress;
     bitmap->SetSurface = guac_rdp_bitmap_setsurface;
     graphics_register_bitmap(context->graphics, bitmap);
 
@@ -119,6 +127,13 @@ boolean rdp_freerdp_pre_connect(freerdp* instance) {
     primary->MemBlt = guac_rdp_gdi_memblt;
     primary->OpaqueRect = guac_rdp_gdi_opaquerect;
 
+    /*pointer_cache_register_callbacks(instance->update);*/
+    glyph_cache_register_callbacks(instance->update);
+    /*brush_cache_register_callbacks(instance->update);*/
+    bitmap_cache_register_callbacks(instance->update);
+    /*offscreen_cache_register_callbacks(instance->update);*/
+    /*palette_cache_register_callbacks(instance->update);*/
+
     /* Init channels (pre-connect) */
     if (freerdp_channels_pre_connect(channels, instance)) {
         guac_protocol_send_error(client->socket, "Error initializing RDP client channel manager");
index fbf51b4..af915ce 100644 (file)
@@ -119,3 +119,8 @@ void guac_rdp_bitmap_setsurface(rdpContext* context, rdpBitmap* bitmap, boolean
     guac_client_log_info(client, "guac_rdp_bitmap_setsurface()");
 }
 
+void guac_rdp_bitmap_decompress(rdpContext* context, rdpBitmap* bitmap, uint8* data, int width, int height, int bpp, int length, boolean compressed) {
+    guac_client* client = ((rdp_freerdp_context*) context)->client;
+    guac_client_log_info(client, "guac_rdp_bitmap_decompress()");
+}
+