summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorJan Schmidt <thaytan@noraisin.net>2009-03-25 02:20:12 +0000
committerJan Schmidt <thaytan@noraisin.net>2009-04-02 14:49:20 +0100
commitb9c4db5d537bde620759118f454eccc2ae730277 (patch)
tree0fccbbef16297d79deda8fdf3b47fb402f2431ce /ext
parent85db327e82dcbd028416f094b81fc780c4488465 (diff)
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.c18
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");