mirror of
https://github.com/TomHarte/CLK.git
synced 2024-10-18 23:23:56 +00:00
Adds vertical sync as something that can be run_until.
This commit is contained in:
parent
3c6a00dc3c
commit
beefb70f75
@ -80,7 +80,10 @@ class Machine {
|
|||||||
|
|
||||||
enum MachineEvent: int {
|
enum MachineEvent: int {
|
||||||
/// At least one new packet of audio has been delivered to the spaker's delegate.
|
/// At least one new packet of audio has been delivered to the spaker's delegate.
|
||||||
NewSpeakerSamplesGenerated = 1 << 0
|
NewSpeakerSamplesGenerated = 1 << 0,
|
||||||
|
|
||||||
|
/// The next vertical retrace has begun.
|
||||||
|
VerticalSync = 1 << 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -100,10 +103,16 @@ class Machine {
|
|||||||
sample_sets = speaker->completed_sample_sets();
|
sample_sets = speaker->completed_sample_sets();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int retraces = 0;
|
||||||
|
if(events & MachineEvent::VerticalSync) {
|
||||||
|
retraces = get_scan_status().hsync_count;
|
||||||
|
}
|
||||||
|
|
||||||
// Run until all requested events are satisfied.
|
// Run until all requested events are satisfied.
|
||||||
return run_until(minimum_duration, [=]() {
|
return run_until(minimum_duration, [=]() {
|
||||||
return
|
return
|
||||||
(!(events & MachineEvent::NewSpeakerSamplesGenerated) || (sample_sets != speaker->completed_sample_sets()));
|
(!(events & MachineEvent::NewSpeakerSamplesGenerated) || (sample_sets != speaker->completed_sample_sets())) &&
|
||||||
|
(!(events & MachineEvent::VerticalSync) || (retraces != get_scan_status().hsync_count));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user