[PATCH xrandr] Split verbose mode printing into a helper function

Aaron Plattner aplattner at nvidia.com
Thu Apr 9 11:18:58 PDT 2015


Combine the two forms of verbose mode printing into a single function.  Pass the
'current' and 'preferred' flags as arguments.  This fixes the code that prints
unassociated modes to print the flags as well.

Signed-off-by: Aaron Plattner <aplattner at nvidia.com>
---
 xrandr.c | 62 ++++++++++++++++++++++++++++++--------------------------------
 1 file changed, 30 insertions(+), 32 deletions(-)

diff --git a/xrandr.c b/xrandr.c
index 8a345427a226..5be2167d724f 100644
--- a/xrandr.c
+++ b/xrandr.c
@@ -566,7 +566,7 @@ mode_geometry (XRRModeInfo *mode_info, Rotation rotation,
 
 /* v refresh frequency in Hz */
 static double
-mode_refresh (XRRModeInfo *mode_info)
+mode_refresh (const XRRModeInfo *mode_info)
 {
     double rate;
     double vTotal = mode_info->vTotal;
@@ -592,7 +592,7 @@ mode_refresh (XRRModeInfo *mode_info)
 
 /* h sync frequency in Hz */
 static double
-mode_hsync (XRRModeInfo *mode_info)
+mode_hsync (const XRRModeInfo *mode_info)
 {
     double rate;
     
@@ -603,6 +603,30 @@ mode_hsync (XRRModeInfo *mode_info)
     return rate;
 }
 
+static void print_verbose_mode (const XRRModeInfo *mode, Bool current,
+				Bool preferred)
+{
+    int f;
+
+    printf ("  %s (0x%x) %6.3fMHz",
+	    mode->name, (int)mode->id,
+	    (double)mode->dotClock / 1000000.0);
+    for (f = 0; mode_flags[f].flag; f++)
+	if (mode->modeFlags & mode_flags[f].flag)
+	    printf (" %s", mode_flags[f].string);
+    if (current)
+	printf (" *current");
+    if (preferred)
+	printf (" +preferred");
+    printf ("\n");
+    printf ("        h: width  %4d start %4d end %4d total %4d skew %4d clock %6.2fKHz\n",
+	    mode->width, mode->hSyncStart, mode->hSyncEnd,
+	    mode->hTotal, mode->hSkew, mode_hsync (mode) / 1000);
+    printf ("        v: height %4d start %4d end %4d total %4d           clock %6.2fHz\n",
+	    mode->height, mode->vSyncStart, mode->vSyncEnd, mode->vTotal,
+	    mode_refresh (mode));
+}
+
 static void
 init_name (name_t *name)
 {
@@ -3836,25 +3860,9 @@ main (int argc, char **argv)
 		for (j = 0; j < output_info->nmode; j++)
 		{
 		    XRRModeInfo	*mode = find_mode_by_xid (output_info->modes[j]);
-		    int		f;
-		    
-		    printf ("  %s (0x%x) %6.3fMHz",
-			    mode->name, (int)mode->id,
-			    (double)mode->dotClock / 1000000.0);
-		    for (f = 0; mode_flags[f].flag; f++)
-			if (mode->modeFlags & mode_flags[f].flag)
-			    printf (" %s", mode_flags[f].string);
-		    if (mode == output->mode_info)
-			printf (" *current");
-		    if (j < output_info->npreferred)
-			printf (" +preferred");
-		    printf ("\n");
-		    printf ("        h: width  %4d start %4d end %4d total %4d skew %4d clock %6.2fKHz\n",
-			    mode->width, mode->hSyncStart, mode->hSyncEnd,
-			    mode->hTotal, mode->hSkew, mode_hsync (mode) / 1000);
-		    printf ("        v: height %4d start %4d end %4d total %4d           clock %6.2fHz\n",
-			    mode->height, mode->vSyncStart, mode->vSyncEnd, mode->vTotal,
-			    mode_refresh (mode));
+
+		    print_verbose_mode (mode, mode == output->mode_info,
+					j < output_info->npreferred);
 		    mode->modeFlags |= ModeShown;
 		}
 	    }
@@ -3899,17 +3907,7 @@ main (int argc, char **argv)
 	    XRRModeInfo	*mode = &res->modes[m];
 
 	    if (!(mode->modeFlags & ModeShown))
-	    {
-		printf ("  %s (0x%x) %6.3fMHz\n",
-			mode->name, (int)mode->id,
-			(double)mode->dotClock / 1000000.0);
-		printf ("        h: width  %4d start %4d end %4d total %4d skew %4d clock %6.2fKHz\n",
-			mode->width, mode->hSyncStart, mode->hSyncEnd,
-			mode->hTotal, mode->hSkew, mode_hsync (mode) / 1000);
-		printf ("        v: height %4d start %4d end %4d total %4d           clock %6.2fHz\n",
-			mode->height, mode->vSyncStart, mode->vSyncEnd, mode->vTotal,
-			mode_refresh (mode));
-	    }
+		print_verbose_mode(mode, False, False);
 	}
 	exit (0);
     }
-- 
2.3.5



More information about the xorg-devel mailing list