diff --git a/src/backends/meta-monitor.c b/src/backends/meta-monitor.c index e35da7d70..3ff18a5e2 100644 --- a/src/backends/meta-monitor.c +++ b/src/backends/meta-monitor.c @@ -31,6 +31,7 @@ #include "backends/meta-output.h" #define SCALE_FACTORS_PER_INTEGER 4 +#define SCALE_FACTORS_STEPS (1.0 / (float) SCALE_FACTORS_PER_INTEGER) #define MINIMUM_SCALE_FACTOR 1.0f #define MAXIMUM_SCALE_FACTOR 4.0f #define MINIMUM_LOGICAL_WIDTH 800 @@ -1579,8 +1580,7 @@ meta_monitor_mode_should_be_advertised (MetaMonitorMode *monitor_mode) static float get_closest_scale_factor_for_resolution (float width, float height, - float scale, - float scale_step) + float scale) { unsigned int i, j; float scaled_h; @@ -1609,7 +1609,6 @@ get_closest_scale_factor_for_resolution (float width, do { - for (j = 0; j < 2; j++) { float current_scale; @@ -1619,13 +1618,12 @@ get_closest_scale_factor_for_resolution (float width, current_scale = width / scaled_w; scaled_h = height / current_scale; - if (current_scale >= scale + scale_step || - current_scale <= scale - scale_step || + if (current_scale >= scale + SCALE_FACTORS_STEPS || + current_scale <= scale - SCALE_FACTORS_STEPS || current_scale < MINIMUM_SCALE_FACTOR || current_scale > MAXIMUM_SCALE_FACTOR) { - limit_exceeded = TRUE; - continue; + goto out; } if (floorf (scaled_h) == scaled_h) @@ -1653,10 +1651,8 @@ meta_monitor_calculate_supported_scales (MetaMonitor *monitor, { unsigned int i, j; int width, height; - float scale_steps; GArray *supported_scales; - scale_steps = 1.0 / (float) SCALE_FACTORS_PER_INTEGER; supported_scales = g_array_new (FALSE, FALSE, sizeof (float)); meta_monitor_mode_get_resolution (monitor_mode, &width, &height); @@ -1668,7 +1664,7 @@ meta_monitor_calculate_supported_scales (MetaMonitor *monitor, for (j = 0; j < SCALE_FACTORS_PER_INTEGER; j++) { float scale; - float scale_value = i + j * scale_steps; + float scale_value = i + j * SCALE_FACTORS_STEPS; if ((constraints & META_MONITOR_SCALES_CONSTRAINT_NO_FRAC) && fmodf (scale_value, 1.0) != 0.0) @@ -1678,8 +1674,7 @@ meta_monitor_calculate_supported_scales (MetaMonitor *monitor, scale = get_closest_scale_factor_for_resolution (width, height, - scale_value, - scale_steps); + scale_value); if (scale > 0.0f) g_array_append_val (supported_scales, scale);