summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xine/BluRay/input_bluray.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/xine/BluRay/input_bluray.c b/xine/BluRay/input_bluray.c
index 8d2abd87..dbf30127 100644
--- a/xine/BluRay/input_bluray.c
+++ b/xine/BluRay/input_bluray.c
@@ -530,8 +530,18 @@ static off_t bluray_plugin_read (input_plugin_t *this_gen, char *buf, off_t len)
handle_events(this);
- result = bd_read(this->bdh, (unsigned char *)buf, len);
- handle_libbluray_events(this);
+ if (this->nav_mode) {
+ do {
+ BD_EVENT ev;
+ result = bd_read_ext (this->bdh, (unsigned char *)buf, len, &ev);
+ handle_libbluray_event(this, ev);
+ if (result == 0)
+ handle_events(this);
+ } while (!this->error && result == 0);
+ } else {
+ result = bd_read (this->bdh, (unsigned char *)buf, len);
+ handle_libbluray_events(this);
+ }
if (result < 0)
LOGMSG("bd_read() failed: %s (%d of %d)\n", strerror(errno), (int)result, (int)len);