diff options
Diffstat (limited to 'apps/recorder/peakmeter.c')
-rw-r--r-- | apps/recorder/peakmeter.c | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/apps/recorder/peakmeter.c b/apps/recorder/peakmeter.c index aacfc23cee..ca1b8c8750 100644 --- a/apps/recorder/peakmeter.c +++ b/apps/recorder/peakmeter.c | |||
@@ -930,6 +930,21 @@ void peak_meter_screen(struct screen *display, int x, int y, int height) | |||
930 | peak_meter_draw(display, &scales[display->screen_type], x, y, | 930 | peak_meter_draw(display, &scales[display->screen_type], x, y, |
931 | display->getwidth() - x, height); | 931 | display->getwidth() - x, height); |
932 | } | 932 | } |
933 | |||
934 | /* sets *left and *right to the current *unscaled* values */ | ||
935 | void peak_meter_current_vals(int *left, int *right) | ||
936 | { | ||
937 | static int left_level = 0, right_level = 0; | ||
938 | if (level_check){ | ||
939 | /* only read the volume info from MAS if peek since last read*/ | ||
940 | left_level = peak_meter_read_l(); | ||
941 | right_level = peak_meter_read_r(); | ||
942 | level_check = false; | ||
943 | } | ||
944 | *left = left_level; | ||
945 | *right = right_level; | ||
946 | } | ||
947 | |||
933 | /** | 948 | /** |
934 | * Draws a peak meter in the specified size at the specified position. | 949 | * Draws a peak meter in the specified size at the specified position. |
935 | * @param int x - The x coordinate. | 950 | * @param int x - The x coordinate. |
@@ -944,7 +959,7 @@ void peak_meter_screen(struct screen *display, int x, int y, int height) | |||
944 | static void peak_meter_draw(struct screen *display, struct meter_scales *scales, | 959 | static void peak_meter_draw(struct screen *display, struct meter_scales *scales, |
945 | int x, int y, int width, int height) | 960 | int x, int y, int width, int height) |
946 | { | 961 | { |
947 | static int left_level = 0, right_level = 0; | 962 | int left_level = 0, right_level = 0; |
948 | int left = 0, right = 0; | 963 | int left = 0, right = 0; |
949 | int meterwidth = width - 3; | 964 | int meterwidth = width - 3; |
950 | int i, delta; | 965 | int i, delta; |
@@ -964,12 +979,7 @@ static void peak_meter_draw(struct screen *display, struct meter_scales *scales, | |||
964 | if (peak_meter_enabled) { | 979 | if (peak_meter_enabled) { |
965 | 980 | ||
966 | 981 | ||
967 | if (level_check){ | 982 | peak_meter_current_vals(&left_level, &right_level); |
968 | /* only read the volume info from MAS if peek since last read*/ | ||
969 | left_level = peak_meter_read_l(); | ||
970 | right_level = peak_meter_read_r(); | ||
971 | level_check = false; | ||
972 | } | ||
973 | 983 | ||
974 | /* scale the samples dBfs */ | 984 | /* scale the samples dBfs */ |
975 | left = peak_meter_scale_value(left_level, meterwidth); | 985 | left = peak_meter_scale_value(left_level, meterwidth); |