20#ifndef FREERDP_LIB_CORE_UPDATE_H
21#define FREERDP_LIB_CORE_UPDATE_H
26#include <freerdp/types.h>
27#include <freerdp/update.h>
28#include <freerdp/freerdp.h>
29#include <freerdp/api.h>
31#include <winpr/stream.h>
33#include "../cache/bitmap.h"
34#include "../cache/palette.h"
35#include "../cache/pointer.h"
37#define UPDATE_TYPE_ORDERS 0x0000
38#define UPDATE_TYPE_BITMAP 0x0001
39#define UPDATE_TYPE_PALETTE 0x0002
40#define UPDATE_TYPE_SYNCHRONIZE 0x0003
42#define BITMAP_COMPRESSION 0x0001
43#define NO_BITMAP_COMPRESSION_HDR 0x0400
57 rdpUpdateProxy* proxy;
64 rdpBounds currentBounds;
65 rdpBounds previousBounds;
67 BOOL withinBeginEndPaint;
72 rdpAltSecUpdate common;
90 rdpPrimaryUpdate common;
119 rdpSecondaryUpdate common;
131 WINPR_ASSERT(update);
140 rdpAltSecUpdate* pub;
144 WINPR_ASSERT(update);
153 rdpPrimaryUpdate* pub;
157 WINPR_ASSERT(update);
166 rdpSecondaryUpdate* pub;
170 WINPR_ASSERT(update);
175FREERDP_LOCAL
void update_free(rdpUpdate* update);
177WINPR_ATTR_MALLOC(update_free, 1)
178FREERDP_LOCAL rdpUpdate* update_new(rdpRdp* rdp);
180FREERDP_LOCAL
void update_reset_state(rdpUpdate* update);
181FREERDP_LOCAL BOOL update_post_connect(rdpUpdate* update);
182FREERDP_LOCAL
void update_post_disconnect(rdpUpdate* update);
184FREERDP_LOCAL BOOL update_recv_play_sound(rdpUpdate* update,
wStream* s);
185FREERDP_LOCAL BOOL update_recv_pointer(rdpUpdate* update,
wStream* s);
186FREERDP_LOCAL BOOL update_recv(rdpUpdate* update,
wStream* s);
188WINPR_ATTR_MALLOC(free_bitmap_update, 2)
191WINPR_ATTR_MALLOC(free_palette_update, 2)
194WINPR_ATTR_MALLOC(free_pointer_system_update, 2)
197WINPR_ATTR_MALLOC(free_pointer_position_update, 2)
200WINPR_ATTR_MALLOC(free_pointer_color_update, 2)
204WINPR_ATTR_MALLOC(free_pointer_large_update, 2)
207WINPR_ATTR_MALLOC(free_pointer_new_update, 2)
210WINPR_ATTR_MALLOC(free_pointer_cached_update, 2)
213FREERDP_LOCAL BOOL update_read_refresh_rect(rdpUpdate* update,
wStream* s);
214FREERDP_LOCAL BOOL update_read_suppress_output(rdpUpdate* update,
wStream* s);
215FREERDP_LOCAL
void update_register_server_callbacks(rdpUpdate* update);
216FREERDP_LOCAL
void update_register_client_callbacks(rdpUpdate* update);
217FREERDP_LOCAL
int update_process_messages(rdpUpdate* update);
219FREERDP_LOCAL BOOL update_begin_paint(rdpUpdate* update);
220FREERDP_LOCAL BOOL update_end_paint(rdpUpdate* update);