diff options
author | Josh Blum <josh@joshknows.com> | 2010-07-28 17:32:47 -0700 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2010-07-28 17:32:47 -0700 |
commit | c1102144bb4ead3f8cb59c3f6eb52b21531ff12b (patch) | |
tree | 4b06ec8d5d3512c04aedce1aae8c4bb9347f6525 | |
parent | bbe7dd1c8f1bd8f42a0ae3d28f36c0334b0fd3c8 (diff) | |
download | uhd-c1102144bb4ead3f8cb59c3f6eb52b21531ff12b.tar.gz uhd-c1102144bb4ead3f8cb59c3f6eb52b21531ff12b.tar.bz2 uhd-c1102144bb4ead3f8cb59c3f6eb52b21531ff12b.zip |
uhd: alignment buffer timeout abs time fix
-rw-r--r-- | host/include/uhd/transport/alignment_buffer.ipp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/host/include/uhd/transport/alignment_buffer.ipp b/host/include/uhd/transport/alignment_buffer.ipp index ed7cfd26c..61b3b60f5 100644 --- a/host/include/uhd/transport/alignment_buffer.ipp +++ b/host/include/uhd/transport/alignment_buffer.ipp @@ -57,12 +57,15 @@ namespace uhd{ namespace transport{ namespace{ /*anon*/ std::vector<elem_type> &elems, const time_duration_t &time ){ + boost::system_time exit_time = boost::get_system_time() + time; buff_contents_type buff_contents_tmp; std::list<size_t> indexes_to_do(_all_indexes); //do an initial pop to load an initial sequence id size_t index = indexes_to_do.front(); - if (not _buffs[index]->pop_with_timed_wait(buff_contents_tmp, time)) return false; + if (not _buffs[index]->pop_with_timed_wait( + buff_contents_tmp, exit_time - boost::get_system_time() + )) return false; elems[index] = buff_contents_tmp.first; seq_type expected_seq_id = buff_contents_tmp.second; indexes_to_do.pop_front(); @@ -75,7 +78,9 @@ namespace uhd{ namespace transport{ namespace{ /*anon*/ _there_was_a_clear = false; indexes_to_do = _all_indexes; index = indexes_to_do.front(); - if (not _buffs[index]->pop_with_timed_wait(buff_contents_tmp, time)) return false; + if (not _buffs[index]->pop_with_timed_wait( + buff_contents_tmp, exit_time - boost::get_system_time() + )) return false; elems[index] = buff_contents_tmp.first; expected_seq_id = buff_contents_tmp.second; indexes_to_do.pop_front(); @@ -83,7 +88,9 @@ namespace uhd{ namespace transport{ namespace{ /*anon*/ //pop an element off for this index index = indexes_to_do.front(); - if (not _buffs[index]->pop_with_timed_wait(buff_contents_tmp, time)) return false; + if (not _buffs[index]->pop_with_timed_wait( + buff_contents_tmp, exit_time - boost::get_system_time() + )) return false; //if the sequence id matches: // store the popped element into the output, |