Index: proto.h =================================================================== --- proto.h (revision 1731) +++ proto.h (revision 1732) @@ -144,6 +144,7 @@ char *l_to_a(long N, int base); int load_licence(unsigned char **data); void save_licence(unsigned char *data, int length); +void rd_create_ui(void); RD_BOOL rd_pstcache_mkdir(void); int rd_open_file(char *filename); void rd_close_file(int fd); Index: rdp.c =================================================================== --- rdp.c (revision 1731) +++ rdp.c (revision 1732) @@ -1044,6 +1044,9 @@ uint8 type; uint16 len_src_descriptor, len_combined_caps; + /* at this point we need to ensure that we have ui created */ + rd_create_ui(); + in_uint32_le(s, g_rdp_shareid); in_uint16_le(s, len_src_descriptor); in_uint16_le(s, len_combined_caps); Index: rdesktop.c =================================================================== --- rdesktop.c (revision 1731) +++ rdesktop.c (revision 1732) @@ -87,7 +87,7 @@ RD_BOOL g_sendmotion = True; RD_BOOL g_bitmap_cache = True; RD_BOOL g_bitmap_cache_persist_enable = False; -RD_BOOL g_bitmap_cache_precache = False; +RD_BOOL g_bitmap_cache_precache = True; RD_BOOL g_use_ctrl = True; RD_BOOL g_encryption = True; RD_BOOL g_encryption_initial = True; @@ -1132,13 +1132,7 @@ DEBUG(("Connection successful.\n")); memset(password, 0, sizeof(password)); - /* only create a window if we dont have one intialized */ - if (!ui_have_window()) - { - if (!ui_create_window()) - return EX_OSERR; - } - + rd_create_ui(); tcp_run_ui(True); g_redirect = False; @@ -1732,6 +1726,18 @@ close(fd); } +/* create rdesktop ui */ +void +rd_create_ui() +{ + /* only create a window if we dont have one intialized */ + if (!ui_have_window()) + { + if (!ui_create_window()) + return EX_OSERR; + } +} + /* Create the bitmap cache directory */ RD_BOOL rd_pstcache_mkdir(void)