From 264aad7603bd1bf6d8ebe8b7c452a9a0bc8e2e4a Mon Sep 17 00:00:00 2001 From: speidy Date: Sun, 15 Jan 2017 08:24:59 +0200 Subject: [PATCH] neutrinordp: add session_info --- neutrinordp/xrdp-neutrinordp.c | 27 +++++++++++++++++++++++++++ neutrinordp/xrdp-neutrinordp.h | 27 ++++++++++++++++++++++++--- 2 files changed, 51 insertions(+), 3 deletions(-) diff --git a/neutrinordp/xrdp-neutrinordp.c b/neutrinordp/xrdp-neutrinordp.c index 37b4eefb..b93b5fc0 100644 --- a/neutrinordp/xrdp-neutrinordp.c +++ b/neutrinordp/xrdp-neutrinordp.c @@ -1954,6 +1954,28 @@ lfreerdp_verify_certificate(freerdp *instance, char *subject, char *issuer, return 1; } +/******************************************************************************/ +static int DEFAULT_CC +lfreerdp_session_info(freerdp* instance, uint8* data, int data_bytes) +{ + struct mod *mod; + int error; + + LLOGLN(10, ("lfreerdp_session_info:")); + error = 0; + mod = ((struct mod_context *)(instance->context))->modi; + if (mod != 0) + { + LLOGLN(10, ("lfreerdp_session_info: mod->server_session_info %p", + mod->server_session_info)); + if (mod->server_session_info != 0) + { + error = mod->server_session_info(mod, (char *)data, data_bytes); + } + } + return error; +} + /******************************************************************************/ tintptr EXPORT_CC mod_init(void) @@ -1988,6 +2010,11 @@ mod_init(void) mod->inst->ReceiveChannelData = lfreerdp_receive_channel_data; mod->inst->Authenticate = lfreerdp_authenticate; mod->inst->VerifyCertificate = lfreerdp_verify_certificate; +#if defined(VERSION_STRUCT_RDP_FREERDP) +#if VERSION_STRUCT_RDP_FREERDP > 0 + mod->inst->SessionInfo = lfreerdp_session_info; +#endif +#endif freerdp_context_new(mod->inst); diff --git a/neutrinordp/xrdp-neutrinordp.h b/neutrinordp/xrdp-neutrinordp.h index fd4560d0..f5986b8a 100644 --- a/neutrinordp/xrdp-neutrinordp.h +++ b/neutrinordp/xrdp-neutrinordp.h @@ -151,9 +151,30 @@ struct mod int flags); int (*server_set_pointer_ex)(struct mod *mod, int x, int y, char *data, char *mask, int bpp); - - tintptr server_dumby[100 - 37]; /* align, 100 minus the number of server - functions above */ + int (*server_add_char_alpha)(struct mod* mod, int font, int character, + int offset, int baseline, + int width, int height, char* data); + int (*server_create_os_surface_bpp)(struct mod* v, int rdpindex, + int width, int height, int bpp); + int (*server_paint_rect_bpp)(struct mod* v, int x, int y, int cx, int cy, + char* data, int width, int height, + int srcx, int srcy, int bpp); + int (*server_composite)(struct mod* v, int srcidx, int srcformat, + int srcwidth, int srcrepeat, int* srctransform, + int mskflags, int mskidx, int mskformat, + int mskwidth, int mskrepeat, int op, + int srcx, int srcy, int mskx, int msky, + int dstx, int dsty, int width, int height, + int dstformat); + int (*server_paint_rects)(struct mod* v, + int num_drects, short *drects, + int num_crects, short *crects, + char *data, int width, int height, + int flags, int frame_id); + int (*server_session_info)(struct mod* v, const char *data, + int data_bytes); + tintptr server_dumby[100 - 44]; /* align, 100 minus the number of server + functions above */ /* common */ tintptr handle; /* pointer to self as long */ tintptr wm;