Added seamless_reset_state() and use it whenever a
new window is created. This fixes issues with seamless protocol parser between reconnects. git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/rdesktop/trunk@1820 423420c4-83ab-492f-b58f-81f9feb106b5
This commit is contained in:
parent
d0b0e731d9
commit
2ceb56e0d4
1
proto.h
1
proto.h
@ -336,6 +336,7 @@ void ui_seamless_ack(unsigned int serial);
|
|||||||
RD_BOOL lspci_init(void);
|
RD_BOOL lspci_init(void);
|
||||||
/* seamless.c */
|
/* seamless.c */
|
||||||
RD_BOOL seamless_init(void);
|
RD_BOOL seamless_init(void);
|
||||||
|
void seamless_reset_state(void);
|
||||||
unsigned int seamless_send_sync(void);
|
unsigned int seamless_send_sync(void);
|
||||||
unsigned int seamless_send_state(unsigned long id, unsigned int state, unsigned long flags);
|
unsigned int seamless_send_state(unsigned long id, unsigned int state, unsigned long flags);
|
||||||
unsigned int seamless_send_position(unsigned long id, int x, int y, int width, int height,
|
unsigned int seamless_send_position(unsigned long id, int x, int y, int width, int height,
|
||||||
|
13
seamless.c
13
seamless.c
@ -32,6 +32,7 @@
|
|||||||
extern RD_BOOL g_seamless_rdp;
|
extern RD_BOOL g_seamless_rdp;
|
||||||
static VCHANNEL *seamless_channel;
|
static VCHANNEL *seamless_channel;
|
||||||
static unsigned int seamless_serial;
|
static unsigned int seamless_serial;
|
||||||
|
static char *seamless_rest = NULL;
|
||||||
static char icon_buf[1024];
|
static char icon_buf[1024];
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
@ -373,7 +374,6 @@ static void
|
|||||||
seamless_process(STREAM s)
|
seamless_process(STREAM s)
|
||||||
{
|
{
|
||||||
unsigned int pkglen;
|
unsigned int pkglen;
|
||||||
static char *rest = NULL;
|
|
||||||
char *buf;
|
char *buf;
|
||||||
|
|
||||||
pkglen = s->end - s->p;
|
pkglen = s->end - s->p;
|
||||||
@ -385,7 +385,7 @@ seamless_process(STREAM s)
|
|||||||
hexdump(s->p, pkglen);
|
hexdump(s->p, pkglen);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
str_handle_lines(buf, &rest, seamless_line_handler, NULL);
|
str_handle_lines(buf, &seamless_rest, seamless_line_handler, NULL);
|
||||||
|
|
||||||
xfree(buf);
|
xfree(buf);
|
||||||
}
|
}
|
||||||
@ -405,6 +405,15 @@ seamless_init(void)
|
|||||||
return (seamless_channel != NULL);
|
return (seamless_channel != NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
seamless_reset_state(void)
|
||||||
|
{
|
||||||
|
if (seamless_rest != NULL)
|
||||||
|
{
|
||||||
|
xfree(seamless_rest);
|
||||||
|
seamless_rest = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static unsigned int
|
static unsigned int
|
||||||
seamless_send(const char *command, const char *format, ...)
|
seamless_send(const char *command, const char *format, ...)
|
||||||
|
Loading…
Reference in New Issue
Block a user