From 316c72a4aea4319443e7ea43e06b027f2b7b1ced Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@duempel.org>
Date: Tue, 26 Aug 2014 11:02:02 +0200
Subject: [PATCH] DecoderAPI: add decoder_seek_where_ms()

Move to fixed-point integers instead of floating point.
---
 src/decoder/DecoderAPI.cxx | 17 +++++++++++++++++
 src/decoder/DecoderAPI.hxx | 10 ++++++++++
 test/FakeDecoderAPI.cxx    |  6 ++++++
 3 files changed, 33 insertions(+)

diff --git a/src/decoder/DecoderAPI.cxx b/src/decoder/DecoderAPI.cxx
index ae600260f..926a3955e 100644
--- a/src/decoder/DecoderAPI.cxx
+++ b/src/decoder/DecoderAPI.cxx
@@ -220,6 +220,23 @@ double decoder_seek_where(gcc_unused Decoder & decoder)
 	return dc.seek_where;
 }
 
+unsigned
+decoder_seek_where_ms(Decoder &decoder)
+{
+	const DecoderControl &dc = decoder.dc;
+
+	assert(dc.pipe != nullptr);
+
+	if (decoder.initial_seek_running)
+		return dc.start_ms;
+
+	assert(dc.command == DecoderCommand::SEEK);
+
+	decoder.seeking = true;
+
+	return unsigned(dc.seek_where * 1000);
+}
+
 void decoder_seek_error(Decoder & decoder)
 {
 	DecoderControl &dc = decoder.dc;
diff --git a/src/decoder/DecoderAPI.hxx b/src/decoder/DecoderAPI.hxx
index c57a02e01..ddcead4b1 100644
--- a/src/decoder/DecoderAPI.hxx
+++ b/src/decoder/DecoderAPI.hxx
@@ -88,6 +88,16 @@ gcc_pure
 double
 decoder_seek_where(Decoder &decoder);
 
+/**
+ * Call this when you have received the DecoderCommand::SEEK command.
+ *
+ * @param decoder the decoder object
+ * @return the destination position for the seek in milliseconds
+ */
+gcc_pure
+unsigned
+decoder_seek_where_ms(Decoder &decoder);
+
 /**
  * Call this instead of decoder_command_finished() when seeking has
  * failed.
diff --git a/test/FakeDecoderAPI.cxx b/test/FakeDecoderAPI.cxx
index 552854ed6..afa90b4ca 100644
--- a/test/FakeDecoderAPI.cxx
+++ b/test/FakeDecoderAPI.cxx
@@ -61,6 +61,12 @@ decoder_seek_where(gcc_unused Decoder &decoder)
 	return 1.0;
 }
 
+unsigned
+decoder_seek_where_ms(gcc_unused Decoder &decoder)
+{
+	return 1;
+}
+
 void
 decoder_seek_error(gcc_unused Decoder &decoder)
 {