[rygel/wip/gobject: 35/35] server: Media items and containers to GObject-style.
- From: Krzesimir Nowak <krnowak src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [rygel/wip/gobject: 35/35] server: Media items and containers to GObject-style.
- Date: Tue, 15 Jan 2013 14:16:43 +0000 (UTC)
commit 9ae60eab944b3ea252e688e37525d0d55258f5b5
Author: Krzesimir Nowak <krnowak openismus com>
Date: Tue Jan 15 15:14:58 2013 +0100
server: Media items and containers to GObject-style.
src/librygel-server/rygel-audio-item.vala | 5 +++-
src/librygel-server/rygel-image-item.vala | 9 +++++-
src/librygel-server/rygel-media-container.vala | 28 ++++++++++++-------
src/librygel-server/rygel-media-item.vala | 21 +++++++++-----
src/librygel-server/rygel-media-object.vala | 23 ++++++++++++---
src/librygel-server/rygel-music-item.vala | 7 +++-
src/librygel-server/rygel-photo-item.vala | 5 +++-
src/librygel-server/rygel-playlist-item.vala | 5 +++-
src/librygel-server/rygel-video-item.vala | 9 +++++-
src/plugins/external/rygel-external-container.vala | 4 +-
10 files changed, 84 insertions(+), 32 deletions(-)
---
diff --git a/src/librygel-server/rygel-audio-item.vala b/src/librygel-server/rygel-audio-item.vala
index 24b34a1..5882ea5 100644
--- a/src/librygel-server/rygel-audio-item.vala
+++ b/src/librygel-server/rygel-audio-item.vala
@@ -41,7 +41,10 @@ public class Rygel.AudioItem : MediaItem {
MediaContainer parent,
string title,
string upnp_class = AudioItem.UPNP_CLASS) {
- base (id, parent, title, upnp_class);
+ Object (id : id,
+ parent : parent,
+ title : title,
+ upnp_class : upnp_class);
}
public override bool streamable () {
diff --git a/src/librygel-server/rygel-image-item.vala b/src/librygel-server/rygel-image-item.vala
index 07b12be..55503c6 100644
--- a/src/librygel-server/rygel-image-item.vala
+++ b/src/librygel-server/rygel-image-item.vala
@@ -62,7 +62,14 @@ public class Rygel.ImageItem : MediaItem, VisualItem {
MediaContainer parent,
string title,
string upnp_class = ImageItem.UPNP_CLASS) {
- base (id, parent, title, upnp_class);
+ Object (id : id,
+ parent : parent,
+ title : title,
+ upnp_class : upnp_class);
+ }
+
+ public override void constructed () {
+ base.constructed ();
this.thumbnails = new ArrayList<Thumbnail> ();
}
diff --git a/src/librygel-server/rygel-media-container.vala b/src/librygel-server/rygel-media-container.vala
index 23b997a..2e5b127 100644
--- a/src/librygel-server/rygel-media-container.vala
+++ b/src/librygel-server/rygel-media-container.vala
@@ -84,7 +84,7 @@ public abstract class Rygel.MediaContainer : MediaObject {
*/
public signal void sub_tree_updates_finished (MediaObject sub_tree_root);
- public int child_count;
+ public int child_count { get; set construct; }
public uint32 update_id;
public int64 storage_used;
@@ -133,10 +133,23 @@ public abstract class Rygel.MediaContainer : MediaObject {
MediaContainer? parent,
string title,
int child_count) {
- this.id = id;
- this.parent = parent;
- this.title = title;
- this.child_count = child_count;
+ Object (id : id,
+ parent : parent,
+ title : title,
+ child_count : child_count);
+ }
+
+ public MediaContainer.root (string title,
+ int child_count) {
+ Object (id : "0",
+ parent : null,
+ title : title,
+ child_count : child_count);
+ }
+
+ public override void constructed () {
+ base.constructed ();
+
this.update_id = 0;
this.storage_used = -1;
this.total_deleted_child_count = 0;
@@ -146,11 +159,6 @@ public abstract class Rygel.MediaContainer : MediaObject {
this.sub_tree_updates_finished.connect (on_sub_tree_updates_finished);
}
- public MediaContainer.root (string title,
- int child_count) {
- this ("0", null, title, child_count);
- }
-
/**
* Fetches the list of media objects directly under this container.
*
diff --git a/src/librygel-server/rygel-media-item.vala b/src/librygel-server/rygel-media-item.vala
index 9677258..e42c291 100644
--- a/src/librygel-server/rygel-media-item.vala
+++ b/src/librygel-server/rygel-media-item.vala
@@ -89,19 +89,21 @@ public abstract class Rygel.MediaItem : MediaObject {
}
}
- protected Regex address_regex;
+ protected static Regex address_regex;
public MediaItem (string id,
MediaContainer parent,
string title,
string upnp_class) {
- this.id = id;
- this.parent = parent;
- this.title = title;
- this.upnp_class = upnp_class;
+ Object (id : id,
+ parent : parent,
+ title : title,
+ upnp_class : upnp_class);
+ }
+ static construct {
try {
- this.address_regex = new Regex (Regex.escape_string ("@ADDRESS@"));
+ address_regex = new Regex (Regex.escape_string ("@ADDRESS@"));
} catch (GLib.RegexError err) {
assert_not_reached ();
}
@@ -117,7 +119,7 @@ public abstract class Rygel.MediaItem : MediaObject {
string translated_uri = this.uris.get (0);
if (host_ip != null) {
try {
- translated_uri = this.address_regex.replace_literal
+ translated_uri = MediaItem.address_regex.replace_literal
(this.uris.get (0), -1, 0, host_ip);
} catch (Error error) {
assert_not_reached ();
@@ -260,7 +262,10 @@ public abstract class Rygel.MediaItem : MediaObject {
this.add_resources (didl_item, internal_allowed);
foreach (var res in didl_item.get_resources ()) {
- res.uri = this.address_regex.replace_literal (res.uri, -1, 0, host_ip);
+ res.uri = MediaItem.address_regex.replace_literal (res.uri,
+ -1,
+ 0,
+ host_ip);
}
}
diff --git a/src/librygel-server/rygel-media-object.vala b/src/librygel-server/rygel-media-object.vala
index dc4f0b9..ecd0c37 100644
--- a/src/librygel-server/rygel-media-object.vala
+++ b/src/librygel-server/rygel-media-object.vala
@@ -38,9 +38,9 @@ public abstract class Rygel.MediaObject : GLib.Object {
private static Regex user_name_regex;
private static Regex host_name_regex;
- public string id { get; set; }
+ public string id { get; set construct; }
public string ref_id { get; set; }
- public string upnp_class { get; set; }
+ public string upnp_class { get; construct set; }
public uint64 modified { get; set; }
public uint object_update_id { get; set; }
@@ -57,7 +57,18 @@ public abstract class Rygel.MediaObject : GLib.Object {
//
// You must set 'parent' if you set 'parent_ref' but the opposite is not
// mandatory.
- public unowned MediaContainer parent; // TODO: Turn this into a property?
+ public unowned MediaContainer parent {
+ get {
+ return this.parent_ptr;
+ }
+
+ set construct {
+ this.parent_ptr = value;
+ }
+ }
+ // This one is needed only because external plugin needs to access
+ // the address of the parent to add weak pointer.
+ public unowned MediaContainer parent_ptr;
private MediaContainer _parent_ref;
public MediaContainer parent_ref {
get {
@@ -76,7 +87,7 @@ public abstract class Rygel.MediaObject : GLib.Object {
return _title;
}
- set {
+ set construct {
try {
this._title = real_name_regex.replace_literal
(value,
@@ -117,7 +128,9 @@ public abstract class Rygel.MediaObject : GLib.Object {
}
}
- construct {
+ public override void constructed () {
+ base.constructed ();
+
uris = new ArrayList<string> ();
}
diff --git a/src/librygel-server/rygel-music-item.vala b/src/librygel-server/rygel-music-item.vala
index f51883c..288c229 100644
--- a/src/librygel-server/rygel-music-item.vala
+++ b/src/librygel-server/rygel-music-item.vala
@@ -43,7 +43,10 @@ public class Rygel.MusicItem : AudioItem {
MediaContainer parent,
string title,
string upnp_class = MusicItem.UPNP_CLASS) {
- base (id, parent, title, upnp_class);
+ Object (id : id,
+ parent : parent,
+ title : title,
+ upnp_class : upnp_class);
}
public void lookup_album_art () {
@@ -136,7 +139,7 @@ public class Rygel.MusicItem : AudioItem {
}
if (didl_item.album_art != null) {
- didl_item.album_art = this.address_regex.replace_literal
+ didl_item.album_art = MediaItem.address_regex.replace_literal
(didl_item.album_art,
-1,
0,
diff --git a/src/librygel-server/rygel-photo-item.vala b/src/librygel-server/rygel-photo-item.vala
index b344e08..a83102e 100644
--- a/src/librygel-server/rygel-photo-item.vala
+++ b/src/librygel-server/rygel-photo-item.vala
@@ -39,7 +39,10 @@ public class Rygel.PhotoItem : ImageItem {
MediaContainer parent,
string title,
string upnp_class = PhotoItem.UPNP_CLASS) {
- base (id, parent, title, upnp_class);
+ Object (id : id,
+ parent : parent,
+ title : title,
+ upnp_class : upnp_class);
}
internal override int compare_by_property (MediaObject media_object,
diff --git a/src/librygel-server/rygel-playlist-item.vala b/src/librygel-server/rygel-playlist-item.vala
index 0a416bf..60175fd 100644
--- a/src/librygel-server/rygel-playlist-item.vala
+++ b/src/librygel-server/rygel-playlist-item.vala
@@ -36,7 +36,10 @@ public class Rygel.PlaylistItem : MediaItem {
MediaContainer parent,
string title,
string upnp_class = PlaylistItem.UPNP_CLASS) {
- base (id, parent, title, upnp_class);
+ Object (id : id,
+ parent : parent,
+ title : title,
+ upnp_class : upnp_class);
}
public override bool streamable () {
diff --git a/src/librygel-server/rygel-video-item.vala b/src/librygel-server/rygel-video-item.vala
index 93f61a1..38082c0 100644
--- a/src/librygel-server/rygel-video-item.vala
+++ b/src/librygel-server/rygel-video-item.vala
@@ -67,7 +67,14 @@ public class Rygel.VideoItem : AudioItem, VisualItem {
MediaContainer parent,
string title,
string upnp_class = VideoItem.UPNP_CLASS) {
- base (id, parent, title, upnp_class);
+ Object (id : id,
+ parent : parent,
+ title : title,
+ upnp_class : upnp_class);
+ }
+
+ public override void constructed () {
+ base.constructed ();
this.thumbnails = new ArrayList<Thumbnail> ();
this.subtitles = new ArrayList<Subtitle> ();
diff --git a/src/plugins/external/rygel-external-container.vala b/src/plugins/external/rygel-external-container.vala
index 128068f..fca762c 100644
--- a/src/plugins/external/rygel-external-container.vala
+++ b/src/plugins/external/rygel-external-container.vala
@@ -64,13 +64,13 @@ public class Rygel.External.Container : Rygel.MediaContainer,
this.update_container.begin (true);
if (parent != null) {
- parent.add_weak_pointer (&this.parent);
+ parent.add_weak_pointer (&this.parent_ptr);
}
}
~Container() {
if (this.parent != null) {
- this.parent.remove_weak_pointer (&this.parent);
+ this.parent.remove_weak_pointer (&this.parent_ptr);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]