Skip to content
Snippets Groups Projects
Commit 8c40bbbc authored by George Kiagiadakis's avatar George Kiagiadakis
Browse files

endpoint: add GObject properties to access the name, media-class & direction

parent 0bba0c0d
No related branches found
No related tags found
No related merge requests found
......@@ -39,6 +39,13 @@
/* WpEndpoint */
enum {
PROP_0,
PROP_NAME,
PROP_MEDIA_CLASS,
PROP_DIRECTION,
};
enum {
SIGNAL_STREAMS_CHANGED,
N_SIGNALS,
......@@ -77,6 +84,29 @@ wp_endpoint_finalize (GObject * object)
G_OBJECT_CLASS (wp_endpoint_parent_class)->finalize (object);
}
static void
wp_endpoint_get_gobj_property (GObject * object, guint property_id,
GValue * value, GParamSpec * pspec)
{
WpEndpoint *self = WP_ENDPOINT (object);
WpEndpointPrivate *priv = wp_endpoint_get_instance_private (self);
switch (property_id) {
case PROP_NAME:
g_value_set_string (value, priv->info ? priv->info->name : NULL);
break;
case PROP_MEDIA_CLASS:
g_value_set_string (value, priv->info ? priv->info->media_class : NULL);
break;
case PROP_DIRECTION:
g_value_set_enum (value, priv->info ? priv->info->direction : 0);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
}
}
static void
wp_endpoint_on_streams_om_installed (WpObjectManager *streams_om,
WpEndpoint * self)
......@@ -270,6 +300,7 @@ wp_endpoint_class_init (WpEndpointClass * klass)
WpProxyClass *proxy_class = (WpProxyClass *) klass;
object_class->finalize = wp_endpoint_finalize;
object_class->get_property = wp_endpoint_get_gobj_property;
proxy_class->pw_iface_type = PW_TYPE_INTERFACE_Endpoint;
proxy_class->pw_iface_version = PW_VERSION_ENDPOINT;
......@@ -295,6 +326,33 @@ wp_endpoint_class_init (WpEndpointClass * klass)
signals[SIGNAL_STREAMS_CHANGED] = g_signal_new (
"streams-changed", G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0);
/**
* WpEndpoint:name:
*
* The name of the endpoint
*/
g_object_class_install_property (object_class, PROP_NAME,
g_param_spec_string ("name", "name", "name", NULL,
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
/**
* WpEndpoint:media-class:
*
* The media class of the endpoint (ex. "Audio/Sink")
*/
g_object_class_install_property (object_class, PROP_MEDIA_CLASS,
g_param_spec_string ("media-class", "media-class", "media-class", NULL,
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
/**
* WpEndpoint:direction:
*
* The direction of the endpoint
*/
g_object_class_install_property (object_class, PROP_DIRECTION,
g_param_spec_enum ("direction", "direction", "direction",
WP_TYPE_DIRECTION, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
}
/**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment