summaryrefslogtreecommitdiff
authorwei 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)
commit213f8c722b8a3ee6039bb0fcd3181d87ffbc17a6 (patch)
treed71fff19d022245e710b94b5ab9b19f6f166a5ac
parent64d392724b97fc214773b97b4b2e5d755551b93f (diff)
downloadtv-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
Diffstat
-rw-r--r--core/java/com/droidlogic/app/tv/DroidContentRatingsParser.java45
-rw-r--r--core/java/com/droidlogic/app/tv/Program.java4
-rw-r--r--core/java/com/droidlogic/app/tv/TvControlManager.java16
-rw-r--r--core/java/com/droidlogic/app/tv/TvDataBaseManager.java19
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;