[grilo] core: Use a hashtable to store metadatakeys
- From: Juan A. Suarez Romero <jasuarez src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [grilo] core: Use a hashtable to store metadatakeys
- Date: Sun, 9 Mar 2014 16:13:32 +0000 (UTC)
commit 1c3bd7f7d76f13c43f7d66d2836adac6f88cabd0
Author: Juan A. Suarez Romero <jasuarez igalia com>
Date: Sun Mar 9 16:11:33 2014 +0000
core: Use a hashtable to store metadatakeys
Do not use a GParamSpecPool for it, as this class does not have a way to free
it.
Instead, use a GHashTable.
src/grl-metadata-key.c | 908 +++++++++++++++++++++++-----------------------
src/grl-registry-priv.h | 8 +-
src/grl-registry.c | 106 +++---
3 files changed, 517 insertions(+), 505 deletions(-)
---
diff --git a/src/grl-metadata-key.c b/src/grl-metadata-key.c
index 2af318b..ec5b73f 100644
--- a/src/grl-metadata-key.c
+++ b/src/grl-metadata-key.c
@@ -37,479 +37,479 @@
void
grl_metadata_key_setup_system_keys (GrlRegistry *registry)
{
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_string ("album",
- "Album",
- "Album the media belongs to",
- NULL,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_ALBUM,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_string ("artist",
- "Artist",
- "Main artist",
- NULL,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_ARTIST,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_string ("author",
- "Author",
- "Creator of the media",
- NULL,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_AUTHOR,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_boxed ("publishing-date",
- "Publishing date",
- "When the media was originally published",
- G_TYPE_DATE_TIME,
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("album",
+ "Album",
+ "Album the media belongs to",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_ALBUM,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("artist",
+ "Artist",
+ "Main artist",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_ARTIST,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("author",
+ "Author",
+ "Creator of the media",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_AUTHOR,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_boxed ("publishing-date",
+ "Publishing date",
+ "When the media was originally published",
+ G_TYPE_DATE_TIME,
+ G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
+ GRL_METADATA_KEY_PUBLICATION_DATE,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("description",
+ "Description",
+ "Description of the media",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_DESCRIPTION,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("genre",
+ "Genre",
+ "Genre of the media",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_GENRE,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("id",
+ "ID",
+ "Identifier of media",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_ID,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("last-played-time",
+ "LastPlayedTime",
+ "Last time the media was played",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_LAST_PLAYED,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("lyrics",
+ "Lyrics",
+ "Song lyrics",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_LYRICS,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("mime-type",
+ "MimeType",
+ "Media mime type",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_MIME,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("site",
+ "Site",
+ "Site",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_SITE,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("source",
+ "Source",
+ "Source ID providing the content",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_SOURCE,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("thumbnail",
+ "Thumbnail",
+ "Thumbnail image",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_THUMBNAIL,
+ NULL);
+
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_boxed ("thumbnail-binary",
+ "Thumbnail Binary",
+ "Thumbnail binary image",
+ G_TYPE_BYTE_ARRAY,
+ G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
+ GRL_METADATA_KEY_THUMBNAIL_BINARY,
+
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("title",
+ "Title",
+ "Title of the media",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_TITLE,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("url",
+ "URL",
+ "Media URL",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_URL,
+ NULL);
+
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("external-url",
+ "External URL",
+ "External location where the media can be
played back, usually a website",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_EXTERNAL_URL,
+ NULL);
+
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("external-player",
+ "External Player URL",
+ "URL of an external player that can be
used to play the resource (usually a Flash player)",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_EXTERNAL_PLAYER,
+ NULL);
+
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("studio",
+ "Studio",
+ "Studio the media is from",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_STUDIO,
+ NULL);
+
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("certificate",
+ "Certificate",
+ "Age certificate of the media",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_CERTIFICATE,
+ NULL);
+
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("license",
+ "License",
+ "The license of the media",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_LICENSE,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_int ("bitrate",
+ "Bitrate",
+ "Media bitrate in KBits/s",
+ 0, G_MAXINT,
+ 0,
G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_PUBLICATION_DATE,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_string ("description",
- "Description",
- "Description of the media",
- NULL,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_DESCRIPTION,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_string ("genre",
- "Genre",
- "Genre of the media",
- NULL,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_GENRE,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_string ("id",
- "ID",
- "Identifier of media",
- NULL,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_ID,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_string ("last-played-time",
- "LastPlayedTime",
- "Last time the media was played",
- NULL,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_LAST_PLAYED,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_string ("lyrics",
- "Lyrics",
- "Song lyrics",
- NULL,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_LYRICS,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_string ("mime-type",
- "MimeType",
- "Media mime type",
- NULL,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_MIME,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_string ("site",
- "Site",
- "Site",
- NULL,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_SITE,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_string ("source",
- "Source",
- "Source ID providing the content",
- NULL,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_SOURCE,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_string ("thumbnail",
- "Thumbnail",
- "Thumbnail image",
- NULL,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_THUMBNAIL,
- NULL);
-
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_boxed ("thumbnail-binary",
- "Thumbnail Binary",
- "Thumbnail binary image",
- G_TYPE_BYTE_ARRAY,
+ GRL_METADATA_KEY_BITRATE,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_int ("childcount",
+ "Childcount",
+ "Number of items contained in a container",
+ -1, G_MAXINT,
+ GRL_METADATA_KEY_CHILDCOUNT_UNKNOWN,
G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_THUMBNAIL_BINARY,
-
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_string ("title",
- "Title",
- "Title of the media",
- NULL,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_TITLE,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_string ("url",
- "URL",
- "Media URL",
- NULL,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_URL,
- NULL);
-
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_string ("external-url",
- "External URL",
- "External location where the media can be
played back, usually a website",
- NULL,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_EXTERNAL_URL,
- NULL);
-
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_string ("external-player",
- "External Player URL",
- "URL of an external player that can be used
to play the resource (usually a Flash player)",
- NULL,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_EXTERNAL_PLAYER,
- NULL);
-
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_string ("studio",
- "Studio",
- "Studio the media is from",
- NULL,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_STUDIO,
- NULL);
-
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_string ("certificate",
- "Certificate",
- "Age certificate of the media",
- NULL,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_CERTIFICATE,
- NULL);
-
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_string ("license",
- "License",
- "The license of the media",
- NULL,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_LICENSE,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_int ("bitrate",
- "Bitrate",
- "Media bitrate in KBits/s",
- 0, G_MAXINT,
- 0,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_BITRATE,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_int ("childcount",
- "Childcount",
- "Number of items contained in a container",
- -1, G_MAXINT,
- GRL_METADATA_KEY_CHILDCOUNT_UNKNOWN,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_CHILDCOUNT,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_int ("duration",
- "Duration",
- "Media duration in seconds",
- 0, G_MAXINT,
- 0,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_DURATION,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_int ("height",
- "Height",
- "Height of media ('y' axis)",
- 0, G_MAXINT,
- 0,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_HEIGHT,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_int ("playback-interrupted-time",
- "PlaybackInterruptedTime",
- "Time at which playback was interrupted",
- 0, G_MAXINT,
- 0,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_LAST_POSITION,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_int ("play-count",
- "PlayCount",
- "How many times media was played",
- 0, G_MAXINT,
- 0,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_PLAY_COUNT,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_int ("width",
- "Width",
- "Width of media ('x' axis)",
- 0, G_MAXINT,
- 0,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_WIDTH,
- NULL);
-
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_float ("framerate",
- "Framerate",
- "Frames per second",
- 0, G_MAXFLOAT,
+ GRL_METADATA_KEY_CHILDCOUNT,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_int ("duration",
+ "Duration",
+ "Media duration in seconds",
+ 0, G_MAXINT,
0,
G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_FRAMERATE,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_float ("rating",
- "Rating",
- "Media rating",
- 0, G_MAXFLOAT,
+ GRL_METADATA_KEY_DURATION,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_int ("height",
+ "Height",
+ "Height of media ('y' axis)",
+ 0, G_MAXINT,
0,
G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_RATING,
- NULL);
-
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_int ("season",
- "Season",
- "Season of a show",
- 0, G_MAXINT,
- 0,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_SEASON,
- NULL);
-
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_int ("episode",
- "Episode",
- "Episode of a show",
- 0, G_MAXINT,
- 0,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_EPISODE,
- NULL);
-
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_string ("show",
- "Show",
- "Name of a show",
- NULL,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_SHOW,
- NULL);
-
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_boxed ("creation-date",
- "Creation date",
- "Creation date",
- G_TYPE_DATE_TIME,
+ GRL_METADATA_KEY_HEIGHT,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_int ("playback-interrupted-time",
+ "PlaybackInterruptedTime",
+ "Time at which playback was interrupted",
+ 0, G_MAXINT,
+ 0,
G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_CREATION_DATE,
- NULL);
-
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_string ("camera-model",
- "Camera model",
- "Name of the camera model used to take the
photo",
- NULL,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_CAMERA_MODEL,
- NULL);
-
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_int ("orientation",
- "Picture orientation",
- "Orientation of the photo in degree
(clockwise)",
- 0, 359,
- 0,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_ORIENTATION,
- NULL);
-
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_boolean ("flash-used",
- "Flash used",
- "Whether or not a flash was used to take
that picture",
- FALSE,
+ GRL_METADATA_KEY_LAST_POSITION,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_int ("play-count",
+ "PlayCount",
+ "How many times media was played",
+ 0, G_MAXINT,
+ 0,
+ G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
+ GRL_METADATA_KEY_PLAY_COUNT,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_int ("width",
+ "Width",
+ "Width of media ('x' axis)",
+ 0, G_MAXINT,
+ 0,
+ G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
+ GRL_METADATA_KEY_WIDTH,
+ NULL);
+
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_float ("framerate",
+ "Framerate",
+ "Frames per second",
+ 0, G_MAXFLOAT,
+ 0,
G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_FLASH_USED,
- NULL);
+ GRL_METADATA_KEY_FRAMERATE,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_float ("rating",
+ "Rating",
+ "Media rating",
+ 0, G_MAXFLOAT,
+ 0,
+ G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
+ GRL_METADATA_KEY_RATING,
+ NULL);
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_float ("exposure-time",
- "Exposure time",
- "Exposure time of the photo in seconds",
- 0, G_MAXFLOAT,
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_int ("season",
+ "Season",
+ "Season of a show",
+ 0, G_MAXINT,
0,
G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_EXPOSURE_TIME,
- NULL);
+ GRL_METADATA_KEY_SEASON,
+ NULL);
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_float ("iso-speed",
- "ISO speed",
- "Photographic film's sensitivity to light as
ISO value",
- 0, G_MAXFLOAT,
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_int ("episode",
+ "Episode",
+ "Episode of a show",
+ 0, G_MAXINT,
0,
G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_ISO_SPEED,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_int ("track-number",
- "Track number",
- "Track number inside the album",
- 1, G_MAXINT,
- 1,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_TRACK_NUMBER,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_boxed ("modification-date",
- "Modification date",
- "When the media was last modified",
- G_TYPE_DATE_TIME,
+ GRL_METADATA_KEY_EPISODE,
+ NULL);
+
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("show",
+ "Show",
+ "Name of a show",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_SHOW,
+ NULL);
+
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_boxed ("creation-date",
+ "Creation date",
+ "Creation date",
+ G_TYPE_DATE_TIME,
+ G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
+ GRL_METADATA_KEY_CREATION_DATE,
+ NULL);
+
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("camera-model",
+ "Camera model",
+ "Name of the camera model used to take the
photo",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_CAMERA_MODEL,
+ NULL);
+
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_int ("orientation",
+ "Picture orientation",
+ "Orientation of the photo in degree
(clockwise)",
+ 0, 359,
+ 0,
G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_MODIFICATION_DATE,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_float ("start-time",
- "Start Time",
- "Start offset in seconds relative to
container",
- 0.0, G_MAXFLOAT,
- 0.0,
+ GRL_METADATA_KEY_ORIENTATION,
+ NULL);
+
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_boolean ("flash-used",
+ "Flash used",
+ "Whether or not a flash was used to take
that picture",
+ FALSE,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_FLASH_USED,
+ NULL);
+
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_float ("exposure-time",
+ "Exposure time",
+ "Exposure time of the photo in seconds",
+ 0, G_MAXFLOAT,
+ 0,
+ G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
+ GRL_METADATA_KEY_EXPOSURE_TIME,
+ NULL);
+
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_float ("iso-speed",
+ "ISO speed",
+ "Photographic film's sensitivity to light
as ISO value",
+ 0, G_MAXFLOAT,
+ 0,
+ G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
+ GRL_METADATA_KEY_ISO_SPEED,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_int ("track-number",
+ "Track number",
+ "Track number inside the album",
+ 1, G_MAXINT,
+ 1,
G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_START_TIME,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_boolean ("favourite",
- "Favourite",
- "Whether or not the element was marked as
favourite",
- FALSE,
+ GRL_METADATA_KEY_TRACK_NUMBER,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_boxed ("modification-date",
+ "Modification date",
+ "When the media was last modified",
+ G_TYPE_DATE_TIME,
+ G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
+ GRL_METADATA_KEY_MODIFICATION_DATE,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_float ("start-time",
+ "Start Time",
+ "Start offset in seconds relative to
container",
+ 0.0, G_MAXFLOAT,
+ 0.0,
G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_FAVOURITE,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_string ("region",
- "Region",
- "Region in which the media was published",
- NULL,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_REGION,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_string ("keyword",
- "keyword",
- "A keyword describing the media",
- NULL,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_KEYWORD,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_string ("performer",
- "performer",
- "An actor performing in the movie",
- NULL,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_PERFORMER,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_string ("producer",
- "Producer",
- "Producer of the movie",
- NULL,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_PRODUCER,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_string ("director",
- "Director",
- "Director of the movie",
- NULL,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_DIRECTOR,
- NULL);
-
- grl_registry_register_metadata_key_full (registry,
- g_param_spec_string ("original-title",
- "Original Title",
- "Original, untranslated title of the movie",
- NULL,
- G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
- GRL_METADATA_KEY_ORIGINAL_TITLE,
- NULL);
+ GRL_METADATA_KEY_START_TIME,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_boolean ("favourite",
+ "Favourite",
+ "Whether or not the element was marked as
favourite",
+ FALSE,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_FAVOURITE,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("region",
+ "Region",
+ "Region in which the media was published",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_REGION,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("keyword",
+ "keyword",
+ "A keyword describing the media",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_KEYWORD,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("performer",
+ "performer",
+ "An actor performing in the movie",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_PERFORMER,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("producer",
+ "Producer",
+ "Producer of the movie",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_PRODUCER,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("director",
+ "Director",
+ "Director of the movie",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_DIRECTOR,
+ NULL);
+
+ grl_registry_register_metadata_key_system (registry,
+ g_param_spec_string ("original-title",
+ "Original Title",
+ "Original, untranslated title of the
movie",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
G_PARAM_READWRITE),
+ GRL_METADATA_KEY_ORIGINAL_TITLE,
+ NULL);
/* Create the relations */
grl_registry_register_metadata_key_relation (registry,
diff --git a/src/grl-registry-priv.h b/src/grl-registry-priv.h
index 9bdb562..378ecbd 100644
--- a/src/grl-registry-priv.h
+++ b/src/grl-registry-priv.h
@@ -29,10 +29,10 @@ void
grl_registry_restrict_plugins (GrlRegistry *registry,
gchar **plugins);
-GrlKeyID grl_registry_register_metadata_key_full (GrlRegistry *registry,
- GParamSpec *param_spec,
- GrlKeyID key,
- GError **error);
+GrlKeyID grl_registry_register_metadata_key_system (GrlRegistry *registry,
+ GParamSpec *param_spec,
+ GrlKeyID key,
+ GError **error);
void grl_registry_shutdown (GrlRegistry *registry);
diff --git a/src/grl-registry.c b/src/grl-registry.c
index 0572597..4797bf2 100644
--- a/src/grl-registry.c
+++ b/src/grl-registry.c
@@ -79,7 +79,7 @@ struct _GrlRegistryPrivate {
GHashTable *plugins;
GHashTable *sources;
GHashTable *related_keys;
- GParamSpecPool *system_keys;
+ GHashTable *system_keys;
GHashTable *ranks;
GSList *plugins_dir;
GSList *allowed_plugins;
@@ -178,7 +178,7 @@ grl_registry_init (GrlRegistry *registry)
registry->priv->related_keys =
g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, NULL);
registry->priv->system_keys =
- g_param_spec_pool_new (FALSE);
+ g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_param_spec_unref);
key_id_handler_init (®istry->priv->key_id_handler);
@@ -510,6 +510,46 @@ grl_registry_load_plugin_list (GrlRegistry *registry,
return loaded_one;
}
+static GrlKeyID
+grl_registry_register_metadata_key_full (GrlRegistry *registry,
+ GParamSpec *param_spec,
+ GrlKeyID key,
+ GError **error)
+{
+ const gchar *key_name;
+
+ g_return_val_if_fail (GRL_IS_REGISTRY (registry), 0);
+ g_return_val_if_fail (G_IS_PARAM_SPEC (param_spec), 0);
+ GrlKeyID registered_key;
+
+ key_name = g_param_spec_get_name (param_spec);
+
+ registered_key = key_id_handler_add (®istry->priv->key_id_handler, key, key_name);
+
+ if (registered_key == GRL_METADATA_KEY_INVALID) {
+ GRL_WARNING ("metadata key '%s' cannot be registered", key_name);
+ g_set_error (error,
+ GRL_CORE_ERROR,
+ GRL_CORE_ERROR_REGISTER_METADATA_KEY_FAILED,
+ _("Metadata key '%s' cannot be registered"),
+ key_name);
+
+ return GRL_METADATA_KEY_INVALID;
+ }
+
+ g_hash_table_insert (registry->priv->system_keys,
+ (gpointer) key_name,
+ g_param_spec_ref (param_spec));
+
+ /* Each key is related to itself */
+ g_hash_table_insert (registry->priv->related_keys,
+ GRLKEYID_TO_POINTER (registered_key),
+ g_list_prepend (NULL,
+ GRLKEYID_TO_POINTER (registered_key)));
+
+ return registered_key;
+}
+
static void
key_id_handler_init (struct KeyIDHandler *handler)
{
@@ -707,6 +747,7 @@ grl_registry_shutdown (GrlRegistry *registry)
g_slist_free_full (registry->priv->allowed_plugins, (GDestroyNotify) g_free);
key_id_handler_free (®istry->priv->key_id_handler);
+ g_clear_pointer (®istry->priv->system_keys, g_hash_table_unref);
g_object_unref (registry);
}
@@ -1346,7 +1387,7 @@ grl_registry_register_metadata_key (GrlRegistry *registry,
}
/*
- * grl_registry_register_metadata_key_full:
+ * grl_registry_register_metadata_key_system:
*
* This is an internal method only meant to be used to register core
* keys.
@@ -1355,45 +1396,22 @@ grl_registry_register_metadata_key (GrlRegistry *registry,
* grl_registry_register_metadata_key().
*/
GrlKeyID
-grl_registry_register_metadata_key_full (GrlRegistry *registry,
- GParamSpec *param_spec,
- GrlKeyID key,
- GError **error)
+grl_registry_register_metadata_key_system (GrlRegistry *registry,
+ GParamSpec *param_spec,
+ GrlKeyID key,
+ GError **error)
{
- const gchar *key_name;
-
- g_return_val_if_fail (GRL_IS_REGISTRY (registry), 0);
- g_return_val_if_fail (G_IS_PARAM_SPEC (param_spec), 0);
GrlKeyID registered_key;
- key_name = g_param_spec_get_name (param_spec);
-
- registered_key = key_id_handler_add (®istry->priv->key_id_handler, key, key_name);
-
- if (registered_key == GRL_METADATA_KEY_INVALID) {
- GRL_WARNING ("metadata key '%s' cannot be registered", key_name);
- g_set_error (error,
- GRL_CORE_ERROR,
- GRL_CORE_ERROR_REGISTER_METADATA_KEY_FAILED,
- _("Metadata key '%s' cannot be registered"),
- key_name);
-
- return GRL_METADATA_KEY_INVALID;
- }
-
- g_param_spec_pool_insert (registry->priv->system_keys,
- param_spec,
- GRL_TYPE_MEDIA);
- /* Each key is related to itself */
- g_hash_table_insert (registry->priv->related_keys,
- GRLKEYID_TO_POINTER (registered_key),
- g_list_prepend (NULL,
- GRLKEYID_TO_POINTER (registered_key)));
+ registered_key = grl_registry_register_metadata_key_full (registry,
+ param_spec,
+ key,
+ error);
+ g_param_spec_unref (param_spec);
return registered_key;
}
-
/**
* grl_registry_register_metadata_key_relation:
* @registry: the plugin registry
@@ -1512,10 +1530,8 @@ grl_registry_lookup_metadata_key_desc (GrlRegistry *registry,
if (!key_name) {
return NULL;
}
- key_pspec = g_param_spec_pool_lookup (registry->priv->system_keys,
- key_name,
- GRL_TYPE_MEDIA,
- FALSE);
+ key_pspec = g_hash_table_lookup (registry->priv->system_keys, key_name);
+
if (key_pspec) {
return g_param_spec_get_blurb (key_pspec);
} else {
@@ -1547,10 +1563,8 @@ grl_registry_lookup_metadata_key_type (GrlRegistry *registry,
if (!key_name) {
return G_TYPE_INVALID;
}
- key_pspec = g_param_spec_pool_lookup (registry->priv->system_keys,
- key_name,
- GRL_TYPE_MEDIA,
- FALSE);
+ key_pspec = g_hash_table_lookup (registry->priv->system_keys, key_name);
+
if (key_pspec) {
return G_PARAM_SPEC_VALUE_TYPE (key_pspec);
} else {
@@ -1587,10 +1601,8 @@ grl_registry_metadata_key_validate (GrlRegistry *registry,
if (!key_name) {
return FALSE;
}
- key_pspec = g_param_spec_pool_lookup (registry->priv->system_keys,
- key_name,
- GRL_TYPE_MEDIA,
- FALSE);
+ key_pspec = g_hash_table_lookup (registry->priv->system_keys, key_name);
+
if (key_pspec) {
return !g_param_value_validate (key_pspec, value);
} else {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]