[grilo] core: Use a hashtable to store metadatakeys



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 (&registry->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 (&registry->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 (&registry->priv->key_id_handler);
+  g_clear_pointer (&registry->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 (&registry->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]