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)
179FREERDP_LOCAL rdpUpdate* update_new(rdpRdp* rdp);
181FREERDP_LOCAL
void update_reset_state(rdpUpdate* update);
182FREERDP_LOCAL BOOL update_post_connect(rdpUpdate* update);
183FREERDP_LOCAL
void update_post_disconnect(rdpUpdate* update);
185FREERDP_LOCAL BOOL update_recv_play_sound(rdpUpdate* update,
wStream* s);
186FREERDP_LOCAL BOOL update_recv_pointer(rdpUpdate* update,
wStream* s);
187FREERDP_LOCAL BOOL update_recv(rdpUpdate* update,
wStream* s);
189WINPR_ATTR_MALLOC(free_bitmap_update, 2)
193WINPR_ATTR_MALLOC(free_palette_update, 2)
197WINPR_ATTR_MALLOC(free_pointer_system_update, 2)
201WINPR_ATTR_MALLOC(free_pointer_position_update, 2)
205WINPR_ATTR_MALLOC(free_pointer_color_update, 2)
210WINPR_ATTR_MALLOC(free_pointer_large_update, 2)
214WINPR_ATTR_MALLOC(free_pointer_new_update, 2)
218WINPR_ATTR_MALLOC(free_pointer_cached_update, 2)
222FREERDP_LOCAL BOOL update_read_refresh_rect(rdpUpdate* update,
wStream* s);
223FREERDP_LOCAL BOOL update_read_suppress_output(rdpUpdate* update,
wStream* s);
224FREERDP_LOCAL
void update_register_server_callbacks(rdpUpdate* update);
225FREERDP_LOCAL
void update_register_client_callbacks(rdpUpdate* update);
226FREERDP_LOCAL
int update_process_messages(rdpUpdate* update);
228FREERDP_LOCAL BOOL update_begin_paint(rdpUpdate* update);
229FREERDP_LOCAL BOOL update_end_paint(rdpUpdate* update);