diff --git a/vnc/vnc.h b/vnc/vnc.h index 53c9beff..92ba5f70 100644 --- a/vnc/vnc.h +++ b/vnc/vnc.h @@ -50,6 +50,8 @@ struct vnc int (*server_palette)(struct vnc* v, int* palette); int (*server_msg)(struct vnc* v, char* msg); int (*server_is_term)(struct vnc* v); + int (*server_set_clip)(struct vnc* v, int x, int y, int cx, int cy); + int (*server_reset_clip)(struct vnc* v); /* common */ long handle; /* pointer to self as long */ long wm; diff --git a/xrdp/xrdp.h b/xrdp/xrdp.h index edeaeca4..3321909f 100644 --- a/xrdp/xrdp.h +++ b/xrdp/xrdp.h @@ -288,3 +288,7 @@ int DEFAULT_CC server_msg(struct xrdp_mod* mod, char* msg); int DEFAULT_CC server_is_term(struct xrdp_mod* mod); +int DEFAULT_CC +server_set_clip(struct xrdp_mod* mod, int x, int y, int cx, int cy); +int DEFAULT_CC +server_reset_clip(struct xrdp_mod* mod); diff --git a/xrdp/xrdp_interface.c b/xrdp/xrdp_interface.c index 09588e2a..874845b3 100644 --- a/xrdp/xrdp_interface.c +++ b/xrdp/xrdp_interface.c @@ -24,7 +24,7 @@ /*****************************************************************************/ /* this is the log windows nofity function */ -int +int DEFAULT_CC xrdp_wm_log_wnd_notify(struct xrdp_bitmap* wnd, struct xrdp_bitmap* sender, int msg, long param1, long param2) @@ -79,7 +79,7 @@ xrdp_wm_log_wnd_notify(struct xrdp_bitmap* wnd, } /*****************************************************************************/ -int +int DEFAULT_CC server_begin_update(struct xrdp_mod* mod) { struct xrdp_wm* wm; @@ -93,7 +93,7 @@ server_begin_update(struct xrdp_mod* mod) } /*****************************************************************************/ -int +int DEFAULT_CC server_end_update(struct xrdp_mod* mod) { struct xrdp_painter* p; @@ -106,7 +106,7 @@ server_end_update(struct xrdp_mod* mod) } /*****************************************************************************/ -int +int DEFAULT_CC server_fill_rect(struct xrdp_mod* mod, int x, int y, int cx, int cy, int color) { @@ -121,7 +121,7 @@ server_fill_rect(struct xrdp_mod* mod, int x, int y, int cx, int cy, } /*****************************************************************************/ -int +int DEFAULT_CC server_screen_blt(struct xrdp_mod* mod, int x, int y, int cx, int cy, int srcx, int srcy) { @@ -136,7 +136,7 @@ server_screen_blt(struct xrdp_mod* mod, int x, int y, int cx, int cy, } /*****************************************************************************/ -int +int DEFAULT_CC server_paint_rect(struct xrdp_mod* mod, int x, int y, int cx, int cy, char* data) { @@ -153,7 +153,7 @@ server_paint_rect(struct xrdp_mod* mod, int x, int y, int cx, int cy, } /*****************************************************************************/ -int +int DEFAULT_CC server_set_pointer(struct xrdp_mod* mod, int x, int y, char* data, char* mask) { @@ -165,7 +165,7 @@ server_set_pointer(struct xrdp_mod* mod, int x, int y, } /*****************************************************************************/ -int +int DEFAULT_CC server_palette(struct xrdp_mod* mod, int* palette) { struct xrdp_wm* wm; @@ -180,7 +180,7 @@ server_palette(struct xrdp_mod* mod, int* palette) } /*****************************************************************************/ -int +int DEFAULT_CC server_msg(struct xrdp_mod* mod, char* msg) { struct xrdp_wm* wm; @@ -219,8 +219,28 @@ server_msg(struct xrdp_mod* mod, char* msg) } /*****************************************************************************/ -int +int DEFAULT_CC server_is_term(struct xrdp_mod* mod) { return g_is_term(); } + +/*****************************************************************************/ +int DEFAULT_CC +server_set_clip(struct xrdp_mod* mod, int x, int y, int cx, int cy) +{ + struct xrdp_painter* p; + + p = (struct xrdp_painter*)mod->painter; + return xrdp_painter_set_clip(p, x, y, cx, cy); +} + +/*****************************************************************************/ +int DEFAULT_CC +server_reset_clip(struct xrdp_mod* mod) +{ + struct xrdp_painter* p; + + p = (struct xrdp_painter*)mod->painter; + return xrdp_painter_clr_clip(p); +} diff --git a/xrdp/xrdp_listen.c b/xrdp/xrdp_listen.c index e71b8180..1e399368 100644 --- a/xrdp/xrdp_listen.c +++ b/xrdp/xrdp_listen.c @@ -148,6 +148,10 @@ xrdp_listen_main_loop(struct xrdp_listen* self) g_tcp_set_non_blocking(self->sck); error = g_tcp_bind(self->sck, "3389"); if (error != 0) + { + error = g_tcp_bind(self->sck, "3390"); + } + if (error != 0) { g_printf("bind error in xrdp_listen_main_loop\n\r"); g_tcp_close(self->sck); diff --git a/xrdp/xrdp_login_wnd.c b/xrdp/xrdp_login_wnd.c index 83abfc4f..163705f9 100644 --- a/xrdp/xrdp_login_wnd.c +++ b/xrdp/xrdp_login_wnd.c @@ -124,6 +124,8 @@ xrdp_wm_setup_mod(struct xrdp_wm* self, self->mod->server_palette = server_palette; self->mod->server_msg = server_msg; self->mod->server_is_term = server_is_term; + self->mod->server_set_clip = server_set_clip; + self->mod->server_reset_clip = server_reset_clip; } } /* id self->mod is null, there must be a problem */ diff --git a/xrdp/xrdp_types.h b/xrdp/xrdp_types.h index b17ec188..1a7e4b8e 100644 --- a/xrdp/xrdp_types.h +++ b/xrdp/xrdp_types.h @@ -45,6 +45,8 @@ struct xrdp_mod int (*server_palette)(struct xrdp_mod* v, int* palette); int (*server_msg)(struct xrdp_mod* v, char* msg); int (*server_is_term)(struct xrdp_mod* v); + int (*server_set_clip)(struct xrdp_mod* v, int x, int y, int cx, int cy); + int (*server_reset_clip)(struct xrdp_mod* v); /* common */ long handle; /* pointer to self as int */ long wm; /* struct xrdp_wm* */