From 0b4fefff766ee407be5701c146eaf9b635bfc039 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Sat, 6 Apr 2013 17:43:27 -0400 Subject: [PATCH] xfreerdp: fix interface for parsing command-line arguments --- client/X11/xf_interface.c | 106 +++++++++++++++++++------------------- 1 file changed, 52 insertions(+), 54 deletions(-) diff --git a/client/X11/xf_interface.c b/client/X11/xf_interface.c index 5aef4589a..d0b46851e 100644 --- a/client/X11/xf_interface.c +++ b/client/X11/xf_interface.c @@ -591,10 +591,7 @@ int _xf_error_handler(Display* d, XErrorEvent* ev) */ BOOL xf_pre_connect(freerdp* instance) { - int status; xfInfo* xfi; - rdpFile* file; - BOOL bitmap_cache; rdpSettings* settings; xfi = ((xfContext*) instance->context)->xfi; @@ -605,60 +602,12 @@ BOOL xf_pre_connect(freerdp* instance) xfi->context = (xfContext*) instance->context; xfi->context->settings = instance->settings; xfi->instance = instance; - - status = freerdp_client_parse_command_line_arguments(instance->context->argc, - instance->context->argv, instance->settings); - - if (status < 0) - exit(XF_EXIT_PARSE_ARGUMENTS); - - freerdp_client_load_addins(instance->context->channels, instance->settings); - settings = instance->settings; - if (settings->ConnectionFile) - { - file = freerdp_client_rdp_file_new(); + //if (status < 0) + // exit(XF_EXIT_PARSE_ARGUMENTS); - fprintf(stderr, "Using connection file: %s\n", settings->ConnectionFile); - - freerdp_client_parse_rdp_file(file, settings->ConnectionFile); - freerdp_client_populate_settings_from_rdp_file(file, settings); - } - - bitmap_cache = settings->BitmapCacheEnabled; - - settings->OsMajorType = OSMAJORTYPE_UNIX; - settings->OsMinorType = OSMINORTYPE_NATIVE_XSERVER; - - settings->OrderSupport[NEG_DSTBLT_INDEX] = TRUE; - settings->OrderSupport[NEG_PATBLT_INDEX] = TRUE; - settings->OrderSupport[NEG_SCRBLT_INDEX] = TRUE; - settings->OrderSupport[NEG_OPAQUE_RECT_INDEX] = TRUE; - settings->OrderSupport[NEG_DRAWNINEGRID_INDEX] = FALSE; - settings->OrderSupport[NEG_MULTIDSTBLT_INDEX] = FALSE; - settings->OrderSupport[NEG_MULTIPATBLT_INDEX] = FALSE; - settings->OrderSupport[NEG_MULTISCRBLT_INDEX] = FALSE; - settings->OrderSupport[NEG_MULTIOPAQUERECT_INDEX] = TRUE; - settings->OrderSupport[NEG_MULTI_DRAWNINEGRID_INDEX] = FALSE; - settings->OrderSupport[NEG_LINETO_INDEX] = TRUE; - settings->OrderSupport[NEG_POLYLINE_INDEX] = TRUE; - settings->OrderSupport[NEG_MEMBLT_INDEX] = bitmap_cache; - - settings->OrderSupport[NEG_MEM3BLT_INDEX] = (settings->SoftwareGdi) ? TRUE : FALSE; - - settings->OrderSupport[NEG_MEMBLT_V2_INDEX] = bitmap_cache; - settings->OrderSupport[NEG_MEM3BLT_V2_INDEX] = FALSE; - settings->OrderSupport[NEG_SAVEBITMAP_INDEX] = FALSE; - settings->OrderSupport[NEG_GLYPH_INDEX_INDEX] = TRUE; - settings->OrderSupport[NEG_FAST_INDEX_INDEX] = TRUE; - settings->OrderSupport[NEG_FAST_GLYPH_INDEX] = TRUE; - - settings->OrderSupport[NEG_POLYGON_SC_INDEX] = (settings->SoftwareGdi) ? FALSE : TRUE; - settings->OrderSupport[NEG_POLYGON_CB_INDEX] = (settings->SoftwareGdi) ? FALSE : TRUE; - - settings->OrderSupport[NEG_ELLIPSE_SC_INDEX] = FALSE; - settings->OrderSupport[NEG_ELLIPSE_CB_INDEX] = FALSE; + freerdp_client_load_addins(instance->context->channels, instance->settings); freerdp_channels_pre_connect(xfi->_context->channels, instance); @@ -1500,8 +1449,11 @@ int xf_stop(xfInfo* xfi) xfInfo* xf_new(HANDLE hInstance, HANDLE hWndParent, int argc, char** argv) { int index; + int status; xfInfo* xfi; + rdpFile* file; freerdp* instance; + rdpSettings* settings; instance = freerdp_new(); instance->PreConnect = xf_pre_connect; @@ -1529,6 +1481,52 @@ xfInfo* xf_new(HANDLE hInstance, HANDLE hWndParent, int argc, char** argv) ((xfContext*) instance->context)->xfi = xfi; xfi->instance = instance; + settings = instance->settings; + + status = freerdp_client_parse_command_line_arguments(instance->context->argc, + instance->context->argv, settings); + + if (settings->ConnectionFile) + { + file = freerdp_client_rdp_file_new(); + + fprintf(stderr, "Using connection file: %s\n", settings->ConnectionFile); + + freerdp_client_parse_rdp_file(file, settings->ConnectionFile); + freerdp_client_populate_settings_from_rdp_file(file, settings); + } + + settings->OsMajorType = OSMAJORTYPE_UNIX; + settings->OsMinorType = OSMINORTYPE_NATIVE_XSERVER; + + settings->OrderSupport[NEG_DSTBLT_INDEX] = TRUE; + settings->OrderSupport[NEG_PATBLT_INDEX] = TRUE; + settings->OrderSupport[NEG_SCRBLT_INDEX] = TRUE; + settings->OrderSupport[NEG_OPAQUE_RECT_INDEX] = TRUE; + settings->OrderSupport[NEG_DRAWNINEGRID_INDEX] = FALSE; + settings->OrderSupport[NEG_MULTIDSTBLT_INDEX] = FALSE; + settings->OrderSupport[NEG_MULTIPATBLT_INDEX] = FALSE; + settings->OrderSupport[NEG_MULTISCRBLT_INDEX] = FALSE; + settings->OrderSupport[NEG_MULTIOPAQUERECT_INDEX] = TRUE; + settings->OrderSupport[NEG_MULTI_DRAWNINEGRID_INDEX] = FALSE; + settings->OrderSupport[NEG_LINETO_INDEX] = TRUE; + settings->OrderSupport[NEG_POLYLINE_INDEX] = TRUE; + settings->OrderSupport[NEG_MEMBLT_INDEX] = settings->BitmapCacheEnabled; + + settings->OrderSupport[NEG_MEM3BLT_INDEX] = (settings->SoftwareGdi) ? TRUE : FALSE; + + settings->OrderSupport[NEG_MEMBLT_V2_INDEX] = settings->BitmapCacheEnabled; + settings->OrderSupport[NEG_MEM3BLT_V2_INDEX] = FALSE; + settings->OrderSupport[NEG_SAVEBITMAP_INDEX] = FALSE; + settings->OrderSupport[NEG_GLYPH_INDEX_INDEX] = TRUE; + settings->OrderSupport[NEG_FAST_INDEX_INDEX] = TRUE; + settings->OrderSupport[NEG_FAST_GLYPH_INDEX] = TRUE; + + settings->OrderSupport[NEG_POLYGON_SC_INDEX] = (settings->SoftwareGdi) ? FALSE : TRUE; + settings->OrderSupport[NEG_POLYGON_CB_INDEX] = (settings->SoftwareGdi) ? FALSE : TRUE; + + settings->OrderSupport[NEG_ELLIPSE_SC_INDEX] = FALSE; + settings->OrderSupport[NEG_ELLIPSE_CB_INDEX] = FALSE; return xfi; }