From: <wt...@fr...> - 2005-05-25 12:00:13
|
CVS Root: /cvs/gstreamer Module: gst-plugins-base Changes by: wtay Date: Wed May 25 2005 04:59:54 PDT Log message: * ext/gnomevfs/gstgnomevfssrc.c: (gst_gnomevfssrc_create): Fix memleaks, GST_BUFFER_DATA() is not freed. Modified files: . : ChangeLog ext/gnomevfs : gstgnomevfssrc.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ChangeLog.diff?r1=1.1711&r2=1.1712 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ext/gnomevfs/gstgnomevfssrc.c.diff?r1=1.66&r2=1.67 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-base/ChangeLog,v retrieving revision 1.1711 retrieving revision 1.1712 diff -u -d -r1.1711 -r1.1712 --- ChangeLog 25 May 2005 11:57:45 -0000 1.1711 +++ ChangeLog 25 May 2005 11:59:32 -0000 1.1712 @@ -1,5 +1,10 @@ 2005-05-25 Wim Taymans <wi...@fl...> + * ext/gnomevfs/gstgnomevfssrc.c: (gst_gnomevfssrc_create): + Fix memleaks, GST_BUFFER_DATA() is not freed. + +2005-05-25 Wim Taymans <wi...@fl...> * ext/alsa/gstalsasink.c: (gst_alsasink_open): Open non-blocking, set to blocking mode afterwards to avoid lockups when audio device is busy. Index: gstgnomevfssrc.c RCS file: /cvs/gstreamer/gst-plugins-base/ext/gnomevfs/gstgnomevfssrc.c,v retrieving revision 1.66 retrieving revision 1.67 diff -u -d -r1.66 -r1.67 --- gstgnomevfssrc.c 9 May 2005 07:03:11 -0000 1.66 +++ gstgnomevfssrc.c 25 May 2005 11:59:39 -0000 1.67 @@ -958,13 +958,12 @@ } } - /* create the buffer */ - buf = gst_buffer_new (); - audiocast_do_notifications (src); if (src->iradio_mode && src->icy_metaint > 0) { - data = g_malloc (src->icy_metaint); + buf = gst_buffer_new_and_alloc (src->icy_metaint); + data = GST_BUFFER_DATA (buf); /* try to read */ GST_DEBUG ("doing read: icy_count: %" G_GINT64_FORMAT, src->icy_count); @@ -980,8 +979,7 @@ src->icy_count += readbytes; GST_BUFFER_OFFSET (buf) = src->curoffset; - GST_BUFFER_SIZE (buf) += readbytes; - GST_BUFFER_DATA (buf) = data; + GST_BUFFER_SIZE (buf) = readbytes; src->curoffset += readbytes; if (src->icy_count == src->icy_metaint) { @@ -989,20 +987,21 @@ src->icy_count = 0; } else { - data = g_malloc (size); + buf = gst_buffer_new_and_alloc (size); + GST_BUFFER_OFFSET (buf) = src->curoffset; res = gnome_vfs_read (src->handle, data, size, &readbytes); if (res != GNOME_VFS_OK) goto read_failed; if (readbytes == 0) goto eos; - GST_BUFFER_OFFSET (buf) = src->curoffset; - GST_BUFFER_SIZE (buf) = readbytes; |
From: <wt...@fr...> - 2005-07-19 12:00:03
|
CVS Root: /cvs/gstreamer Module: gst-plugins-base Changes by: wtay Date: Tue Jul 19 2005 04:59:57 PDT Log message: * ext/gnomevfs/gstgnomevfssrc.c: (gst_gnomevfssrc_create): Better debugging. Modified files: . : ChangeLog ext/gnomevfs : gstgnomevfssrc.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ChangeLog.diff?r1=1.1792&r2=1.1793 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ext/gnomevfs/gstgnomevfssrc.c.diff?r1=1.71&r2=1.72 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-base/ChangeLog,v retrieving revision 1.1792 retrieving revision 1.1793 diff -u -d -r1.1792 -r1.1793 --- ChangeLog 19 Jul 2005 11:57:27 -0000 1.1792 +++ ChangeLog 19 Jul 2005 11:59:43 -0000 1.1793 @@ -1,5 +1,10 @@ 2005-07-19 Wim Taymans <wi...@fl...> + * ext/gnomevfs/gstgnomevfssrc.c: (gst_gnomevfssrc_create): + Better debugging. + +2005-07-19 Wim Taymans <wi...@fl...> * examples/seeking/seek.c: (make_dv_pipeline), (make_vorbis_theora_pipeline), (query_rates), (query_positions_elems), (query_positions_pads), (do_seek): Index: gstgnomevfssrc.c RCS file: /cvs/gstreamer/gst-plugins-base/ext/gnomevfs/gstgnomevfssrc.c,v retrieving revision 1.71 retrieving revision 1.72 diff -u -d -r1.71 -r1.72 --- gstgnomevfssrc.c 8 Jul 2005 10:59:36 -0000 1.71 +++ gstgnomevfssrc.c 19 Jul 2005 11:59:43 -0000 1.72 @@ -945,22 +945,20 @@ src = GST_GNOMEVFSSRC (basesrc); + GST_DEBUG ("now at %llu, reading %lld, size %u", src->curoffset, offset, + size); /* seek if required */ if (src->curoffset != offset) { + GST_DEBUG ("need to seek"); if (src->seekable) { + GST_DEBUG ("seeking to %lld", offset); res = gnome_vfs_seek (src->handle, GNOME_VFS_SEEK_START, offset); - if (res != GNOME_VFS_OK) { - GST_ERROR_OBJECT (src, - "Failed to seek to requested position %lld: %s", - offset, gnome_vfs_result_to_string (res)); - return GST_FLOW_ERROR; - } + if (res != GNOME_VFS_OK) + goto seek_failed; src->curoffset = offset; } else { - GST_ERROR_OBJECT (src, - "Requested seek from %lld to %lld on non-seekable stream", - src->curoffset, offset); - return GST_FLOW_ERROR; + goto cannot_seek; } } @@ -1017,6 +1015,20 @@ return GST_FLOW_OK; +seek_failed: + { + GST_ERROR_OBJECT (src, + "Failed to seek to requested position %lld: %s", + offset, gnome_vfs_result_to_string (res)); + return GST_FLOW_ERROR; + } +cannot_seek: + "Requested seek from %lld to %lld on non-seekable stream", + src->curoffset, offset); read_failed: { gst_buffer_unref (buf); |
From: <wt...@ke...> - 2006-02-19 14:36:16
|
CVS Root: /cvs/gstreamer Module: gst-plugins-base Changes by: wtay Date: Sun Feb 19 2006 14:32:47 UTC Log message: * ext/gnomevfs/gstgnomevfssink.c: (gst_gnome_vfs_sink_open_file): use 0666 mask when creating files so umask gets applied correctly. Fixes #331295. Modified files: . : ChangeLog ext/gnomevfs : gstgnomevfssink.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ChangeLog.diff?r1=1.2405&r2=1.2406 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ext/gnomevfs/gstgnomevfssink.c.diff?r1=1.35&r2=1.36 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-base/ChangeLog,v retrieving revision 1.2405 retrieving revision 1.2406 diff -u -d -r1.2405 -r1.2406 --- ChangeLog 19 Feb 2006 14:16:15 -0000 1.2405 +++ ChangeLog 19 Feb 2006 14:32:35 -0000 1.2406 @@ -1,3 +1,9 @@ +2006-02-19 Wim Taymans <wi...@fl...> + + * ext/gnomevfs/gstgnomevfssink.c: (gst_gnome_vfs_sink_open_file): + use 0666 mask when creating files so umask gets applied + correctly. Fixes #331295. 2006-02-19 Tim-Philipp Müller <tim at centricular dot net> * gst/subparse/Makefile.am: Index: gstgnomevfssink.c RCS file: /cvs/gstreamer/gst-plugins-base/ext/gnomevfs/gstgnomevfssink.c,v retrieving revision 1.35 retrieving revision 1.36 diff -u -d -r1.35 -r1.36 --- gstgnomevfssink.c 27 Dec 2005 21:42:23 -0000 1.35 +++ gstgnomevfssink.c 19 Feb 2006 14:32:35 -0000 1.36 @@ -331,11 +331,13 @@ GnomeVFSResult result; if (sink->uri) { - /* open the file */ + /* open the file, all permissions, umask will apply */ result = gnome_vfs_create_uri (&(sink->handle), sink->uri, GNOME_VFS_OPEN_WRITE, TRUE, - GNOME_VFS_PERM_USER_READ | GNOME_VFS_PERM_USER_WRITE - | GNOME_VFS_PERM_GROUP_READ); + GNOME_VFS_PERM_USER_READ | GNOME_VFS_PERM_USER_WRITE | + GNOME_VFS_PERM_GROUP_READ | GNOME_VFS_PERM_GROUP_WRITE | + GNOME_VFS_PERM_OTHER_READ | GNOME_VFS_PERM_OTHER_WRITE); /* if the file existed and the property says to ask, then ask! */ if (result == GNOME_VFS_ERROR_FILE_EXISTS) { gboolean erase_anyway = FALSE; @@ -346,8 +348,9 @@ if (erase_anyway) { result = gnome_vfs_create_uri (&(sink->handle), sink->uri, GNOME_VFS_OPEN_WRITE, FALSE, - GNOME_VFS_PERM_USER_READ | GNOME_VFS_PERM_USER_WRITE - | GNOME_VFS_PERM_GROUP_READ); + GNOME_VFS_PERM_USER_READ | GNOME_VFS_PERM_USER_WRITE | + GNOME_VFS_PERM_GROUP_READ | GNOME_VFS_PERM_GROUP_WRITE | + GNOME_VFS_PERM_OTHER_READ | GNOME_VFS_PERM_OTHER_WRITE); } } |
From: <wt...@ke...> - 2006-02-28 19:08:27
|
CVS Root: /cvs/gstreamer Module: gst-plugins-base Changes by: wtay Date: Tue Feb 28 2006 19:08:24 UTC Log message: * ext/gnomevfs/gstgnomevfssink.c: (gst_gnome_vfs_sink_class_init): Fix some docs. Modified files: . : ChangeLog ext/gnomevfs : gstgnomevfssink.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ChangeLog.diff?r1=1.2428&r2=1.2429 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ext/gnomevfs/gstgnomevfssink.c.diff?r1=1.36&r2=1.37 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-base/ChangeLog,v retrieving revision 1.2428 retrieving revision 1.2429 diff -u -d -r1.2428 -r1.2429 --- ChangeLog 28 Feb 2006 13:52:04 -0000 1.2428 +++ ChangeLog 28 Feb 2006 19:08:12 -0000 1.2429 @@ -1,3 +1,8 @@ +2006-02-28 Wim Taymans <wi...@fl...> + + * ext/gnomevfs/gstgnomevfssink.c: (gst_gnome_vfs_sink_class_init): + Fix some docs. 2006-02-28 Edward Hervey <ed...@fl...> * ext/alsa/gstalsasrc.c: Index: gstgnomevfssink.c RCS file: /cvs/gstreamer/gst-plugins-base/ext/gnomevfs/gstgnomevfssink.c,v retrieving revision 1.36 retrieving revision 1.37 diff -u -d -r1.36 -r1.37 --- gstgnomevfssink.c 19 Feb 2006 14:32:35 -0000 1.36 +++ gstgnomevfssink.c 28 Feb 2006 19:08:12 -0000 1.37 @@ -50,8 +50,14 @@ * The above pipeline will re-encode an mp3 file into FLAC format and store * it on a remote host using the Samba protocol. * </para> + * <para> + * Applications can connect to the allow-overwrite signal to receive a callback when an + * existing file will be overwritten. The return value of the signal will determine if + * gnomevfssink will overwrite the resource or abort with an error. + * </para> * </refsect2> * + * Last reviewed on 2006-02-28 (0.10.4) */ #ifdef HAVE_CONFIG_H @@ -182,6 +188,17 @@ "GnomeVFSHandle", "Handle for GnomeVFS", GST_TYPE_GNOME_VFS_HANDLE, G_PARAM_READWRITE)); + /** + * GstGnomeVFSSink::allow-overwrite + * @sink: the object which received the signal + * @uri: the URI to be overwritten + * + * This signal is fired when gnomevfssink is about to overwrite an + * existing resource. The application can connect to this signal and ask + * the user if the resource may be overwritten. + * Returns: A boolean indicating that the resource may be overwritten. + */ gst_gnome_vfs_sink_signals[SIGNAL_ERASE_ASK] = g_signal_new ("allow-overwrite", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_CLEANUP, G_STRUCT_OFFSET (GstGnomeVFSSinkClass, erase_ask), |
From: <wt...@ke...> - 2006-03-09 17:51:14
|
CVS Root: /cvs/gstreamer Module: gst-plugins-base Changes by: wtay Date: Thu Mar 09 2006 17:51:11 UTC Log message: * ext/gnomevfs/gstgnomevfssrc.c: (audiocast_init), (audiocast_register_listener), (gst_gnome_vfs_src_start): Some cleanups. Modified files: . : ChangeLog ext/gnomevfs : gstgnomevfssrc.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ChangeLog.diff?r1=1.2469&r2=1.2470 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ext/gnomevfs/gstgnomevfssrc.c.diff?r1=1.81&r2=1.82 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-base/ChangeLog,v retrieving revision 1.2469 retrieving revision 1.2470 diff -u -d -r1.2469 -r1.2470 --- ChangeLog 9 Mar 2006 17:45:39 -0000 1.2469 +++ ChangeLog 9 Mar 2006 17:50:59 -0000 1.2470 @@ -1,5 +1,11 @@ 2006-03-09 Wim Taymans <wi...@fl...> + * ext/gnomevfs/gstgnomevfssrc.c: (audiocast_init), + (audiocast_register_listener), (gst_gnome_vfs_src_start): + Some cleanups. + +2006-03-09 Wim Taymans <wi...@fl...> * ext/ogg/gstoggdemux.c: (gst_ogg_demux_activate_chain): Don't try to activate NULL chains. Index: gstgnomevfssrc.c RCS file: /cvs/gstreamer/gst-plugins-base/ext/gnomevfs/gstgnomevfssrc.c,v retrieving revision 1.81 retrieving revision 1.82 diff -u -d -r1.81 -r1.82 --- gstgnomevfssrc.c 6 Mar 2006 20:07:55 -0000 1.81 +++ gstgnomevfssrc.c 9 Mar 2006 17:50:59 -0000 1.82 @@ -528,32 +528,51 @@ if (!src->iradio_mode) return TRUE; GST_DEBUG_OBJECT (src, "audiocast: registering listener"); if (audiocast_register_listener (&src->audiocast_port, - &src->audiocast_fd) < 0) { - GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ, (NULL), - ("Unable to listen on UDP port %d", src->audiocast_port)); - close (src->audiocast_fd); - return FALSE; - } + &src->audiocast_fd) < 0) + goto no_listener; GST_DEBUG_OBJECT (src, "audiocast: creating pipe"); src->audiocast_notify_queue = NULL; - if (pipe (pipefds) < 0) { + if (pipe (pipefds) < 0) + goto no_pipe; src->audiocast_thread_die_infd = pipefds[0]; src->audiocast_thread_die_outfd = pipefds[1]; GST_DEBUG_OBJECT (src, "audiocast: creating audiocast thread"); src->audiocast_thread = g_thread_create ((GThreadFunc) audiocast_thread_run, src, TRUE, &error); - if (error != NULL) { + if (error != NULL) + goto no_thread; + return TRUE; + /* ERRORS */ +no_listener: + { + GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ, (NULL), + ("Unable to listen on UDP port %d", src->audiocast_port)); + return FALSE; + } +no_pipe: + ("Unable to create socketpair")); + close (src->audiocast_fd); +no_thread: GST_ELEMENT_ERROR (src, RESOURCE, TOO_LAZY, (NULL), ("Unable to create thread: %s", error->message)); close (src->audiocast_fd); + close (pipefds[0]); + close (pipefds[1]); return FALSE; } - return TRUE; } static int @@ -586,6 +605,8 @@ *fd = sock; return 0; lose_and_close: close (sock); lose: @@ -1093,7 +1114,7 @@ return TRUE; -/* open the file, do stuff necessary to go to READY state */ +/* open the file, do stuff necessary to go to PAUSED state */ static gboolean gst_gnome_vfs_src_start (GstBaseSrc * basesrc) { @@ -1109,31 +1130,13 @@ gst_gnome_vfs_src_push_callbacks (src); if (src->uri != NULL) { + /* this can block... */ if ((res = gnome_vfs_open_uri (&src->handle, src->uri, - GNOME_VFS_OPEN_READ)) != GNOME_VFS_OK) { - gchar *filename = gnome_vfs_uri_to_string (src->uri, - GNOME_VFS_URI_HIDE_PASSWORD); - - gst_gnome_vfs_src_pop_callbacks (src); - audiocast_thread_kill (src); - if (res == GNOME_VFS_ERROR_NOT_FOUND || - res == GNOME_VFS_ERROR_SERVICE_NOT_AVAILABLE) { - GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND, (NULL), - ("Could not open vfs file \"%s\" for reading: %s", - filename, gnome_vfs_result_to_string (res))); - } else { - GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ, (NULL), - } - g_free (filename); - return FALSE; - } + GNOME_VFS_OPEN_READ)) != GNOME_VFS_OK) + goto open_failed; src->own_handle = TRUE; } else if (!src->handle) { - GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ, (NULL), ("No filename given")); + goto no_filename; } else { src->own_handle = FALSE; @@ -1163,6 +1166,34 @@ +open_failed: + gchar *filename = gnome_vfs_uri_to_string (src->uri, + GNOME_VFS_URI_HIDE_PASSWORD); + gst_gnome_vfs_src_pop_callbacks (src); + audiocast_thread_kill (src); + if (res == GNOME_VFS_ERROR_NOT_FOUND || + res == GNOME_VFS_ERROR_SERVICE_NOT_AVAILABLE) { + GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND, (NULL), + ("Could not open vfs file \"%s\" for reading: %s", + filename, gnome_vfs_result_to_string (res))); + } else { + GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ, (NULL), + } + g_free (filename); +no_filename: + GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ, (NULL), ("No filename given")); |