xfreerdp: handle -g X%
authorAnthony Tong <atong@trustedcs.com>
Tue, 1 Nov 2011 23:53:49 +0000 (18:53 -0500)
committerAnthony Tong <atong@trustedcs.com>
Wed, 2 Nov 2011 00:09:20 +0000 (19:09 -0500)
client/X11/xf_monitor.c
include/freerdp/settings.h
libfreerdp-utils/args.c

index 2e5ee31..c4a1e1a 100644 (file)
@@ -56,6 +56,11 @@ boolean xf_detect_monitors(xfInfo* xfi, rdpSettings* settings)
                settings->width = xfi->workArea.width;
                settings->height = xfi->workArea.height;
        }
+       else if (settings->percent_screen)
+       {
+               settings->width = (xfi->workArea.width * settings->percent_screen) / 100;
+               settings->height = (xfi->workArea.height * settings->percent_screen) / 100;
+       }
 
        if (settings->fullscreen != True && settings->workarea != True)
                return True;
index 24f7543..4b71572 100644 (file)
@@ -186,6 +186,7 @@ struct rdp_settings
 
        uint16 width;
        uint16 height;
+       uint16 percent_screen;
        boolean sw_gdi;
        boolean workarea;
        boolean fullscreen;
index 8730cd0..e172651 100644 (file)
@@ -184,6 +184,15 @@ int freerdp_parse_args(rdpSettings* settings, int argc, char** argv,
                                {
                                        settings->height = (uint16) strtol(p + 1, &p, 10);
                                }
+                               if (*p == '%')
+                               {
+                                       settings->percent_screen = settings->width;
+                                       if (settings->percent_screen <= 0 || settings->percent_screen > 100)
+                                       {
+                                               printf("invalid geometry percentage\n");
+                                               return -1;
+                                       }
+                               }
                                else
                                {
                                        if (ui_callback != NULL)