libbluray | branch: master | hpi1 <[email protected]> | Tue Feb 3 09:59:09 2015 +0200| [4f7a283bcc182684399999084e3085f96686ddbf] | committer: hpi1
TitleImpl: do not throw Error when error is not fatal. Error is not present in method signatures. Compiler does not warn when Error is uncaught. Fixes loading discs with missing .bdjo files. > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=4f7a283bcc182684399999084e3085f96686ddbf --- .../bdj/java/javax/tv/service/SIManagerImpl.java | 17 ++++++++++++++--- src/libbluray/bdj/java/org/bluray/ti/TitleImpl.java | 7 ++++--- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/libbluray/bdj/java/javax/tv/service/SIManagerImpl.java b/src/libbluray/bdj/java/javax/tv/service/SIManagerImpl.java index 8f54d5e..00c23fe 100644 --- a/src/libbluray/bdj/java/javax/tv/service/SIManagerImpl.java +++ b/src/libbluray/bdj/java/javax/tv/service/SIManagerImpl.java @@ -50,9 +50,20 @@ public class SIManagerImpl extends SIManager { protected SIManagerImpl() { int ntitles = Libbluray.numTitles(); LinkedList list = new LinkedList(); - for (int i = 0; i <= ntitles; i++) - list.add(new TitleImpl(i)); - list.add(new TitleImpl(65535)); + for (int i = 0; i <= ntitles; i++) { + try { + list.add(new TitleImpl(i)); + } catch (Throwable t) { + org.videolan.Logger.getLogger("SIManagerImpl").error("Failed initializing title " + i + ": " + t); + } + } + + try { + list.add(new TitleImpl(65535)); + } catch (Throwable t) { + org.videolan.Logger.getLogger("SIManagerImpl").error("Failed initializing title FirstPlay: " + t); + } + titles = new ServiceListImpl(list); } diff --git a/src/libbluray/bdj/java/org/bluray/ti/TitleImpl.java b/src/libbluray/bdj/java/org/bluray/ti/TitleImpl.java index 5322e13..a63f2d1 100644 --- a/src/libbluray/bdj/java/org/bluray/ti/TitleImpl.java +++ b/src/libbluray/bdj/java/org/bluray/ti/TitleImpl.java @@ -1,6 +1,7 @@ package org.bluray.ti; import javax.tv.locator.Locator; +import javax.tv.service.SIException; import javax.tv.service.SIRequest; import javax.tv.service.SIRequestor; import javax.tv.service.ServiceType; @@ -12,15 +13,15 @@ import org.videolan.TitleInfo; import org.videolan.bdjo.Bdjo; public class TitleImpl implements Title { - public TitleImpl(int titleNum) { + public TitleImpl(int titleNum) throws SIException { this.titleNum = titleNum; this.ti = Libbluray.getTitleInfo(titleNum); if (ti == null) - throw new Error("Invalid title " + titleNum); + throw new SIException("Title " + titleNum + " does not exist in disc index"); if (ti.isBdj()) { bdjo = Libbluray.getBdjo(ti.getBdjoName()); if (bdjo == null) - throw new Error("Invalid title " + titleNum); + throw new SIException("title " + titleNum + ": Failed loading " + ti.getBdjoName() + ".bdjo"); } } _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
