mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Refactoring: Improve event_loop
.
Improve the event loop architecture by making it set the divecomputer in the constructor - using the same loop for multiple dive computers is not intended to work. Also change `next()` in `divemode_loop` to `at()` to make the name more aligned with its function. Signed-off-by: Michael Keller <github@ike.ch>
This commit is contained in:
parent
33bb39f1ca
commit
ee25e8a1db
11 changed files with 28 additions and 33 deletions
|
@ -200,17 +200,17 @@ void fake_dc(struct divecomputer *dc)
|
|||
}
|
||||
|
||||
divemode_loop::divemode_loop(const struct divecomputer &dc) :
|
||||
dc(dc), last(dc.divemode), loop("modechange")
|
||||
last(dc.divemode), loop("modechange", dc)
|
||||
{
|
||||
/* on first invocation, get first event (if any) */
|
||||
ev = loop.next(dc);
|
||||
ev = loop.next();
|
||||
}
|
||||
|
||||
divemode_t divemode_loop::next(int time)
|
||||
divemode_t divemode_loop::at(int time)
|
||||
{
|
||||
while (ev && ev->time.seconds <= time) {
|
||||
last = static_cast<divemode_t>(ev->value);
|
||||
ev = loop.next(dc);
|
||||
ev = loop.next();
|
||||
}
|
||||
return last;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue