From: Wim Taymans Date: Wed, 12 Oct 2005 16:03:39 +0000 (+0000) Subject: gst/elements/gstfilesink.c: Flush before seeking. X-Git-Tag: RELEASE-0_9_4~113 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e41e541dccd9330921c756d393cd7428ba56fa99;p=platform%2Fupstream%2Fgstreamer.git gst/elements/gstfilesink.c: Flush before seeking. Original commit message from CVS: * gst/elements/gstfilesink.c: (gst_file_sink_do_seek), (gst_file_sink_event), (gst_file_sink_render): Flush before seeking. --- diff --git a/ChangeLog b/ChangeLog index 3742589..38ecc97 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-10-12 Wim Taymans + + * gst/elements/gstfilesink.c: (gst_file_sink_do_seek), + (gst_file_sink_event), (gst_file_sink_render): + Flush before seeking. + 2005-10-12 Andy Wingo * gst/gst.c (gst_init_check): Ignore unknown options, as has diff --git a/gst/elements/gstfilesink.c b/gst/elements/gstfilesink.c index ac30d41..6715258 100644 --- a/gst/elements/gstfilesink.c +++ b/gst/elements/gstfilesink.c @@ -305,16 +305,31 @@ gst_file_sink_do_seek (GstFileSink * filesink, guint64 new_offset) GST_DEBUG_OBJECT (filesink, "Seeking to offset %" G_GUINT64_FORMAT, new_offset); + if (fflush (filesink->file)) + goto flush_failed; + #ifdef G_OS_UNIX if (lseek (fileno (filesink->file), (off_t) new_offset, - SEEK_SET) != (off_t) - 1) - return; + SEEK_SET) == (off_t) - 1) + goto seek_failed; #else - if (fseek (filesink->file, (long) new_offset, SEEK_SET) == 0) - return; + if (fseek (filesink->file, (long) new_offset, SEEK_SET) != 0) + goto seek_failed; #endif - GST_DEBUG_OBJECT (filesink, "Seeking failed: %s", g_strerror (errno)); + return; + + /* ERRORS */ +flush_failed: + { + GST_DEBUG_OBJECT (filesink, "Flush failed: %s", g_strerror (errno)); + return; + } +seek_failed: + { + GST_DEBUG_OBJECT (filesink, "Seeking failed: %s", g_strerror (errno)); + return; + } } /* handle events (search) */ diff --git a/plugins/elements/gstfilesink.c b/plugins/elements/gstfilesink.c index ac30d41..6715258 100644 --- a/plugins/elements/gstfilesink.c +++ b/plugins/elements/gstfilesink.c @@ -305,16 +305,31 @@ gst_file_sink_do_seek (GstFileSink * filesink, guint64 new_offset) GST_DEBUG_OBJECT (filesink, "Seeking to offset %" G_GUINT64_FORMAT, new_offset); + if (fflush (filesink->file)) + goto flush_failed; + #ifdef G_OS_UNIX if (lseek (fileno (filesink->file), (off_t) new_offset, - SEEK_SET) != (off_t) - 1) - return; + SEEK_SET) == (off_t) - 1) + goto seek_failed; #else - if (fseek (filesink->file, (long) new_offset, SEEK_SET) == 0) - return; + if (fseek (filesink->file, (long) new_offset, SEEK_SET) != 0) + goto seek_failed; #endif - GST_DEBUG_OBJECT (filesink, "Seeking failed: %s", g_strerror (errno)); + return; + + /* ERRORS */ +flush_failed: + { + GST_DEBUG_OBJECT (filesink, "Flush failed: %s", g_strerror (errno)); + return; + } +seek_failed: + { + GST_DEBUG_OBJECT (filesink, "Seeking failed: %s", g_strerror (errno)); + return; + } } /* handle events (search) */