[rygel] core: get rid of parentless media item
- From: Zeeshan Ali Khattak <zeeshanak src gnome org>
- To: svn-commits-list gnome org
- Subject: [rygel] core: get rid of parentless media item
- Date: Thu, 25 Jun 2009 15:47:10 +0000 (UTC)
commit a53371cef90e32f1ce1e195ffdfd547fd37c8575
Author: Jens Georg <mail jensge org>
Date: Wed Jun 24 21:58:05 2009 +0200
core: get rid of parentless media item
src/rygel/rygel-media-db-object-factory.vala | 3 ++-
src/rygel/rygel-media-db.vala | 19 ++++++++++++++-----
src/rygel/rygel-media-object.vala | 1 +
3 files changed, 17 insertions(+), 6 deletions(-)
---
diff --git a/src/rygel/rygel-media-db-object-factory.vala b/src/rygel/rygel-media-db-object-factory.vala
index b655d89..a05a980 100644
--- a/src/rygel/rygel-media-db-object-factory.vala
+++ b/src/rygel/rygel-media-db-object-factory.vala
@@ -61,9 +61,10 @@ public class Rygel.MediaDBObjectFactory : Object {
* @param upnp_class upnp_class of the item
*/
public virtual MediaItem get_item (Rygel.MediaDB media_db,
+ MediaContainer parent,
string id,
string title,
string upnp_class) {
- return new MediaItem (id, null, title, upnp_class);
+ return new MediaItem (id, parent, title, upnp_class);
}
}
diff --git a/src/rygel/rygel-media-db.vala b/src/rygel/rygel-media-db.vala
index 0012380..1241358 100644
--- a/src/rygel/rygel-media-db.vala
+++ b/src/rygel/rygel-media-db.vala
@@ -95,7 +95,8 @@ public class Rygel.MediaDB : Object {
"Meta_Data.class, Meta_Data.author, Meta_Data.album, " +
"Meta_Data.date, Meta_Data.bitrate, Meta_Data.sample_freq, " +
"Meta_Data.bits_per_sample, Meta_Data.channels, " +
- "Meta_Data.track, Meta_Data.color_depth, Meta_Data.duration " +
+ "Meta_Data.track, Meta_Data.color_depth, Meta_Data.duration, " +
+ "Object.parent " +
"FROM Object LEFT OUTER JOIN Meta_Data " +
"ON Object.metadata_fk = Meta_Data.id WHERE Object.upnp_id = ?";
@@ -106,7 +107,7 @@ public class Rygel.MediaDB : Object {
"Meta_Data.date, Meta_Data.bitrate, Meta_Data.sample_freq, " +
"Meta_Data.bits_per_sample, Meta_Data.channels, " +
"Meta_Data.track, Meta_Data.color_depth, Meta_Data.duration, " +
- "upnp_id " +
+ "upnp_id, Object.parent " +
"FROM Object LEFT OUTER JOIN Meta_Data " +
"ON Object.metadata_fk = Meta_Data.id " +
"WHERE Object.parent = ? " +
@@ -367,7 +368,7 @@ public class Rygel.MediaDB : Object {
}
}
- private MediaObject? get_object_from_statement (string object_id, Statement statement) {
+ private MediaObject? get_object_from_statement (MediaContainer? parent, string object_id, Statement statement) {
MediaObject obj = null;
switch (statement.column_int (0)) {
case 0:
@@ -380,6 +381,7 @@ public class Rygel.MediaDB : Object {
case 1:
// this is an item
obj = factory.get_item (this,
+ parent,
object_id,
statement.column_text (1),
statement.column_text (6));
@@ -408,7 +410,10 @@ public class Rygel.MediaDB : Object {
if (rc == Sqlite.OK) {
statement.bind_text (1, object_id);
while ((rc = statement.step ()) == Sqlite.ROW) {
- obj = get_object_from_statement (object_id, statement);
+ var parent = get_object (statement.column_text (17));
+ obj = get_object_from_statement ((MediaContainer)parent, object_id, statement);
+ obj.parent_ref = (MediaContainer)parent;
+ obj.parent = obj.parent_ref;
break;
}
} else {
@@ -475,7 +480,11 @@ public class Rygel.MediaDB : Object {
statement.bind_int64 (3, (int64)max_count);
while ((rc = statement.step ()) == Sqlite.ROW) {
var child_id = statement.column_text (17);
- children.add (get_object_from_statement (child_id, statement));
+ var parent = get_object (statement.column_text (18));
+ children.add (get_object_from_statement
+ ((MediaContainer)parent, child_id, statement));
+ children[children.size - 1].parent = (MediaContainer)parent;
+ children[children.size - 1].parent_ref = (MediaContainer)parent;
}
}
diff --git a/src/rygel/rygel-media-object.vala b/src/rygel/rygel-media-object.vala
index c2adcf6..d6b1b9b 100644
--- a/src/rygel/rygel-media-object.vala
+++ b/src/rygel/rygel-media-object.vala
@@ -41,6 +41,7 @@ public abstract class Rygel.MediaObject : GLib.Object {
// mandatory.
public unowned MediaContainer parent;
public MediaContainer parent_ref;
+
construct {
uris = new ArrayList<string> ();
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]