mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-10 17:35:59 +00:00
libs/gst/net/gstnettimeprovider.c (gst_net_time_provider_class_init, gst_net_time_provider_init) (gst_net_time_provid...
Original commit message from CVS: 2005-12-12 Andy Wingo <wingo@pobox.com> * libs/gst/net/gstnettimeprovider.c (gst_net_time_provider_class_init, gst_net_time_provider_init) (gst_net_time_provider_set_property) (gst_net_time_provider_get_property): Export "active" as a GObject property. (gst_net_time_provider_thread): Only respond to time queries if the time provider is active. * libs/gst/net/gstnettimeprovider.h: Add an "active" boolean to NetTimeProvider, preserving binary compat.
This commit is contained in:
parent
a84923e6cc
commit
6c96798fd2
3 changed files with 42 additions and 8 deletions
13
ChangeLog
13
ChangeLog
|
@ -1,3 +1,16 @@
|
|||
2005-12-12 Andy Wingo <wingo@pobox.com>
|
||||
|
||||
* libs/gst/net/gstnettimeprovider.c
|
||||
(gst_net_time_provider_class_init, gst_net_time_provider_init)
|
||||
(gst_net_time_provider_set_property)
|
||||
(gst_net_time_provider_get_property): Export "active" as a GObject
|
||||
property.
|
||||
(gst_net_time_provider_thread): Only respond to time queries if
|
||||
the time provider is active.
|
||||
|
||||
* libs/gst/net/gstnettimeprovider.h: Add an "active" boolean to
|
||||
NetTimeProvider, preserving binary compat.
|
||||
|
||||
2005-12-12 Stefan Kost <ensonic@users.sf.net>
|
||||
|
||||
* tests/examples/controller/audio-example.c: (main):
|
||||
|
|
|
@ -74,12 +74,15 @@ G_STMT_START { \
|
|||
#define DEFAULT_ADDRESS "0.0.0.0"
|
||||
#define DEFAULT_PORT 5637
|
||||
|
||||
#define IS_ACTIVE(self) (g_atomic_int_get (&((self)->active.active)))
|
||||
|
||||
enum
|
||||
{
|
||||
PROP_0,
|
||||
PROP_PORT,
|
||||
PROP_ADDRESS,
|
||||
PROP_CLOCK
|
||||
PROP_CLOCK,
|
||||
PROP_ACTIVE
|
||||
/* FILL ME */
|
||||
};
|
||||
|
||||
|
@ -129,6 +132,10 @@ gst_net_time_provider_class_init (GstNetTimeProviderClass * klass)
|
|||
g_param_spec_object ("clock", "Clock",
|
||||
"The clock to export over the network", GST_TYPE_CLOCK,
|
||||
G_PARAM_READWRITE));
|
||||
g_object_class_install_property (gobject_class, PROP_ACTIVE,
|
||||
g_param_spec_boolean ("active", "Active",
|
||||
"TRUE if the clock will respond to queries over the network", TRUE,
|
||||
G_PARAM_READWRITE));
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -139,6 +146,7 @@ gst_net_time_provider_init (GstNetTimeProvider * self,
|
|||
self->sock = -1;
|
||||
self->address = g_strdup (DEFAULT_ADDRESS);
|
||||
self->thread = NULL;
|
||||
self->active.active = TRUE;
|
||||
|
||||
READ_SOCKET (self) = -1;
|
||||
WRITE_SOCKET (self) = -1;
|
||||
|
@ -234,12 +242,14 @@ gst_net_time_provider_thread (gpointer data)
|
|||
if (!packet)
|
||||
goto receive_error;
|
||||
|
||||
/* do what we were asked to and send the packet back */
|
||||
packet->remote_time = gst_clock_get_time (self->clock);
|
||||
if (IS_ACTIVE (self)) {
|
||||
/* do what we were asked to and send the packet back */
|
||||
packet->remote_time = gst_clock_get_time (self->clock);
|
||||
|
||||
/* ignore errors */
|
||||
gst_net_time_packet_send (packet, self->sock,
|
||||
(struct sockaddr *) &tmpaddr, len);
|
||||
/* ignore errors */
|
||||
gst_net_time_packet_send (packet, self->sock,
|
||||
(struct sockaddr *) &tmpaddr, len);
|
||||
}
|
||||
|
||||
g_free (packet);
|
||||
|
||||
|
@ -297,6 +307,9 @@ gst_net_time_provider_set_property (GObject * object, guint prop_id,
|
|||
gst_object_replace ((GstObject **) & self->clock,
|
||||
(GstObject *) g_value_get_object (value));
|
||||
break;
|
||||
case PROP_ACTIVE:
|
||||
gst_atomic_int_set (&self->active.active, g_value_get_boolean (value));
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
|
@ -319,6 +332,9 @@ gst_net_time_provider_get_property (GObject * object, guint prop_id,
|
|||
case PROP_CLOCK:
|
||||
g_value_set_object (value, self->clock);
|
||||
break;
|
||||
case PROP_ACTIVE:
|
||||
g_value_set_boolean (value, IS_ACTIVE (self));
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
|
|
|
@ -68,8 +68,13 @@ struct _GstNetTimeProvider {
|
|||
|
||||
GstClock *clock;
|
||||
|
||||
/*< private >*/
|
||||
gpointer _gst_reserved[GST_PADDING];
|
||||
union {
|
||||
gpointer _gst_reserved1;
|
||||
/* has to be a gint, we use atomic ops here */
|
||||
gint active;
|
||||
} active;
|
||||
|
||||
gpointer _gst_reserved[GST_PADDING - 1];
|
||||
};
|
||||
|
||||
struct _GstNetTimeProviderClass {
|
||||
|
|
Loading…
Reference in a new issue