summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Vander Stichele <thomas@apestaart.org>2004-06-17 19:07:00 +0000
committerThomas Vander Stichele <thomas@apestaart.org>2004-06-17 19:07:00 +0000
commit7dfdfad7930e127ebe09c37afbf1035f246cff3a (patch)
tree98b51b50a3cf38182f59d9194c01c180adb71e10
parentaabfd87d938fc364236342a7d8a818a78bbd71a0 (diff)
cleanups, mem fix
Original commit message from CVS: cleanups, mem fix
-rw-r--r--gst/tcp/gsttcpclientsrc.c31
1 files changed, 21 insertions, 10 deletions
diff --git a/gst/tcp/gsttcpclientsrc.c b/gst/tcp/gsttcpclientsrc.c
index d81cd02ee..c2692269c 100644
--- a/gst/tcp/gsttcpclientsrc.c
+++ b/gst/tcp/gsttcpclientsrc.c
@@ -188,16 +188,19 @@ static GstCaps *
gst_tcpclientsrc_getcaps (GstPad * pad)
{
GstTCPClientSrc *src;
+ GstCaps *caps = NULL;
src = GST_TCPCLIENTSRC (GST_OBJECT_PARENT (pad));
if (!GST_FLAG_IS_SET (src, GST_TCPCLIENTSRC_OPEN))
- return gst_caps_new_any ();
-
- if (src->caps)
- return src->caps;
-
- return gst_caps_new_any ();
+ caps = gst_caps_new_any ();
+ else if (src->caps)
+ caps = gst_caps_copy (src->caps);
+ else
+ caps = gst_caps_new_any ();
+ GST_DEBUG_OBJECT (src, "returning caps %" GST_PTR_FORMAT, caps);
+ g_assert (GST_IS_CAPS (caps));
+ return caps;
}
static GstData *
@@ -445,7 +448,6 @@ gst_tcpclientsrc_init_receive (GstTCPClientSrc * this)
if (this->protocol == GST_TCP_PROTOCOL_TYPE_GDP) {
/* if we haven't received caps yet, we should get them first */
if (!this->caps_received) {
- gchar *string;
GstCaps *caps;
GST_DEBUG_OBJECT (this, "getting caps through GDP");
@@ -454,11 +456,15 @@ gst_tcpclientsrc_init_receive (GstTCPClientSrc * this)
("Could not read caps through GDP"));
return FALSE;
}
+ if (!GST_IS_CAPS (caps)) {
+ GST_ELEMENT_ERROR (this, RESOURCE, READ, (NULL),
+ ("Could not read caps through GDP"));
+ return FALSE;
+ }
+ GST_DEBUG_OBJECT (this, "Received caps through GDP: %" GST_PTR_FORMAT,
+ caps);
this->caps_received = TRUE;
this->caps = caps;
- string = gst_caps_to_string (caps);
- GST_DEBUG_OBJECT (this, "Received caps through GDP: %s", string);
- g_free (string);
}
}
return TRUE;
@@ -471,6 +477,11 @@ gst_tcpclientsrc_close (GstTCPClientSrc * this)
close (this->sock_fd);
this->sock_fd = -1;
}
+ this->caps_received = FALSE;
+ if (this->caps) {
+ gst_caps_free (this->caps);
+ this->caps = NULL;
+ }
GST_FLAG_UNSET (this, GST_TCPCLIENTSRC_OPEN);
}