diff options
author | Andreas Schneider <asn@cryptomilk.org> | 2017-02-13 16:48:17 +0100 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2017-02-14 17:42:14 +0100 |
commit | 58735a9cf911eb09ba830a505d1dc2c9d130ef9e (patch) | |
tree | b69e7e92aa3a6531c046fb77d11c98ace2169ae1 | |
parent | 5b75c5763c96714af841f9ae4d0606228fb1615a (diff) | |
download | android_hardware_samsung-58735a9cf911eb09ba830a505d1dc2c9d130ef9e.tar.gz android_hardware_samsung-58735a9cf911eb09ba830a505d1dc2c9d130ef9e.tar.bz2 android_hardware_samsung-58735a9cf911eb09ba830a505d1dc2c9d130ef9e.zip |
audio: Fix time diff to always return positive numbers
Change-Id: I62f835f95fc1d1a671cfdb2e6e6ac1758524235f
-rw-r--r-- | audio/audio_hw.c | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/audio/audio_hw.c b/audio/audio_hw.c index ff855d5..ea69f25 100644 --- a/audio/audio_hw.c +++ b/audio/audio_hw.c @@ -248,7 +248,6 @@ static const struct string_to_enum out_channels_name_to_enum_table[] = { struct timespec time_spec_diff(struct timespec time1, struct timespec time0) { struct timespec ret; int xsec = 0; - int sign = 1; if (time0.tv_nsec > time1.tv_nsec) { xsec = (int) ((time0.tv_nsec - time1.tv_nsec) / (1E9 + 1)); @@ -262,14 +261,8 @@ struct timespec time_spec_diff(struct timespec time1, struct timespec time0) { time0.tv_sec -= xsec; } - ret.tv_sec = time1.tv_sec - time0.tv_sec; - ret.tv_nsec = time1.tv_nsec - time0.tv_nsec; - - if (time1.tv_sec < time0.tv_sec) { - sign = -1; - } - - ret.tv_sec = ret.tv_sec * sign; + ret.tv_sec = abs(time1.tv_sec - time0.tv_sec); + ret.tv_nsec = abs(time1.tv_nsec - time0.tv_nsec); return ret; } @@ -817,8 +810,8 @@ static int enable_snd_device(struct audio_device *adev, #ifdef DSP_POWEROFF_DELAY clock_gettime(CLOCK_MONOTONIC, &activation_time); - elapsed_time = time_spec_diff(mixer_card->dsp_poweroff_time, - activation_time); + elapsed_time = time_spec_diff(activation_time, + mixer_card->dsp_poweroff_time); if (elapsed_time.tv_sec == 0) { long elapsed_usec = elapsed_time.tv_nsec / 1000; |