[rygel] core: Fix Seek.length confusion
- From: Zeeshan Ali Khattak <zeeshanak src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [rygel] core: Fix Seek.length confusion
- Date: Mon, 2 Aug 2010 15:08:49 +0000 (UTC)
commit f36277525cbb5563b84cc6a640574677216ef663
Author: Zeeshan Ali (Khattak) <zeeshanak gnome org>
Date: Mon Aug 2 18:03:56 2010 +0300
core: Fix Seek.length confusion
Since we didn't care to specify whether Seek.length is length of the seek or
total length of the associated resource, we intpreted it in both ways at
different places. Now there is a separate property for both length and
total length.
This also fixes the broken seeking.
src/rygel/rygel-http-byte-seek.vala | 4 ++--
src/rygel/rygel-http-seek.vala | 7 +++++--
src/rygel/rygel-http-time-seek.vala | 4 ++--
tests/rygel-http-byte-seek-test.vala | 8 ++++----
tests/rygel-http-time-seek-test.vala | 3 ++-
5 files changed, 15 insertions(+), 11 deletions(-)
---
diff --git a/src/rygel/rygel-http-byte-seek.vala b/src/rygel/rygel-http-byte-seek.vala
index 0876eb7..3133b6e 100644
--- a/src/rygel/rygel-http-byte-seek.vala
+++ b/src/rygel/rygel-http-byte-seek.vala
@@ -96,9 +96,9 @@ internal class Rygel.HTTPByteSeek : Rygel.HTTPSeek {
range += this.start.to_string () + "-" +
this.stop.to_string () + "/" +
- this.length.to_string ();
+ this.total_length.to_string ();
headers.append ("Content-Range", range);
- headers.set_content_length (this.stop + 1 - this.start);
+ headers.set_content_length (this.length);
}
}
diff --git a/src/rygel/rygel-http-seek.vala b/src/rygel/rygel-http-seek.vala
index 6ed64c6..f93c3a1 100644
--- a/src/rygel/rygel-http-seek.vala
+++ b/src/rygel/rygel-http-seek.vala
@@ -33,19 +33,22 @@ internal abstract class Rygel.HTTPSeek : GLib.Object {
public int64 start { get; private set; }
public int64 stop { get; private set; }
public int64 length { get; private set; }
+ public int64 total_length { get; private set; }
public HTTPSeek (Soup.Message msg,
int64 start,
int64 stop,
- int64 length) {
+ int64 total_length) {
this.msg = msg;
this.start = start;
this.stop = stop;
- this.length = length;
+ this.total_length = total_length;
if (length > 0) {
this.stop = stop.clamp (start + 1, length - 1);
}
+
+ this.length = stop + 1 - start;
}
public abstract void add_response_headers ();
diff --git a/src/rygel/rygel-http-time-seek.vala b/src/rygel/rygel-http-time-seek.vala
index 4e4fce7..d190541 100644
--- a/src/rygel/rygel-http-time-seek.vala
+++ b/src/rygel/rygel-http-time-seek.vala
@@ -93,9 +93,9 @@ internal class Rygel.HTTPTimeSeek : Rygel.HTTPSeek {
// TimeSeekRange.dlna.org: npt=START_TIME-END_TIME/DURATION
double start = (double) this.start / SECOND;
double stop = (double) this.stop / SECOND;
- double length = (double) this.length / SECOND;
+ double total = (double) this.total_length / SECOND;
- var range = "npt=%.2f-%.2f/%.2f".printf (start, stop, length);
+ var range = "npt=%.2f-%.2f/%.2f".printf (start, stop, total);
this.msg.response_headers.append ("TimeSeekRange.dlna.org", range);
}
diff --git a/tests/rygel-http-byte-seek-test.vala b/tests/rygel-http-byte-seek-test.vala
index 6ed4d2c..d388b0f 100644
--- a/tests/rygel-http-byte-seek-test.vala
+++ b/tests/rygel-http-byte-seek-test.vala
@@ -190,11 +190,11 @@ private class Rygel.HTTPByteSeekTest : GLib.Object {
assert (seek.stop == stop);
if (request.thumbnail != null) {
- assert (seek.length == request.thumbnail.size);
+ assert (seek.total_length == request.thumbnail.size);
} else if (request.subtitle != null) {
- assert (seek.length == request.subtitle.size);
+ assert (seek.total_length == request.subtitle.size);
} else {
- assert (seek.length == request.item.size);
+ assert (seek.total_length == request.item.size);
}
var header = request.msg.response_headers.get ("Accept-Ranges");
@@ -204,6 +204,6 @@ private class Rygel.HTTPByteSeekTest : GLib.Object {
assert (this.range_regex.match (header));
assert (request.msg.response_headers.get_content_length () ==
- seek.stop + 1 - seek.start);
+ seek.length);
}
}
diff --git a/tests/rygel-http-time-seek-test.vala b/tests/rygel-http-time-seek-test.vala
index ce18657..d82f016 100644
--- a/tests/rygel-http-time-seek-test.vala
+++ b/tests/rygel-http-time-seek-test.vala
@@ -176,7 +176,8 @@ private class Rygel.HTTPTimeSeekTest : GLib.Object {
assert (seek != null);
assert (seek.start == start * SECOND);
assert (seek.stop == stop * SECOND);
- assert (seek.length == request.item.duration * SECOND);
+ assert (seek.length == seek.stop + 1 - seek.start);
+ assert (seek.total_length == request.item.duration * SECOND);
var header = request.msg.response_headers.get (
"TimeSeekRange.dlna.org");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]