diff --git a/neutrinordp/xrdp-neutrinordp.c b/neutrinordp/xrdp-neutrinordp.c index 89e8f2ea..543e91d3 100644 --- a/neutrinordp/xrdp-neutrinordp.c +++ b/neutrinordp/xrdp-neutrinordp.c @@ -27,6 +27,12 @@ #include "log.h" #include +#if defined(VERSION_STRUCT_RDP_FREERDP) +#if VERSION_STRUCT_RDP_FREERDP > 1 +#define NEUTRINORDP_HAS_SUPPRESS_OUTPUT +#endif +#endif + #ifdef XRDP_DEBUG #define LOG_LEVEL 99 #else @@ -541,6 +547,24 @@ lxrdp_check_wait_objs(struct mod *mod) return 0; } +/******************************************************************************/ +static int +lxrdp_frame_ack(struct mod* mod, int flags, int frame_id) +{ + return 0; +} + +/******************************************************************************/ +static int +lxrdp_suppress_output(struct mod* mod, int suppress, + int left, int top, int right, int bottom) +{ +#if defined(NEUTRINORDP_HAS_SUPPRESS_OUTPUT) + mod->inst->SendSuppressOutput(mod->inst, !suppress, left, top, right, bottom); +#endif + return 0; +} + /******************************************************************************/ static void lfreerdp_begin_paint(rdpContext *context) @@ -2009,6 +2033,8 @@ mod_init(void) mod->mod_session_change = lxrdp_session_change; mod->mod_get_wait_objs = lxrdp_get_wait_objs; mod->mod_check_wait_objs = lxrdp_check_wait_objs; + mod->mod_frame_ack = lxrdp_frame_ack; + mod->mod_suppress_output = lxrdp_suppress_output; mod->inst = freerdp_new(); mod->inst->PreConnect = lfreerdp_pre_connect; diff --git a/neutrinordp/xrdp-neutrinordp.h b/neutrinordp/xrdp-neutrinordp.h index f5986b8a..36b8b208 100644 --- a/neutrinordp/xrdp-neutrinordp.h +++ b/neutrinordp/xrdp-neutrinordp.h @@ -76,8 +76,11 @@ struct mod int (*mod_get_wait_objs)(struct mod *v, tbus *read_objs, int *rcount, tbus *write_objs, int *wcount, int *timeout); int (*mod_check_wait_objs)(struct mod *v); - tintptr mod_dumby[100 - 9]; /* align, 100 minus the number of mod - functions above */ + int (*mod_frame_ack)(struct mod* mod, int flags, int frame_id); + int (*mod_suppress_output)(struct mod* mod, int suppress, + int left, int top, int right, int bottom); + tintptr mod_dumby[100 - 11]; /* align, 100 minus the number of mod + functions above */ /* server functions */ int (*server_begin_update)(struct mod *v); int (*server_end_update)(struct mod *v);