update gnome-vfs to g_object_notify api fix arg types allow local paths in location arg

Original commit message from CVS:
* update gnome-vfs to g_object_notify api
* fix arg types
* allow local paths in location arg
This commit is contained in:
Andy Wingo 2002-02-21 04:30:03 +00:00
parent 712fbd0e6b
commit ec3b2f84da

View File

@ -200,6 +200,8 @@ static void gst_gnomevfssrc_init(GstGnomeVFSSrc *gnomevfssrc)
static void gst_gnomevfssrc_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) static void gst_gnomevfssrc_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
{ {
GstGnomeVFSSrc *src; GstGnomeVFSSrc *src;
const gchar *location;
gchar cwd[PATH_MAX];
/* it's not null if we got it, but it might not be ours */ /* it's not null if we got it, but it might not be ours */
g_return_if_fail(GST_IS_GNOMEVFSSRC(object)); g_return_if_fail(GST_IS_GNOMEVFSSRC(object));
@ -221,7 +223,16 @@ static void gst_gnomevfssrc_set_property(GObject *object, guint prop_id, const G
src->filename = NULL; src->filename = NULL;
} else { } else {
/* otherwise set the new filename */ /* otherwise set the new filename */
src->filename = g_strdup(g_value_get_string (value)); location = g_value_get_string (value);
/* if it's not a proper uri, default to file:// -- this
* is a crude test */
if (!strchr (location, ':'))
if (*location == '/')
src->filename = g_strdup_printf ("file://%s", location);
else
src->filename = g_strdup_printf ("file://%s/%s", getcwd(cwd, PATH_MAX), location);
else
src->filename = g_strdup (g_value_get_string (value));
} }
if ((GST_STATE(src) == GST_STATE_PAUSED) if ((GST_STATE(src) == GST_STATE_PAUSED)
@ -234,7 +245,7 @@ static void gst_gnomevfssrc_set_property(GObject *object, guint prop_id, const G
src->bytes_per_read = g_value_get_int (value); src->bytes_per_read = g_value_get_int (value);
break; break;
case ARG_OFFSET: case ARG_OFFSET:
src->curoffset = g_value_get_long (value); src->curoffset = g_value_get_int64 (value);
src->new_seek = TRUE; src->new_seek = TRUE;
break; break;
default: default:
@ -259,10 +270,10 @@ static void gst_gnomevfssrc_get_property(GObject *object, guint prop_id, GValue
g_value_set_int (value, src->bytes_per_read); g_value_set_int (value, src->bytes_per_read);
break; break;
case ARG_OFFSET: case ARG_OFFSET:
g_value_set_long (value, src->curoffset); g_value_set_int64 (value, src->curoffset);
break; break;
case ARG_FILESIZE: case ARG_FILESIZE:
g_value_set_long (value, src->size); g_value_set_int64 (value, src->size);
break; break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@ -318,6 +329,8 @@ static GstBuffer *gst_gnomevfssrc_get(GstPad *pad)
src->curoffset += GST_BUFFER_SIZE (buf); src->curoffset += GST_BUFFER_SIZE (buf);
g_object_notify ((GObject*) src, "offset");
if (src->new_seek) if (src->new_seek)
{ {
/* FIXME do a discont, flush event */ /* FIXME do a discont, flush event */
@ -357,6 +370,7 @@ static GstBuffer *gst_gnomevfssrc_get(GstPad *pad)
GST_BUFFER_OFFSET(buf) = src->curoffset; GST_BUFFER_OFFSET(buf) = src->curoffset;
GST_BUFFER_SIZE(buf) = readbytes; GST_BUFFER_SIZE(buf) = readbytes;
src->curoffset += readbytes; src->curoffset += readbytes;
g_object_notify ((GObject*) src, "offset");
} }
/* we're done, return the buffer */ /* we're done, return the buffer */
@ -409,6 +423,8 @@ static gboolean gst_gnomevfssrc_open_file(GstGnomeVFSSrc *src)
return FALSE; return FALSE;
} }
g_object_notify (G_OBJECT (src), "filesize");
src->new_seek = TRUE; src->new_seek = TRUE;
} else { } else {
result = result =
@ -437,6 +453,8 @@ static gboolean gst_gnomevfssrc_open_file(GstGnomeVFSSrc *src)
else else
src->size = info->size; src->size = info->size;
g_object_notify (G_OBJECT (src), "filesize");
gnome_vfs_file_info_unref(info); gnome_vfs_file_info_unref(info);
} }