diff options
author | Jan Schmidt <thaytan@noraisin.net> | 2009-03-25 02:20:12 +0000 |
---|---|---|
committer | Jan Schmidt <thaytan@noraisin.net> | 2009-04-02 14:49:20 +0100 |
commit | b9c4db5d537bde620759118f454eccc2ae730277 (patch) | |
tree | 0fccbbef16297d79deda8fdf3b47fb402f2431ce /ext | |
parent | 85db327e82dcbd028416f094b81fc780c4488465 (diff) | |
download | gstreamer-plugins-bad-b9c4db5d537bde620759118f454eccc2ae730277.tar.gz |
resindvd: Make highlights work when jumping into menus
Make the highlights re-appear correctly when jumping back into menus
by making sure to set the flushing_seek flag for user-action initiated
seeks.
Fiddle some debug related to tracking down the issue.
Diffstat (limited to 'ext')
-rw-r--r-- | ext/resindvd/resindvdsrc.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/ext/resindvd/resindvdsrc.c b/ext/resindvd/resindvdsrc.c index 2d98f04b2..693443673 100644 --- a/ext/resindvd/resindvdsrc.c +++ b/ext/resindvd/resindvdsrc.c @@ -762,6 +762,9 @@ rsn_dvdsrc_step (resinDvdSrc * src, gboolean have_dvd_lock) if (src->cur_end_ts == GST_CLOCK_TIME_NONE || diff > 2 * GST_SECOND || diff < 0) { discont = TRUE; + g_print ("Discont NAV packet start TS %" GST_TIME_FORMAT + " != end TS %" GST_TIME_FORMAT, + GST_TIME_ARGS (new_start_ptm), GST_TIME_ARGS (src->cur_end_ts)); } } @@ -903,12 +906,12 @@ rsn_dvdsrc_step (resinDvdSrc * src, gboolean have_dvd_lock) rsn_dvdsrc_prepare_spu_stream_event (src, phys_track, forced_only); - GST_DEBUG_OBJECT (src, " physical_wide: %d", event->physical_wide); - GST_DEBUG_OBJECT (src, " physical_letterbox: %d", + GST_DEBUG_OBJECT (src, " physical_wide: %x", event->physical_wide); + GST_DEBUG_OBJECT (src, " physical_letterbox: %x", event->physical_letterbox); - GST_DEBUG_OBJECT (src, " physical_pan_scan: %d", + GST_DEBUG_OBJECT (src, " physical_pan_scan: %x", event->physical_pan_scan); - GST_DEBUG_OBJECT (src, " logical: %d", event->logical); + GST_DEBUG_OBJECT (src, " logical: %x", event->logical); break; } case DVDNAV_HIGHLIGHT:{ @@ -1297,6 +1300,7 @@ rsn_dvdsrc_handle_navigation_event (resinDvdSrc * src, GstEvent * event) /* Send ourselves a seek event to wake everything up and flush */ seek = gst_event_new_seek (1.0, rsndvd_format, GST_SEEK_FLAG_FLUSH, GST_SEEK_TYPE_NONE, -1, GST_SEEK_TYPE_NONE, -1); + src->flushing_seek = TRUE; gst_element_send_event (GST_ELEMENT (src), seek); g_mutex_lock (src->dvd_lock); @@ -1682,6 +1686,9 @@ rsn_dvdsrc_activate_nav_block (resinDvdSrc * src, GstBuffer * nav_buf) static void rsn_dvdsrc_clear_nav_blocks (resinDvdSrc * src) { + GST_DEBUG_OBJECT (src, "Clearing %d pending navpacks", + g_slist_length (src->pending_nav_blocks)); + while (src->pending_nav_blocks) { RsnDvdPendingNav *cur = (RsnDvdPendingNav *) src->pending_nav_blocks->data; @@ -2206,7 +2213,8 @@ rsn_dvdsrc_do_seek (RsnBaseSrc * bsrc, GstSegment * segment) g_mutex_unlock (src->dvd_lock); } - GST_LOG_OBJECT (src, "Entering prepare_next_block after seek"); + GST_LOG_OBJECT (src, "Entering prepare_next_block after seek." + " Flushing = %d", src->flushing_seek); if (rsn_dvdsrc_prepare_next_block (src, FALSE) != GST_FLOW_OK) goto fail; GST_LOG_OBJECT (src, "prepare_next_block after seek done"); |