summaryrefslogtreecommitdiff
path: root/gst/shm
diff options
context:
space:
mode:
authorOlivier CrĂȘte <olivier.crete@collabora.co.uk>2010-06-03 14:22:36 -0400
committerOlivier CrĂȘte <olivier.crete@collabora.co.uk>2010-06-03 15:27:43 -0400
commitf26d799676c2d5361683ef44c2602cd1f703950d (patch)
tree75cab64725965a06069b62760a2d96a4b62bdc13 /gst/shm
parentb9decbb0568de0df5e531783540935102e911e14 (diff)
shmsink: Print errors if fchmod fails
Diffstat (limited to 'gst/shm')
-rw-r--r--gst/shm/gstshmsink.c17
-rw-r--r--gst/shm/shmpipe.c4
-rw-r--r--gst/shm/shmpipe.h2
3 files changed, 17 insertions, 6 deletions
diff --git a/gst/shm/gstshmsink.c b/gst/shm/gstshmsink.c
index 03dd3ddcd..ba8608fa9 100644
--- a/gst/shm/gstshmsink.c
+++ b/gst/shm/gstshmsink.c
@@ -195,6 +195,7 @@ gst_shm_sink_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec)
{
GstShmSink *self = GST_SHM_SINK (object);
+ int ret = 0;
switch (prop_id) {
case PROP_SOCKET_PATH:
@@ -206,8 +207,12 @@ gst_shm_sink_set_property (GObject * object, guint prop_id,
case PROP_PERMS:
GST_OBJECT_LOCK (object);
self->perms = g_value_get_uint (value);
- sp_writer_setperms_shm (self->pipe, self->perms);
+ if (self->pipe)
+ ret = sp_writer_setperms_shm (self->pipe, self->perms);
GST_OBJECT_UNLOCK (object);
+ if (ret < 0)
+ GST_WARNING_OBJECT (object, "Could not set permissions on pipe: %s",
+ strerror (ret));
break;
case PROP_SHM_SIZE:
GST_OBJECT_LOCK (object);
@@ -245,8 +250,14 @@ gst_shm_sink_get_property (GObject * object, guint prop_id,
break;
case PROP_PERMS:
self->perms = g_value_get_uint (value);
- if (self->pipe)
- sp_writer_setperms_shm (self->pipe, self->perms);
+ if (self->pipe) {
+ int ret;
+
+ ret = sp_writer_setperms_shm (self->pipe, self->perms);
+ if (ret < 0)
+ GST_WARNING_OBJECT (object, "Could not set permissions on pipe: %s",
+ strerror (ret));
+ }
break;
case PROP_SHM_SIZE:
g_value_set_uint (value, self->size);
diff --git a/gst/shm/shmpipe.c b/gst/shm/shmpipe.c
index 169600cd7..53fc6df8a 100644
--- a/gst/shm/shmpipe.c
+++ b/gst/shm/shmpipe.c
@@ -371,11 +371,11 @@ sp_close (ShmPipe * self)
spalloc_free (ShmPipe, self);
}
-void
+int
sp_writer_setperms_shm (ShmPipe * self, mode_t perms)
{
self->perms = perms;
- fchmod (self->shm_area->shm_fd, perms);
+ return fchmod (self->shm_area->shm_fd, perms);
}
static int
diff --git a/gst/shm/shmpipe.h b/gst/shm/shmpipe.h
index ed23d20b2..f3657b676 100644
--- a/gst/shm/shmpipe.h
+++ b/gst/shm/shmpipe.h
@@ -50,7 +50,7 @@ ShmPipe *sp_writer_create (const char *path, size_t size, mode_t perms);
const char *sp_writer_get_path (ShmPipe *pipe);
void sp_close (ShmPipe * self);
-void sp_writer_setperms_shm (ShmPipe * self, mode_t perms);
+int sp_writer_setperms_shm (ShmPipe * self, mode_t perms);
int sp_writer_resize (ShmPipe * self, size_t size);
int sp_get_fd (ShmPipe * self);