]> git.alsa-project.org Git - alsa-lib.git/commitdiff
Clean up using gettimestamp()
authorTakashi Iwai <tiwai@suse.de>
Wed, 21 Nov 2007 11:19:43 +0000 (12:19 +0100)
committerTakashi Iwai <tiwai@suse.de>
Wed, 21 Nov 2007 11:19:43 +0000 (12:19 +0100)
Introduce a new local function gettimestamp() to get the current timestamp.

src/pcm/pcm_dmix.c
src/pcm/pcm_dshare.c
src/pcm/pcm_dsnoop.c
src/pcm/pcm_ioplug.c
src/pcm/pcm_local.h
src/pcm/pcm_null.c
src/pcm/pcm_rate.c
src/pcm/pcm_share.c

index e8f837acfbc6c7dddbbfc32609be77c3bae64bc2..631aae37d5482f0eeb3edfbfa610f2aad7cad149 100644 (file)
@@ -367,11 +367,8 @@ static int snd_pcm_dmix_sync_ptr(snd_pcm_t *pcm)
        if (avail > dmix->avail_max)
                dmix->avail_max = avail;
        if (avail >= pcm->stop_threshold) {
-               struct timeval tv;
                snd_timer_stop(dmix->timer);
-               gettimeofday(&tv, 0);
-               dmix->trigger_tstamp.tv_sec = tv.tv_sec;
-               dmix->trigger_tstamp.tv_nsec = tv.tv_usec * 1000L;
+               gettimestamp(&dmix->trigger_tstamp);
                if (dmix->state == SND_PCM_STATE_RUNNING) {
                        dmix->state = SND_PCM_STATE_XRUN;
                        return -EPIPE;
@@ -422,12 +419,8 @@ static int snd_pcm_dmix_status(snd_pcm_t *pcm, snd_pcm_status_t * status)
        status->trigger_tstamp = dmix->trigger_tstamp;
        if (pcm->tstamp_mode == SND_PCM_TSTAMP_MMAP)
                status->tstamp = snd_pcm_hw_fast_tstamp(dmix->spcm);
-       else {
-               struct timeval tv;
-               gettimeofday(&tv, 0);
-               status->tstamp.tv_sec = tv.tv_sec;
-               status->tstamp.tv_nsec = tv.tv_usec * 1000L;
-       }
+       else
+               gettimestamp(&status->tstamp);
        status->avail = snd_pcm_mmap_playback_avail(pcm);
        status->avail_max = status->avail > dmix->avail_max ? status->avail : dmix->avail_max;
        dmix->avail_max = 0;
@@ -532,7 +525,6 @@ static int snd_pcm_dmix_start(snd_pcm_t *pcm)
 {
        snd_pcm_direct_t *dmix = pcm->private_data;
        snd_pcm_sframes_t avail;
-       struct timeval tv;
        int err;
        
        if (dmix->state != SND_PCM_STATE_PREPARED)
@@ -547,9 +539,7 @@ static int snd_pcm_dmix_start(snd_pcm_t *pcm)
                        return err;
                snd_pcm_dmix_sync_area(pcm);
        }
-       gettimeofday(&tv, 0);
-       dmix->trigger_tstamp.tv_sec = tv.tv_sec;
-       dmix->trigger_tstamp.tv_nsec = tv.tv_usec * 1000L;
+       gettimestamp(&dmix->trigger_tstamp);
        return 0;
 }
 
index ccbe47931d34f308e8d2c68bc7f0cd3215f4203c..44417ea1fdfe25b209fd64fc950c957aeca0a89d 100644 (file)
@@ -194,11 +194,8 @@ static int snd_pcm_dshare_sync_ptr(snd_pcm_t *pcm)
        if (avail > dshare->avail_max)
                dshare->avail_max = avail;
        if (avail >= pcm->stop_threshold) {
-               struct timeval tv;
                snd_timer_stop(dshare->timer);
-               gettimeofday(&tv, 0);
-               dshare->trigger_tstamp.tv_sec = tv.tv_sec;
-               dshare->trigger_tstamp.tv_nsec = tv.tv_usec * 1000L;
+               gettimestamp(&dshare->trigger_tstamp);
                if (dshare->state == SND_PCM_STATE_RUNNING) {
                        dshare->state = SND_PCM_STATE_XRUN;
                        return -EPIPE;
@@ -231,12 +228,8 @@ static int snd_pcm_dshare_status(snd_pcm_t *pcm, snd_pcm_status_t * status)
        status->trigger_tstamp = dshare->trigger_tstamp;
        if (pcm->tstamp_mode == SND_PCM_TSTAMP_MMAP)
                status->tstamp = snd_pcm_hw_fast_tstamp(dshare->spcm);
-       else {
-               struct timeval tv;
-               gettimeofday(&tv, 0);
-               status->tstamp.tv_sec = tv.tv_sec;
-               status->tstamp.tv_nsec = tv.tv_usec * 1000L;
-       }
+       else
+               gettimestamp(&status->tstamp);
        status->avail = snd_pcm_mmap_playback_avail(pcm);
        status->avail_max = status->avail > dshare->avail_max ? status->avail : dshare->avail_max;
        dshare->avail_max = 0;
@@ -342,7 +335,6 @@ static int snd_pcm_dshare_start(snd_pcm_t *pcm)
 {
        snd_pcm_direct_t *dshare = pcm->private_data;
        snd_pcm_sframes_t avail;
-       struct timeval tv;
        int err;
        
        if (dshare->state != SND_PCM_STATE_PREPARED)
@@ -357,9 +349,7 @@ static int snd_pcm_dshare_start(snd_pcm_t *pcm)
                        return err;
                snd_pcm_dshare_sync_area(pcm);
        }
-       gettimeofday(&tv, 0);
-       dshare->trigger_tstamp.tv_sec = tv.tv_sec;
-       dshare->trigger_tstamp.tv_nsec = tv.tv_usec * 1000L;
+       gettimestamp(&dshare->trigger_tstamp);
        return 0;
 }
 
index 16334d567f2792b9816fe4c668212ac80a5ddc88..b70416598db4d9f51e78dfce46e386180258b0ce 100644 (file)
@@ -141,10 +141,7 @@ static int snd_pcm_dsnoop_sync_ptr(snd_pcm_t *pcm)
        if (pcm->stop_threshold >= pcm->boundary)       /* don't care */
                return 0;
        if ((avail = snd_pcm_mmap_capture_hw_avail(pcm)) >= pcm->stop_threshold) {
-               struct timeval tv;
-               gettimeofday(&tv, 0);
-               dsnoop->trigger_tstamp.tv_sec = tv.tv_sec;
-               dsnoop->trigger_tstamp.tv_nsec = tv.tv_usec * 1000L;
+               gettimestamp(&dsnoop->trigger_tstamp);
                dsnoop->state = SND_PCM_STATE_XRUN;
                dsnoop->avail_max = avail;
                return -EPIPE;
@@ -177,12 +174,8 @@ static int snd_pcm_dsnoop_status(snd_pcm_t *pcm, snd_pcm_status_t * status)
        status->trigger_tstamp = dsnoop->trigger_tstamp;
        if (pcm->tstamp_mode == SND_PCM_TSTAMP_MMAP)
                status->tstamp = snd_pcm_hw_fast_tstamp(dsnoop->spcm);
-       else {
-               struct timeval tv;
-               gettimeofday(&tv, 0);
-               status->tstamp.tv_sec = tv.tv_sec;
-               status->tstamp.tv_nsec = tv.tv_usec * 1000L;
-       }
+       else
+               gettimestamp(&status->tstamp);
        status->avail = snd_pcm_mmap_capture_avail(pcm);
        status->avail_max = status->avail > dsnoop->avail_max ? status->avail : dsnoop->avail_max;
        dsnoop->avail_max = 0;
@@ -271,7 +264,6 @@ static int snd_pcm_dsnoop_reset(snd_pcm_t *pcm)
 static int snd_pcm_dsnoop_start(snd_pcm_t *pcm)
 {
        snd_pcm_direct_t *dsnoop = pcm->private_data;
-       struct timeval tv;
        int err;
        
        if (dsnoop->state != SND_PCM_STATE_PREPARED)
@@ -282,9 +274,7 @@ static int snd_pcm_dsnoop_start(snd_pcm_t *pcm)
        if (err < 0)
                return err;
        dsnoop->state = SND_PCM_STATE_RUNNING;
-       gettimeofday(&tv, 0);
-       dsnoop->trigger_tstamp.tv_sec = tv.tv_sec;
-       dsnoop->trigger_tstamp.tv_nsec = tv.tv_usec * 1000L;
+       gettimestamp(&dsnoop->trigger_tstamp);
        return 0;
 }
 
index 435572eadb1a2f8d9f0bb5fc5f69fe9f62fd51fc..19dab979d6dda6b55f6ee16c6ee3c18ae1b7bb39 100644 (file)
@@ -438,7 +438,6 @@ static int snd_pcm_ioplug_sw_params(snd_pcm_t *pcm, snd_pcm_sw_params_t *params)
 static int snd_pcm_ioplug_start(snd_pcm_t *pcm)
 {
        ioplug_priv_t *io = pcm->private_data;
-       struct timeval tv;
        int err;
        
        if (io->data->state != SND_PCM_STATE_PREPARED)
@@ -448,9 +447,7 @@ static int snd_pcm_ioplug_start(snd_pcm_t *pcm)
        if (err < 0)
                return err;
 
-       gettimeofday(&tv, 0);
-       io->trigger_tstamp.tv_sec = tv.tv_sec;
-       io->trigger_tstamp.tv_nsec = tv.tv_usec * 1000L;
+       gettimestamp(&io->trigger_tstamp);
        io->data->state = SND_PCM_STATE_RUNNING;
 
        return 0;
@@ -459,16 +456,13 @@ static int snd_pcm_ioplug_start(snd_pcm_t *pcm)
 static int snd_pcm_ioplug_drop(snd_pcm_t *pcm)
 {
        ioplug_priv_t *io = pcm->private_data;
-       struct timeval tv;
 
        if (io->data->state == SND_PCM_STATE_OPEN)
                return -EBADFD;
 
        io->data->callback->stop(io->data);
 
-       gettimeofday(&tv, 0);
-       io->trigger_tstamp.tv_sec = tv.tv_sec;
-       io->trigger_tstamp.tv_nsec = tv.tv_usec * 1000L;
+       gettimestamp(&io->trigger_tstamp);
        io->data->state = SND_PCM_STATE_SETUP;
 
        return 0;
index f927258b2414db1bca38e9a46b9a1fd8ac342e6b..fd5dbb679c3a14e4155c8e6aab5ffd2f44e4d279 100644 (file)
@@ -838,3 +838,13 @@ typedef union snd_tmp_double {
        double d;
        int64_t l;
 } snd_tmp_double_t;
+
+/* get the current timestamp */
+static inline void gettimestamp(snd_htimestamp_t *tstamp)
+{
+       struct timeval tv;
+
+       gettimeofday(&tv, 0);
+       tstamp->tv_sec = tv.tv_sec;
+       tstamp->tv_nsec = tv.tv_usec * 1000L;
+}
index 8fd61fcf8a645a7acfedd50f1ee1a1ac9dd840b8..742f2315dacabcf5ec3786d074430ca673771625 100644 (file)
@@ -82,13 +82,10 @@ static int snd_pcm_null_info(snd_pcm_t *pcm, snd_pcm_info_t * info)
 static int snd_pcm_null_status(snd_pcm_t *pcm, snd_pcm_status_t * status)
 {
        snd_pcm_null_t *null = pcm->private_data;
-       struct timeval tv;
        memset(status, 0, sizeof(*status));
        status->state = null->state;
        status->trigger_tstamp = null->trigger_tstamp;
-       gettimeofday(&tv, 0);
-       status->tstamp.tv_sec = tv.tv_sec;
-       status->tstamp.tv_nsec = tv.tv_usec * 1000L;
+       gettimestamp(&status->tstamp);
        status->avail = pcm->buffer_size;
        status->avail_max = status->avail;
        return 0;
index aa1b36cca30a0a07777c7787963f98a1183d0c46..26d26dbb8b10ac17326d351a18ed534d4d32619c 100644 (file)
@@ -1090,7 +1090,6 @@ static int snd_pcm_rate_start(snd_pcm_t *pcm)
 {
        snd_pcm_rate_t *rate = pcm->private_data;
        snd_pcm_uframes_t avail;
-       struct timeval tv;
                
        if (pcm->stream == SND_PCM_STREAM_CAPTURE)
                return snd_pcm_start(rate->gen.slave);
@@ -1098,9 +1097,7 @@ static int snd_pcm_rate_start(snd_pcm_t *pcm)
        if (snd_pcm_state(rate->gen.slave) != SND_PCM_STATE_PREPARED)
                return -EBADFD;
 
-       gettimeofday(&tv, 0);
-       rate->trigger_tstamp.tv_sec = tv.tv_sec;
-       rate->trigger_tstamp.tv_nsec = tv.tv_usec * 1000L;
+       gettimestamp(&rate->trigger_tstamp);
 
        avail = snd_pcm_mmap_playback_hw_avail(rate->gen.slave);
        if (avail == 0) {
index cc65907d5d505b62117cdad2ad10f02cd6cc8de9..165d8d020ab19e29d4dc82e7edc8febf3b15be5d 100644 (file)
@@ -914,7 +914,6 @@ static int snd_pcm_share_start(snd_pcm_t *pcm)
        snd_pcm_share_t *share = pcm->private_data;
        snd_pcm_share_slave_t *slave = share->slave;
        snd_pcm_t *spcm = slave->pcm;
-       struct timeval tv;
        int err = 0;
        if (share->state != SND_PCM_STATE_PREPARED)
                return -EBADFD;
@@ -970,9 +969,7 @@ static int snd_pcm_share_start(snd_pcm_t *pcm)
        }
        slave->running_count++;
        _snd_pcm_share_update(pcm);
-       gettimeofday(&tv, 0);
-       share->trigger_tstamp.tv_sec = tv.tv_sec;
-       share->trigger_tstamp.tv_nsec = tv.tv_usec * 1000L;
+       gettimestamp(&share->trigger_tstamp);
  _end:
        Pthread_mutex_unlock(&slave->mutex);
        return err;
@@ -1099,16 +1096,13 @@ static void _snd_pcm_share_stop(snd_pcm_t *pcm, snd_pcm_state_t state)
 {
        snd_pcm_share_t *share = pcm->private_data;
        snd_pcm_share_slave_t *slave = share->slave;
-       struct timeval tv;
 #if 0
        if (!pcm->mmap_channels) {
                /* PCM closing already begun in the main thread */
                return;
        }
 #endif
-       gettimeofday(&tv, 0);
-       share->trigger_tstamp.tv_sec = tv.tv_sec;
-       share->trigger_tstamp.tv_nsec = tv.tv_usec * 1000L;
+       gettimestamp(&share->trigger_tstamp);
        if (pcm->stream == SND_PCM_STREAM_CAPTURE) {
                snd_pcm_areas_copy(pcm->stopped_areas, 0,
                                   pcm->running_areas, 0,