diff options
author | phintuka <phintuka> | 2010-11-24 13:54:59 +0000 |
---|---|---|
committer | phintuka <phintuka> | 2010-11-24 13:54:59 +0000 |
commit | 2adb26d51cd4ce0ac1206d2ee1c8fc870bd56850 (patch) | |
tree | ffa31bb76671b91fa0b1c6a09c0cdf89b6ecf0fe | |
parent | f81172ce7e9292a6f39bafcbd722a917ebc6f955 (diff) | |
download | xineliboutput-2adb26d51cd4ce0ac1206d2ee1c8fc870bd56850.tar.gz xineliboutput-2adb26d51cd4ce0ac1206d2ee1c8fc870bd56850.tar.bz2 |
Use bd_read_ext() when playing disc in navigation mode
-rw-r--r-- | xine/BluRay/input_bluray.c | 14 |
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); |