Implemented set surface, removed unneeded debug logs.
This commit is contained in:
parent
6f059097cd
commit
c9fd83c77b
@ -45,7 +45,9 @@
|
|||||||
#include <guacamole/protocol.h>
|
#include <guacamole/protocol.h>
|
||||||
|
|
||||||
#include <freerdp/freerdp.h>
|
#include <freerdp/freerdp.h>
|
||||||
|
#include <freerdp/utils/memory.h>
|
||||||
#include <freerdp/codec/color.h>
|
#include <freerdp/codec/color.h>
|
||||||
|
#include <freerdp/codec/bitmap.h>
|
||||||
|
|
||||||
#include "client.h"
|
#include "client.h"
|
||||||
#include "rdp_bitmap.h"
|
#include "rdp_bitmap.h"
|
||||||
@ -85,9 +87,6 @@ void guac_rdp_bitmap_new(rdpContext* context, rdpBitmap* bitmap) {
|
|||||||
|
|
||||||
/* Store buffer reference in bitmap */
|
/* Store buffer reference in bitmap */
|
||||||
((guac_rdp_bitmap*) bitmap)->layer = buffer;
|
((guac_rdp_bitmap*) bitmap)->layer = buffer;
|
||||||
|
|
||||||
guac_client_log_info(client, "guac_rdp_bitmap_new()");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void guac_rdp_bitmap_paint(rdpContext* context, rdpBitmap* bitmap) {
|
void guac_rdp_bitmap_paint(rdpContext* context, rdpBitmap* bitmap) {
|
||||||
@ -101,26 +100,37 @@ void guac_rdp_bitmap_paint(rdpContext* context, rdpBitmap* bitmap) {
|
|||||||
0, 0, bitmap->width, bitmap->height,
|
0, 0, bitmap->width, bitmap->height,
|
||||||
GUAC_COMP_OVER,
|
GUAC_COMP_OVER,
|
||||||
GUAC_DEFAULT_LAYER, bitmap->left, bitmap->top);
|
GUAC_DEFAULT_LAYER, bitmap->left, bitmap->top);
|
||||||
|
|
||||||
guac_client_log_info(client, "guac_rdp_bitmap_paint()");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void guac_rdp_bitmap_free(rdpContext* context, rdpBitmap* bitmap) {
|
void guac_rdp_bitmap_free(rdpContext* context, rdpBitmap* bitmap) {
|
||||||
guac_client* client = ((rdp_freerdp_context*) context)->client;
|
guac_client* client = ((rdp_freerdp_context*) context)->client;
|
||||||
guac_client_free_buffer(client, ((guac_rdp_bitmap*) bitmap)->layer);
|
guac_client_free_buffer(client, ((guac_rdp_bitmap*) bitmap)->layer);
|
||||||
|
|
||||||
guac_client_log_info(client, "guac_rdp_bitmap_free()");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void guac_rdp_bitmap_setsurface(rdpContext* context, rdpBitmap* bitmap, boolean primary) {
|
void guac_rdp_bitmap_setsurface(rdpContext* context, rdpBitmap* bitmap, boolean primary) {
|
||||||
guac_client* client = ((rdp_freerdp_context*) context)->client;
|
guac_client* client = ((rdp_freerdp_context*) context)->client;
|
||||||
guac_client_log_info(client, "guac_rdp_bitmap_setsurface()");
|
|
||||||
|
((rdp_guac_client_data*) client->data)->current_surface
|
||||||
|
= ((guac_rdp_bitmap*) bitmap)->layer;
|
||||||
}
|
}
|
||||||
|
|
||||||
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_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()");
|
int size = width * height * (bpp + 7) / 8;
|
||||||
|
|
||||||
|
if (bitmap->data == NULL)
|
||||||
|
bitmap->data = (uint8*) xmalloc(size);
|
||||||
|
else
|
||||||
|
bitmap->data = (uint8*) xrealloc(bitmap->data, size);
|
||||||
|
|
||||||
|
if (compressed)
|
||||||
|
bitmap_decompress(data, bitmap->data, width, height, length, bpp, bpp);
|
||||||
|
else
|
||||||
|
freerdp_image_flip(data, bitmap->data, width, height, bpp);
|
||||||
|
|
||||||
|
bitmap->compressed = false;
|
||||||
|
bitmap->length = size;
|
||||||
|
bitmap->bpp = bpp;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,8 +67,10 @@ void guac_rdp_gdi_opaquerect(rdpContext* context, OPAQUE_RECT_ORDER* opaque_rect
|
|||||||
uint32 color = freerdp_color_convert(opaque_rect->color,
|
uint32 color = freerdp_color_convert(opaque_rect->color,
|
||||||
context->instance->settings->color_depth, 32, &guac_rdp_clrconv);
|
context->instance->settings->color_depth, 32, &guac_rdp_clrconv);
|
||||||
|
|
||||||
|
const guac_layer* current_layer = ((rdp_guac_client_data*) client->data)->current_surface;
|
||||||
|
|
||||||
guac_protocol_send_rect(client->socket,
|
guac_protocol_send_rect(client->socket,
|
||||||
GUAC_COMP_OVER, GUAC_DEFAULT_LAYER,
|
GUAC_COMP_OVER, current_layer,
|
||||||
opaque_rect->nLeftRect, opaque_rect->nTopRect,
|
opaque_rect->nLeftRect, opaque_rect->nTopRect,
|
||||||
opaque_rect->nWidth, opaque_rect->nHeight,
|
opaque_rect->nWidth, opaque_rect->nHeight,
|
||||||
(color >> 16) & 0xFF,
|
(color >> 16) & 0xFF,
|
||||||
|
Loading…
Reference in New Issue
Block a user