author | wei wang <wei.wang@amlogic.com> | 2017-11-21 12:02:43 (GMT) |
---|---|---|
committer | wei wang <wei.wang@amlogic.com> | 2017-11-24 06:06:25 (GMT) |
commit | 213f8c722b8a3ee6039bb0fcd3181d87ffbc17a6 (patch) | |
tree | d71fff19d022245e710b94b5ab9b19f6f166a5ac | |
parent | 64d392724b97fc214773b97b4b2e5d755551b93f (diff) | |
download | tv-213f8c722b8a3ee6039bb0fcd3181d87ffbc17a6.zip tv-213f8c722b8a3ee6039bb0fcd3181d87ffbc17a6.tar.gz tv-213f8c722b8a3ee6039bb0fcd3181d87ffbc17a6.tar.bz2 |
TIF: add some logical code to avoid unused-calling [3/4]
PD# 154857
1.do not parse xml several time in one time 2. do not request to update xml if it's updating
Change-Id: I31eace474483bca92b24da89c822cf6f3a4624e2
4 files changed, 53 insertions, 31 deletions
diff --git a/core/java/com/droidlogic/app/tv/DroidContentRatingsParser.java b/core/java/com/droidlogic/app/tv/DroidContentRatingsParser.java index dbc07c9..d3051e0 100644 --- a/core/java/com/droidlogic/app/tv/DroidContentRatingsParser.java +++ b/core/java/com/droidlogic/app/tv/DroidContentRatingsParser.java @@ -76,7 +76,7 @@ public class DroidContentRatingsParser { private static final String TAG = "DroidContentRatingsParser"; private static final boolean DEBUG = false; - public static final String DOMAIN_RRT_RATINGS = "ccom.droidlogic.app.tv"; + public static final String DOMAIN_RRT_RATINGS = "com.droidlogic.app.tv"; private static final String TAG_RATING_SYSTEM_DEFINITIONS = "rating-system-definitions"; private static final String TAG_RATING_SYSTEM_DEFINITION = "rating-system-definition"; @@ -96,6 +96,7 @@ public class DroidContentRatingsParser { //private final Context mContext; //private Resources mResources; private String mXmlVersionCode; + private final Object mLock = new Object(); private AtomicFile mAtomicFile_t; public DroidContentRatingsParser() { @@ -111,27 +112,29 @@ public class DroidContentRatingsParser { public List<ContentRatingSystemT> load_t() { //clearState(); + synchronized (mLock) { + final InputStream is; + Log.d(TAG, "==== start load_t===="); + try { + is = mAtomicFile_t.openRead(); + } catch (FileNotFoundException ex) { + Log.d(TAG, "==== load FileNotFoundException===="); + return null; + } - final InputStream is; - try { - is = mAtomicFile_t.openRead(); - } catch (FileNotFoundException ex) { - Log.d(TAG, "==== load FileNotFoundException===="); + XmlPullParser parser; + try { + parser = Xml.newPullParser(); + parser.setInput(new BufferedInputStream(is), StandardCharsets.UTF_8.name()); + return loadFromXml_t(parser); + } catch (IOException | XmlPullParserException ex) { + Log.w(TAG, "Failed to load tv input manager persistent store data.", ex); + //clearState(); + } finally { + IoUtils.closeQuietly(is); + } return null; } - - XmlPullParser parser; - try { - parser = Xml.newPullParser(); - parser.setInput(new BufferedInputStream(is), StandardCharsets.UTF_8.name()); - return loadFromXml_t(parser); - } catch (IOException | XmlPullParserException ex) { - Log.w(TAG, "Failed to load tv input manager persistent store data.", ex); - //clearState(); - } finally { - IoUtils.closeQuietly(is); - } - return null; } private List<ContentRatingSystemT> loadFromXml_t(XmlPullParser parser) throws IOException, XmlPullParserException { @@ -217,8 +220,8 @@ public class DroidContentRatingsParser { } private void clearState() { - //mBlockedRatings.clear(); - //mParentalControlsEnabled = false; + /*mBlockedRatings.clear(); + mParentalControlsEnabled = false;*/ } public class ContentRatingSystemT { diff --git a/core/java/com/droidlogic/app/tv/Program.java b/core/java/com/droidlogic/app/tv/Program.java index a6c7369..6510497 100644 --- a/core/java/com/droidlogic/app/tv/Program.java +++ b/core/java/com/droidlogic/app/tv/Program.java @@ -200,7 +200,9 @@ public final class Program implements Comparable<Program> { && Arrays.equals(mContentRatings, program.mContentRatings) && Arrays.equals(mCanonicalGenres, program.mCanonicalGenres) && mSeasonNumber == program.mSeasonNumber - && mEpisodeNumber == program.mEpisodeNumber; + && mEpisodeNumber == program.mEpisodeNumber + && Objects.equals(contentRatingsToString(mContentRatings), + contentRatingsToString(program.mContentRatings)); } @Override diff --git a/core/java/com/droidlogic/app/tv/TvControlManager.java b/core/java/com/droidlogic/app/tv/TvControlManager.java index c008e0f..dfb0aa1 100644 --- a/core/java/com/droidlogic/app/tv/TvControlManager.java +++ b/core/java/com/droidlogic/app/tv/TvControlManager.java @@ -123,6 +123,10 @@ public class TvControlManager { private AVPlaybackListener mAVPlaybackListener = null; private EasEventListener mEasListener = null; + private int rrt5XmlLoadStatus = 0; + public static int EVENT_RRT_SCAN_START = 1; + public static int EVENT_RRT_SCAN_END = 3; + private static TvControlManager mInstance; private native final void native_setup(Object tv_this); @@ -545,6 +549,7 @@ public class TvControlManager { if (mRrtListener != null) { int result = p.readInt(); Log.e(TAG, "RRT_EVENT_CALLBACK:" + result); + rrt5XmlLoadStatus = result; mRrtListener.onRRT5InfoUpdated(result); } break; @@ -4720,8 +4725,15 @@ public class TvControlManager { void onRRT5InfoUpdated(int status); } - public int updateRRTRes() { - return sendCmd(DTV_UPDATE_RRT); + public int updateRRTRes(int freq, int module, int mode) { + if (rrt5XmlLoadStatus == EVENT_RRT_SCAN_START) { + Log.d(TAG, "abandon updateRRTRes,becasue current status is : " + rrt5XmlLoadStatus); + return -1; + } + Log.d(TAG, "updateRRTRes,freq: " + freq+",module:"+module+",mode:"+mode); + int val[] = new int[]{freq, module, mode}; + rrt5XmlLoadStatus = EVENT_RRT_SCAN_START; + return sendCmdIntArray(DTV_UPDATE_RRT, val); } public class RrtSearchInfo { diff --git a/core/java/com/droidlogic/app/tv/TvDataBaseManager.java b/core/java/com/droidlogic/app/tv/TvDataBaseManager.java index 303baf7..ff17999 100644 --- a/core/java/com/droidlogic/app/tv/TvDataBaseManager.java +++ b/core/java/com/droidlogic/app/tv/TvDataBaseManager.java @@ -32,6 +32,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Arrays; +import java.util.Objects; import com.droidlogic.app.tv.DroidLogicTvUtils.*; @@ -1263,7 +1264,7 @@ public class TvDataBaseManager { } for (Program p : newPrograms) { - Log.d(TAG, "updatePrograms epg atsc title:"+p.getTitle()+" des:"+p.getDescription()+" chid:"+p.getChannelId()+" id:"+p.getId()+" start:" + p.getStartTimeUtcMillis() + " end:" + p.getEndTimeUtcMillis()); + Log.d(TAG, "epg todo:"+p.getTitle()+" desc:"+p.getDescription()+" chid:"+p.getChannelId()+" id:"+p.getId()+" ("+p.getStartTimeUtcMillis()+"-"+p.getEndTimeUtcMillis()); } int oldProgramsIndex = 0; @@ -1311,7 +1312,7 @@ public class TvDataBaseManager { // Exact match. No need to update. Move on to the next programs. oldProgramsIndex++; newProgramsIndex++; - Log.d(TAG, "\tmatch"); + Log.d(TAG, "\tepg match:cid("+newProgram.getChannelId()+")eid("+newProgram.getProgramId()+")desc("+newProgram.getTitle()+")time("+newProgram.getStartTimeUtcMillis()+"-"+newProgram.getEndTimeUtcMillis()+")"); } else if (needsUpdate(oldProgram, newProgram)) { // Partial match. Update the old program with the new one. // NOTE: Use 'update' in this case instead of 'insert' and 'delete'. There could @@ -1325,7 +1326,7 @@ public class TvDataBaseManager { updated = isProgramAtTime(newProgram, timeUtcMillis); - Log.d(TAG, "\tupdate"); + Log.d(TAG, "\tepg update:"+oldProgram.getId()+":cid("+newProgram.getChannelId()+")eid("+newProgram.getProgramId()+")desc("+newProgram.getTitle()+")time("+newProgram.getStartTimeUtcMillis()+"-"+newProgram.getEndTimeUtcMillis()+")"); } else if (oldProgram.getEndTimeUtcMillis() < newProgram.getEndTimeUtcMillis()) { // No match. Remove the old program first to see if the next program in // {@code oldPrograms} partially matches the new program. @@ -1334,9 +1335,9 @@ public class TvDataBaseManager { .build()); oldProgramsIndex++; - updated = isProgramAtTime(newProgram, timeUtcMillis); + updated = isProgramAtTime(oldProgram, timeUtcMillis); - Log.d(TAG, "\tdelete old"); + Log.d(TAG, "\tepg delete:"+oldProgram.getId()+":cid("+oldProgram.getChannelId()+")eid("+oldProgram.getProgramId()+")desc("+oldProgram.getTitle()+")time("+oldProgram.getStartTimeUtcMillis()+"-"+oldProgram.getEndTimeUtcMillis()+")"); } else { if (!isATSCSpecialProgram(newProgram)) { // No match. The new program does not match any of the old programs. Insert it @@ -1346,7 +1347,7 @@ public class TvDataBaseManager { updated = isProgramAtTime(newProgram, timeUtcMillis); - Log.d(TAG, "\tnew insert"); + Log.d(TAG, "\tepg new:"+newProgram.getId()+":cid("+newProgram.getChannelId()+")eid("+newProgram.getProgramId()+")desc("+newProgram.getTitle()+")time("+newProgram.getStartTimeUtcMillis()+"-"+newProgram.getEndTimeUtcMillis()+")"); } } } else { @@ -1356,7 +1357,7 @@ public class TvDataBaseManager { updated = isProgramAtTime(newProgram, timeUtcMillis); - Log.d(TAG, "no old, insert new"); + Log.d(TAG, "\tepg new:(old none)"+newProgram.getId()+":cid("+newProgram.getChannelId()+")eid("+newProgram.getProgramId()+")desc("+newProgram.getTitle()+")time("+newProgram.getStartTimeUtcMillis()+"-"+newProgram.getEndTimeUtcMillis()+")"); } newProgramsIndex++; } @@ -1404,6 +1405,10 @@ public class TvDataBaseManager { } else if (oldProgram.getDescription() == null && newProgram.getDescription() != null) { Log.d(TAG, "getDescription is old is null new not null"); return false; + } else if (!Objects.equals(Program.contentRatingsToString(oldProgram.getContentRatings()), + newProgram.getContentRatings())) { + Log.d(TAG, "ratings not eq"); + return false; } else { Log.d(TAG, "isProgramEq is eq true"); return true; |