[rygel] core: Add originalTrackNumber to sortCaps



commit 3cbe62c3b9fd9378c85b34b9bed7eb58f5d71beb
Author: Jens Georg <mail jensge org>
Date:   Wed Jul 20 13:47:09 2011 +0200

    core: Add originalTrackNumber to sortCaps
    
    Needed for XBox music support

 src/rygel/rygel-media-object.vala  |    4 ++++
 src/rygel/rygel-media-objects.vala |    3 ++-
 src/rygel/rygel-music-item.vala    |    3 +++
 3 files changed, 9 insertions(+), 1 deletions(-)
---
diff --git a/src/rygel/rygel-media-object.vala b/src/rygel/rygel-media-object.vala
index 357f45d..1df14e1 100644
--- a/src/rygel/rygel-media-object.vala
+++ b/src/rygel/rygel-media-object.vala
@@ -178,6 +178,10 @@ public abstract class Rygel.MediaObject : GLib.Object {
         }
     }
 
+    protected int compare_int_props (int prop1, int prop2) {
+        return (prop1 - prop2).clamp (-1, 1);
+    }
+
     private async bool check_writable (File file, Cancellable? cancellable)
                                        throws Error {
         if (!file.is_native ()) {
diff --git a/src/rygel/rygel-media-objects.vala b/src/rygel/rygel-media-objects.vala
index 55c69a4..40fb535 100644
--- a/src/rygel/rygel-media-objects.vala
+++ b/src/rygel/rygel-media-objects.vala
@@ -28,7 +28,8 @@ using GUPnP;
  */
 public class Rygel.MediaObjects : ArrayList<MediaObject> {
     public const string SORT_CAPS = "@id,@parentID,dc:title,upnp:class," +
-                                    "dc:artist,dc:author,upnp:album,dc:date";
+                                    "dc:artist,dc:author,upnp:album," +
+                                    "dc:date,upnp:originalTrackNumber";
 
     public override Gee.List<MediaObject>? slice (int start, int stop) {
         var slice = base.slice (start, stop);
diff --git a/src/rygel/rygel-music-item.vala b/src/rygel/rygel-music-item.vala
index 2a8b621..6c997c3 100644
--- a/src/rygel/rygel-music-item.vala
+++ b/src/rygel/rygel-music-item.vala
@@ -85,6 +85,9 @@ public class Rygel.MusicItem : AudioItem {
             return this.compare_string_props (this.artist, item.artist);
         case "upnp:album":
             return this.compare_string_props (this.album, item.album);
+        case "upnp:originalTrackNumber":
+             return this.compare_int_props (this.track_number,
+                                            item.track_number);
         default:
             return base.compare_by_property (item, property);
         }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]