mirror of
https://gitlab.freedesktop.org/monado/monado.git
synced 2025-01-04 06:06:17 +00:00
a/math: Update relation history to return something from push.
This commit is contained in:
parent
b29c4ee78f
commit
e5e8451a81
|
@ -62,22 +62,25 @@ m_relation_history_create(struct m_relation_history **rh_ptr)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
bool
|
||||||
m_relation_history_push(struct m_relation_history *rh, struct xrt_space_relation const *in_relation, uint64_t timestamp)
|
m_relation_history_push(struct m_relation_history *rh, struct xrt_space_relation const *in_relation, uint64_t timestamp)
|
||||||
{
|
{
|
||||||
XRT_TRACE_MARKER();
|
XRT_TRACE_MARKER();
|
||||||
struct relation_history_entry rhe;
|
struct relation_history_entry rhe;
|
||||||
rhe.relation = *in_relation;
|
rhe.relation = *in_relation;
|
||||||
rhe.timestamp = timestamp;
|
rhe.timestamp = timestamp;
|
||||||
|
bool ret = false;
|
||||||
os_mutex_lock(&rh->mutex);
|
os_mutex_lock(&rh->mutex);
|
||||||
// Don't evaluate the second condition if the length is 0 - rh->impl[0] will be NULL!
|
// Don't evaluate the second condition if the length is 0 - rh->impl[0] will be NULL!
|
||||||
if ((!rh->has_first_sample) || (rhe.timestamp > rh->impl[0]->timestamp)) {
|
if ((!rh->has_first_sample) || (rhe.timestamp > rh->impl[0]->timestamp)) {
|
||||||
// Everything explodes if the timestamps in relation_history aren't monotonically increasing. If we get
|
// Everything explodes if the timestamps in relation_history aren't monotonically increasing. If we get
|
||||||
// a timestamp that's before the most recent timestamp in the buffer, just don't put it in the history.
|
// a timestamp that's before the most recent timestamp in the buffer, just don't put it in the history.
|
||||||
rh->impl.push(rhe);
|
rh->impl.push(rhe);
|
||||||
|
ret = true;
|
||||||
}
|
}
|
||||||
rh->has_first_sample = true;
|
rh->has_first_sample = true;
|
||||||
os_mutex_unlock(&rh->mutex);
|
os_mutex_unlock(&rh->mutex);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
enum m_relation_history_result
|
enum m_relation_history_result
|
||||||
|
|
|
@ -49,9 +49,11 @@ m_relation_history_create(struct m_relation_history **rh);
|
||||||
*
|
*
|
||||||
* If the history is full, it will also pop a pose out of the other side of the buffer.
|
* If the history is full, it will also pop a pose out of the other side of the buffer.
|
||||||
*
|
*
|
||||||
|
* @return false if the timestamp is earlier than the most recent timestamp already recorded
|
||||||
|
*
|
||||||
* @public @memberof m_relation_history
|
* @public @memberof m_relation_history
|
||||||
*/
|
*/
|
||||||
void
|
bool
|
||||||
m_relation_history_push(struct m_relation_history *rh, struct xrt_space_relation const *in_relation, uint64_t ts);
|
m_relation_history_push(struct m_relation_history *rh, struct xrt_space_relation const *in_relation, uint64_t ts);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -117,10 +119,10 @@ public:
|
||||||
/*!
|
/*!
|
||||||
* @copydoc m_relation_history_push
|
* @copydoc m_relation_history_push
|
||||||
*/
|
*/
|
||||||
void
|
bool
|
||||||
push(xrt_space_relation const &relation, uint64_t ts) noexcept
|
push(xrt_space_relation const &relation, uint64_t ts) noexcept
|
||||||
{
|
{
|
||||||
m_relation_history_push(mPtr, &relation, ts);
|
return m_relation_history_push(mPtr, &relation, ts);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|
Loading…
Reference in a new issue