fix: keep seek target visible until acknowledged and make volume thumb opaque
This commit is contained in:
+14
-3
@@ -69,22 +69,33 @@ int main(int argc, char **argv) {
|
||||
"pause freezes authoritative position");
|
||||
uint64_t revision = paused.revision;
|
||||
require(player_seek(player.get(), 1.5), "paused seek accepted");
|
||||
auto pending = player_get_state(player.get());
|
||||
require(pending.seek_pending || std::abs(pending.position - 1.5) < .03,
|
||||
"accepted seek reports pending until the target is authoritative");
|
||||
auto sought = until(player.get(), [revision](auto s) {
|
||||
return s.revision != revision && s.status == PLAYER_PAUSED && std::abs(s.position - 1.5) < .03;
|
||||
return !s.seek_pending && s.revision != revision && s.status == PLAYER_PAUSED && std::abs(s.position - 1.5) < .03;
|
||||
});
|
||||
[view draw];
|
||||
require(sought.status == PLAYER_PAUSED, "seek preserves paused state");
|
||||
require(player_seek(player.get(), .8) && player_seek(player.get(), 1.5), "queued seeks accepted");
|
||||
pending = player_get_state(player.get());
|
||||
require(pending.seek_pending || std::abs(pending.position - 1.5) < .03,
|
||||
"an earlier queued seek cannot acknowledge the final seek");
|
||||
until(player.get(), [](auto s) {
|
||||
return !s.seek_pending && s.status == PLAYER_PAUSED && std::abs(s.position - 1.5) < .03;
|
||||
});
|
||||
require(player_play(player.get()), "resume accepted");
|
||||
until(player.get(), [](auto s) { return s.status == PLAYER_PLAYING && s.position > 1.7; });
|
||||
require(player_seek(player.get(), 3.2), "playing seek accepted");
|
||||
until(player.get(), [](auto s) { return s.status == PLAYER_PLAYING && s.position >= 3.2; });
|
||||
until(player.get(), [](auto s) { return !s.seek_pending && s.status == PLAYER_PLAYING && s.position >= 3.2; });
|
||||
auto ended = until(player.get(), [](auto s) { return s.status == PLAYER_ENDED; });
|
||||
require(ended.position >= 3.8, "EOF drains media before completion");
|
||||
require(player_play(player.get()), "replay accepted");
|
||||
until(player.get(), [](auto s) { return s.status == PLAYER_PLAYING && s.position > .1 && s.position < 1; });
|
||||
require(player_close(player.get()), "close accepted while playing");
|
||||
auto closed = until(player.get(), [](auto s) { return s.status == PLAYER_EMPTY; });
|
||||
require(closed.position == 0 && !closed.has_audio && !closed.has_video, "close clears media state");
|
||||
require(closed.position == 0 && !closed.has_audio && !closed.has_video && !closed.seek_pending,
|
||||
"close clears media state and pending seeks");
|
||||
std::printf("PASS %s: open/play/pause/seek/end/replay/close\n", fixture);
|
||||
}
|
||||
require(player_open(player.get(), (std::string(argv[1]) + "/hdr.mkv").c_str()), "HDR open accepted");
|
||||
|
||||
Reference in New Issue
Block a user