summaryrefslogtreecommitdiff
authorwei wang <wei.wang@amlogic.com>2018-01-12 09:53:41 (GMT)
committer Sandy Luo <sandy.luo@amlogic.com>2018-01-19 08:12:24 (GMT)
commit29a33a0de24952b4ac3651ca49e3a3550c9506ad (patch)
treefbc3733f5be7b71be581e7137c967cfbea3ccdee
parentb849f474095629e71794252a4951115b39e650ae (diff)
downloadTvInput-29a33a0de24952b4ac3651ca49e3a3550c9506ad.zip
TvInput-29a33a0de24952b4ac3651ca49e3a3550c9506ad.tar.gz
TvInput-29a33a0de24952b4ac3651ca49e3a3550c9506ad.tar.bz2
TvInput: reset session's status if it's released [1/3]
PD# 158650 Change-Id: I92f891acd93eb066393e4828f8d993aa06185ed9
Diffstat
-rw-r--r--DroidLogicTvInput/src/com/droidlogic/tvinput/services/ATVInputService.java24
-rw-r--r--DroidLogicTvInput/src/com/droidlogic/tvinput/services/AV1InputService.java25
-rw-r--r--DroidLogicTvInput/src/com/droidlogic/tvinput/services/AV2InputService.java25
-rw-r--r--DroidLogicTvInput/src/com/droidlogic/tvinput/services/DTVInputService.java84
-rw-r--r--DroidLogicTvInput/src/com/droidlogic/tvinput/services/Hdmi1InputService.java25
-rw-r--r--DroidLogicTvInput/src/com/droidlogic/tvinput/services/Hdmi2InputService.java25
-rw-r--r--DroidLogicTvInput/src/com/droidlogic/tvinput/services/Hdmi3InputService.java25
-rw-r--r--DroidLogicTvInput/src/com/droidlogic/tvinput/services/Hdmi4InputService.java25
-rw-r--r--DroidLogicTvInput/src/com/droidlogic/tvinput/services/SPDIFInputService.java25
9 files changed, 215 insertions, 68 deletions
diff --git a/DroidLogicTvInput/src/com/droidlogic/tvinput/services/ATVInputService.java b/DroidLogicTvInput/src/com/droidlogic/tvinput/services/ATVInputService.java
index a34c4a2..a3ae269 100644
--- a/DroidLogicTvInput/src/com/droidlogic/tvinput/services/ATVInputService.java
+++ b/DroidLogicTvInput/src/com/droidlogic/tvinput/services/ATVInputService.java
@@ -99,6 +99,13 @@ public class ATVInputService extends DroidLogicTvInputService {
}
}
+ @Override
+ public void doReleaseFinish(int sessionId) {
+ Utils.logd(TAG, "doReleaseFinish,sessionId:"+sessionId);
+ ATVSessionImpl session = sessionMap.get(sessionId);
+ if (session != null)
+ session.performDoReleaseSession();
+ }
public class ATVSessionImpl extends TvInputBaseSession {
private final Context mContext;
@@ -127,15 +134,24 @@ public class ATVInputService extends DroidLogicTvInputService {
public boolean onSetSurface(Surface surface) {
return setSurfaceInService(surface,this);
}
-
+ @Override
+ public void onRelease() {
+ //doRelease();
+ Log.d(TAG, "onRelease,session:"+this);
+ doReleaseInService(getSessionId());
+ }
@Override
public boolean onTune(Uri channelUri) {
return doTuneInService(channelUri, getSessionId());
}
- @Override
- public void doRelease() {
- super.doRelease();
+
+ public void performDoReleaseSession() {
+ super.performDoReleaseSession();
+ if (mCurrentSession != null && mCurrentSession.getSessionId() == getSessionId()) {
+ mCurrentSession = null;
+ registerInputSession(null);
+ }
}
@Override
diff --git a/DroidLogicTvInput/src/com/droidlogic/tvinput/services/AV1InputService.java b/DroidLogicTvInput/src/com/droidlogic/tvinput/services/AV1InputService.java
index da02412..d1e336d 100644
--- a/DroidLogicTvInput/src/com/droidlogic/tvinput/services/AV1InputService.java
+++ b/DroidLogicTvInput/src/com/droidlogic/tvinput/services/AV1InputService.java
@@ -141,6 +141,14 @@ public class AV1InputService extends DroidLogicTvInputService {
}
}
+ @Override
+ public void doReleaseFinish(int sessionId) {
+ Utils.logd(TAG, "doReleaseFinish,sessionId:"+sessionId);
+ AV1InputSession session = sessionMap.get(sessionId);
+ if (session != null)
+ session.performDoReleaseSession();
+ }
+
public class AV1InputSession extends TvInputBaseSession implements DTVSubtitleView.SubtitleDataListener{
private TvInputManager mTvInputManager;
private final Context mContext;
@@ -263,6 +271,12 @@ public class AV1InputService extends DroidLogicTvInputService {
return setSurfaceInService(surface,this);
}
@Override
+ public void onRelease() {
+ //doRelease();
+ Log.d(TAG, "onRelease,session:"+this);
+ doReleaseInService(getSessionId());
+ }
+ @Override
public boolean onTune(Uri channelUri) {
isUnlockCurrent_NR = false;
mUnblockedRatingSet.clear();
@@ -285,9 +299,9 @@ public class AV1InputService extends DroidLogicTvInputService {
}
}
}
- @Override
- public void doRelease() {
- super.doRelease();
+
+ public void performDoReleaseSession() {
+ super.performDoReleaseSession();
mUnblockedRatingSet.clear();
stopSubtitle();
releaseWorkThread();
@@ -301,7 +315,10 @@ public class AV1InputService extends DroidLogicTvInputService {
if (sessionMap.containsKey(getSessionId())) {
sessionMap.remove(getSessionId());
}
-
+ if (mCurrentSession != null && mCurrentSession.getSessionId() == getSessionId()) {
+ mCurrentSession = null;
+ registerInputSession(null);
+ }
mSubtitleView = null;
}
diff --git a/DroidLogicTvInput/src/com/droidlogic/tvinput/services/AV2InputService.java b/DroidLogicTvInput/src/com/droidlogic/tvinput/services/AV2InputService.java
index bc410f9..f789796 100644
--- a/DroidLogicTvInput/src/com/droidlogic/tvinput/services/AV2InputService.java
+++ b/DroidLogicTvInput/src/com/droidlogic/tvinput/services/AV2InputService.java
@@ -141,6 +141,14 @@ public class AV2InputService extends DroidLogicTvInputService {
}
}
+ @Override
+ public void doReleaseFinish(int sessionId) {
+ Utils.logd(TAG, "doReleaseFinish,sessionId:"+sessionId);
+ AV2InputSession session = sessionMap.get(sessionId);
+ if (session != null)
+ session.performDoReleaseSession();
+ }
+
public class AV2InputSession extends TvInputBaseSession implements DTVSubtitleView.SubtitleDataListener{
private TvInputManager mTvInputManager;
private final Context mContext;
@@ -263,6 +271,12 @@ public class AV2InputService extends DroidLogicTvInputService {
return setSurfaceInService(surface,this);
}
@Override
+ public void onRelease() {
+ //doRelease();
+ Log.d(TAG, "onRelease,session:"+this);
+ doReleaseInService(getSessionId());
+ }
+ @Override
public boolean onTune(Uri channelUri) {
isUnlockCurrent_NR = false;
mUnblockedRatingSet.clear();
@@ -285,9 +299,9 @@ public class AV2InputService extends DroidLogicTvInputService {
}
}
}
- @Override
- public void doRelease() {
- super.doRelease();
+
+ public void performDoReleaseSession() {
+ super.performDoReleaseSession();
mUnblockedRatingSet.clear();
stopSubtitle();
releaseWorkThread();
@@ -301,7 +315,10 @@ public class AV2InputService extends DroidLogicTvInputService {
if (sessionMap.containsKey(getSessionId())) {
sessionMap.remove(getSessionId());
}
-
+ if (mCurrentSession != null && mCurrentSession.getSessionId() == getSessionId()) {
+ mCurrentSession = null;
+ registerInputSession(null);
+ }
mSubtitleView = null;
}
diff --git a/DroidLogicTvInput/src/com/droidlogic/tvinput/services/DTVInputService.java b/DroidLogicTvInput/src/com/droidlogic/tvinput/services/DTVInputService.java
index 21a3b47..535daec 100644
--- a/DroidLogicTvInput/src/com/droidlogic/tvinput/services/DTVInputService.java
+++ b/DroidLogicTvInput/src/com/droidlogic/tvinput/services/DTVInputService.java
@@ -166,7 +166,7 @@ public class DTVInputService extends DroidLogicTvInputService implements TvContr
String action = intent.getAction();
Log.d(TAG, "-----onReceive:"+action);
if (mCurrentSession != null)
- mCurrentSession.doRelease();
+ mCurrentSession.performDoReleaseSession();
resetScanStoreListener();
}
};
@@ -264,6 +264,14 @@ public class DTVInputService extends DroidLogicTvInputService implements TvContr
}
@Override
+ public void doReleaseFinish(int sessionId) {
+ Utils.logd(TAG, "doReleaseFinish,sessionId:"+sessionId);
+ DTVSessionImpl session = sessionMap.get(sessionId);
+ if (session != null)
+ session.performDoReleaseSession();
+ }
+
+ @Override
public void onSigChanged(TVInSignalInfo signal_info) {
if (mTvControlManager.GetCurrentSourceInput() == DroidLogicTvUtils.DEVICE_ID_DTV
|| mTvControlManager.GetCurrentVirtualSourceInput() == DroidLogicTvUtils.DEVICE_ID_ADTV) {
@@ -485,9 +493,15 @@ public class DTVInputService extends DroidLogicTvInputService implements TvContr
@Override
public boolean onSetSurface(Surface surface) {
+ Log.d(TAG,"onSetSurface:"+surface);
return setSurfaceInService(surface,this);
}
-
+ @Override
+ public void onRelease() {
+ //doRelease();
+ Log.d(TAG, "onRelease,session:"+this);
+ doReleaseInService(getSessionId());
+ }
@Override
public void onOverlayViewSizeChanged(int width, int height) {
Log.d(TAG, "onOverlayViewSizeChanged: "+width+","+height);
@@ -537,10 +551,10 @@ public class DTVInputService extends DroidLogicTvInputService implements TvContr
}
};
- @Override
- public void doRelease() {
- Log.d(TAG, "release:"+this);
- super.doRelease();
+
+ public void performDoReleaseSession() {
+ Log.d(TAG, "performDoReleaseSession:"+this);
+ super.performDoReleaseSession();
cancelAllMessagesInQuene();
if (mSystemControlManager.getPropertyBoolean("persist.sys.getdtvtime.isneed", false)) {
int autoTimeValue = Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 0);
@@ -573,8 +587,10 @@ public class DTVInputService extends DroidLogicTvInputService implements TvContr
if (sessionMap.containsKey(getSessionId())) {
sessionMap.remove(getSessionId());
}
- if (mCurrentSession.getSessionId() == getSessionId())
+ if (mCurrentSession != null && mCurrentSession.getSessionId() == getSessionId()) {
mCurrentSession = null;
+ registerInputSession(null);
+ }
}
@Override
@@ -673,6 +689,7 @@ public class DTVInputService extends DroidLogicTvInputService implements TvContr
/*if (mCurrentSession == msg.obj) why?*/ {
switch (msg.what) {
case MSG_PLAY:
+ Log.d(TAG, "MSG_PLAY");
doPlay((Uri)msg.obj);
break;
case MSG_PARENTAL_CONTROL:
@@ -754,7 +771,9 @@ public class DTVInputService extends DroidLogicTvInputService implements TvContr
}
protected void switchToSourceInput(Uri uri) {
+ Log.d(TAG, "switchToSourceInput uri=" + uri + " this:"+ this);
if (mHandler != null) {
+ Log.d(TAG, "--remove msg_play and start a new one");
mHandler.removeMessages(MSG_PLAY);
resetWorkThread();
mHandler.obtainMessage(MSG_PLAY, uri).sendToTarget();
@@ -2328,7 +2347,7 @@ public class DTVInputService extends DroidLogicTvInputService implements TvContr
private boolean auto_retune_service = true;
private HandlerThread mHandlerThread;
- private Handler mHandler;
+ private Handler mMonitorHandler;
private HandlerThread mHandlerThreadEPG;
private Handler mHandlerEPG;
private Context mContext;
@@ -2427,7 +2446,7 @@ public class DTVInputService extends DroidLogicTvInputService implements TvContr
mHandlerThread = new HandlerThread(getClass().getSimpleName());
mHandlerThread.start();
- mHandler = new Handler(mHandlerThread.getLooper()) {
+ mMonitorHandler = new Handler(mHandlerThread.getLooper()) {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
@@ -2491,8 +2510,8 @@ public class DTVInputService extends DroidLogicTvInputService implements TvContr
if (mHandlerEPG != null)
mHandlerEPG.obtainMessage(MSG_MONITOR_EVENT, event).sendToTarget();
} else {
- if (mHandler != null)
- mHandler.obtainMessage(MSG_MONITOR_EVENT, event).sendToTarget();
+ if (mMonitorHandler != null)
+ mMonitorHandler.obtainMessage(MSG_MONITOR_EVENT, event).sendToTarget();
}
}
};
@@ -2574,13 +2593,12 @@ public class DTVInputService extends DroidLogicTvInputService implements TvContr
mCCObserver = null;
}
- if (mHandler != null) {/*take care of rescan befor epgScanner=null*/
- mHandler.removeMessages(MSG_MONITOR_RESCAN_SERVICE);
- mHandler.removeMessages(MSG_MONITOR_RESCAN_TIME);
+ if (mMonitorHandler != null) {/*take care of rescan befor epgScanner=null*/
+ mMonitorHandler.removeMessages(MSG_MONITOR_RESCAN_SERVICE);
+ mMonitorHandler.removeMessages(MSG_MONITOR_RESCAN_TIME);
}
if (mHandlerEPG != null)
mHandlerEPG.removeCallbacksAndMessages(null);
-
synchronized (this) {
mTvControlManager.setStorDBListener(null);
mTvControlManager.DtvStopScan();
@@ -2589,9 +2607,9 @@ public class DTVInputService extends DroidLogicTvInputService implements TvContr
epgScanner.destroy();
epgScanner = null;
}
- if (mHandler != null) {
- mHandler.removeCallbacksAndMessages(null);
- mHandler = null;
+ if (mMonitorHandler != null) {
+ mMonitorHandler.removeCallbacksAndMessages(null);
+ mMonitorHandler = null;
}
if (mHandlerThread != null) {
@@ -2664,11 +2682,11 @@ public class DTVInputService extends DroidLogicTvInputService implements TvContr
Log.d(TAG, "monitor may exit, ignore.");
return;
}
- if (mHandler != null) {
- mHandler.removeMessages(MSG_MONITOR_RESCAN_SERVICE);
+ if (mMonitorHandler != null) {
+ mMonitorHandler.removeMessages(MSG_MONITOR_RESCAN_SERVICE);
if (on && (auto_rescan_service == AUTO_RESCAN_CONTINUOUS)) {
Log.d(TAG, "rescanServiceLater");
- mHandler.sendEmptyMessageDelayed(MSG_MONITOR_RESCAN_SERVICE, AUTO_RESCAN_SERVICE_INTERVAL);
+ mMonitorHandler.sendEmptyMessageDelayed(MSG_MONITOR_RESCAN_SERVICE, AUTO_RESCAN_SERVICE_INTERVAL);
}
}
if (on) {
@@ -2695,10 +2713,10 @@ public class DTVInputService extends DroidLogicTvInputService implements TvContr
return;
}
if (mHandler != null) {
- mHandler.removeMessages(MSG_MONITOR_RESCAN_TIME);
+ mMonitorHandler.removeMessages(MSG_MONITOR_RESCAN_TIME);
if (on && (auto_rescan_time == AUTO_RESCAN_CONTINUOUS)) {
Log.d(TAG, "rescanTimeLater");
- mHandler.sendEmptyMessageDelayed(MSG_MONITOR_RESCAN_TIME, AUTO_RESCAN_TIME_INTERVAL);
+ mMonitorHandler.sendEmptyMessageDelayed(MSG_MONITOR_RESCAN_TIME, AUTO_RESCAN_TIME_INTERVAL);
}
}
if (on) {
@@ -3438,7 +3456,7 @@ public class DTVInputService extends DroidLogicTvInputService implements TvContr
private final String mInputId;
private final Context mContext;
- private final Handler mHandler;
+ private final Handler mRecordingHandler;
private final Random mRandom = new Random();
private static final int MSG_TUNE = 1;
@@ -3476,7 +3494,7 @@ public class DTVInputService extends DroidLogicTvInputService implements TvContr
HandlerThread handlerThread = new HandlerThread(TAG);
handlerThread.start();
- mHandler = new Handler(handlerThread.getLooper(), this);
+ mRecordingHandler = new Handler(handlerThread.getLooper(), this);
mStorageDir = new File(getCacheStoragePath());
@@ -3627,7 +3645,7 @@ public class DTVInputService extends DroidLogicTvInputService implements TvContr
private void exeRelease() {
// Current recording will be canceled.
mTvControlManager.stopRecording("atsc-rec", null);
- mHandler.getLooper().quitSafely();
+ mRecordingHandler.getLooper().quitSafely();
}
private final String SORT_BY_TIME = TvContract.Programs.COLUMN_START_TIME_UTC_MILLIS
@@ -3696,8 +3714,8 @@ public class DTVInputService extends DroidLogicTvInputService implements TvContr
if (DEBUG) {
Log.d(TAG, "Requesting recording session tune: " + channelUri);
}
- mHandler.removeCallbacksAndMessages(null);
- mHandler.obtainMessage(MSG_TUNE, channelUri).sendToTarget();
+ mRecordingHandler.removeCallbacksAndMessages(null);
+ mRecordingHandler.obtainMessage(MSG_TUNE, channelUri).sendToTarget();
}
@Override
@@ -3705,8 +3723,8 @@ public class DTVInputService extends DroidLogicTvInputService implements TvContr
if (DEBUG) {
Log.d(TAG, "Requesting recording session release.");
}
- mHandler.removeCallbacksAndMessages(null);
- mHandler.sendEmptyMessage(MSG_RELEASE);
+ mRecordingHandler.removeCallbacksAndMessages(null);
+ mRecordingHandler.sendEmptyMessage(MSG_RELEASE);
}
@Override
@@ -3714,7 +3732,7 @@ public class DTVInputService extends DroidLogicTvInputService implements TvContr
if (DEBUG) {
Log.d(TAG, "Requesting start recording.");
}
- mHandler.sendEmptyMessage(MSG_START_RECORDING);
+ mRecordingHandler.sendEmptyMessage(MSG_START_RECORDING);
}
@Override
@@ -3722,7 +3740,7 @@ public class DTVInputService extends DroidLogicTvInputService implements TvContr
if (DEBUG) {
Log.d(TAG, "Requesting stop recording.");
}
- mHandler.sendEmptyMessage(MSG_STOP_RECORDING);
+ mRecordingHandler.sendEmptyMessage(MSG_STOP_RECORDING);
}
@@ -3763,7 +3781,7 @@ public class DTVInputService extends DroidLogicTvInputService implements TvContr
case TvControlManager.RecorderEvent.EVENT_RECORDER_START:
break;
case TvControlManager.RecorderEvent.EVENT_RECORDER_STOP:
- mHandler.obtainMessage(MSG_RECORDING_RESULT, ev.Error == 0).sendToTarget();
+ mRecordingHandler.obtainMessage(MSG_RECORDING_RESULT, ev.Error == 0).sendToTarget();
break;
}
}
diff --git a/DroidLogicTvInput/src/com/droidlogic/tvinput/services/Hdmi1InputService.java b/DroidLogicTvInput/src/com/droidlogic/tvinput/services/Hdmi1InputService.java
index d8d2683..b2d36af 100644
--- a/DroidLogicTvInput/src/com/droidlogic/tvinput/services/Hdmi1InputService.java
+++ b/DroidLogicTvInput/src/com/droidlogic/tvinput/services/Hdmi1InputService.java
@@ -65,6 +65,14 @@ public class Hdmi1InputService extends DroidLogicTvInputService {
}
}
+ @Override
+ public void doReleaseFinish(int sessionId) {
+ Utils.logd(TAG, "doReleaseFinish,sessionId:"+sessionId);
+ Hdmi1InputSession session = sessionMap.get(sessionId);
+ if (session != null)
+ session.performDoReleaseSession();
+ }
+
public class Hdmi1InputSession extends TvInputBaseSession {
public Hdmi1InputSession(Context context, String inputId, int deviceId) {
super(context, inputId, deviceId);
@@ -79,15 +87,24 @@ public class Hdmi1InputService extends DroidLogicTvInputService {
public boolean onSetSurface(Surface surface) {
return setSurfaceInService(surface,this);
}
-
+ @Override
+ public void onRelease() {
+ //doRelease();
+ Utils.logd(TAG, "onRelease,session:"+this);
+ doReleaseInService(getSessionId());
+ }
@Override
public boolean onTune(Uri channelUri) {
return doTuneInService(channelUri, getSessionId());
}
- @Override
- public void doRelease() {
- super.doRelease();
+
+ public void performDoReleaseSession() {
+ super.performDoReleaseSession();
+ if (mCurrentSession != null && mCurrentSession.getSessionId() == getSessionId()) {
+ mCurrentSession = null;
+ registerInputSession(null);
+ }
}
@Override
diff --git a/DroidLogicTvInput/src/com/droidlogic/tvinput/services/Hdmi2InputService.java b/DroidLogicTvInput/src/com/droidlogic/tvinput/services/Hdmi2InputService.java
index 3ae5d86..dc5bd38 100644
--- a/DroidLogicTvInput/src/com/droidlogic/tvinput/services/Hdmi2InputService.java
+++ b/DroidLogicTvInput/src/com/droidlogic/tvinput/services/Hdmi2InputService.java
@@ -64,7 +64,13 @@ public class Hdmi2InputService extends DroidLogicTvInputService {
}
}
-
+ @Override
+ public void doReleaseFinish(int sessionId) {
+ Utils.logd(TAG, "doReleaseFinish,sessionId:"+sessionId);
+ Hdmi2InputSession session = sessionMap.get(sessionId);
+ if (session != null)
+ session.performDoReleaseSession();
+ }
public class Hdmi2InputSession extends TvInputBaseSession {
public Hdmi2InputSession(Context context, String inputId, int deviceId) {
super(context, inputId, deviceId);
@@ -79,15 +85,24 @@ public class Hdmi2InputService extends DroidLogicTvInputService {
public boolean onSetSurface(Surface surface) {
return setSurfaceInService(surface,this);
}
-
+ @Override
+ public void onRelease() {
+ //doRelease();
+ Utils.logd(TAG, "onRelease,session:"+this);
+ doReleaseInService(getSessionId());
+ }
@Override
public boolean onTune(Uri channelUri) {
return doTuneInService(channelUri, getSessionId());
}
- @Override
- public void doRelease() {
- super.doRelease();
+
+ public void performDoReleaseSession() {
+ super.performDoReleaseSession();
+ if (mCurrentSession != null && mCurrentSession.getSessionId() == getSessionId()) {
+ mCurrentSession = null;
+ registerInputSession(null);
+ }
}
@Override
diff --git a/DroidLogicTvInput/src/com/droidlogic/tvinput/services/Hdmi3InputService.java b/DroidLogicTvInput/src/com/droidlogic/tvinput/services/Hdmi3InputService.java
index eb4a1fd..f1661ba 100644
--- a/DroidLogicTvInput/src/com/droidlogic/tvinput/services/Hdmi3InputService.java
+++ b/DroidLogicTvInput/src/com/droidlogic/tvinput/services/Hdmi3InputService.java
@@ -65,7 +65,13 @@ public class Hdmi3InputService extends DroidLogicTvInputService {
}
}
-
+ @Override
+ public void doReleaseFinish(int sessionId) {
+ Utils.logd(TAG, "doReleaseFinish,sessionId:"+sessionId);
+ Hdmi3InputSession session = sessionMap.get(sessionId);
+ if (session != null)
+ session.performDoReleaseSession();
+ }
public class Hdmi3InputSession extends TvInputBaseSession {
public Hdmi3InputSession(Context context, String inputId, int deviceId) {
super(context, inputId, deviceId);
@@ -80,15 +86,24 @@ public class Hdmi3InputService extends DroidLogicTvInputService {
public boolean onSetSurface(Surface surface) {
return setSurfaceInService(surface,this);
}
-
+ @Override
+ public void onRelease() {
+ //doRelease();
+ Utils.logd(TAG, "onRelease,session:"+this);
+ doReleaseInService(getSessionId());
+ }
@Override
public boolean onTune(Uri channelUri) {
return doTuneInService(channelUri, getSessionId());
}
- @Override
- public void doRelease() {
- super.doRelease();
+
+ public void performDoReleaseSession() {
+ super.performDoReleaseSession();
+ if (mCurrentSession != null && mCurrentSession.getSessionId() == getSessionId()) {
+ mCurrentSession = null;
+ registerInputSession(null);
+ }
}
@Override
diff --git a/DroidLogicTvInput/src/com/droidlogic/tvinput/services/Hdmi4InputService.java b/DroidLogicTvInput/src/com/droidlogic/tvinput/services/Hdmi4InputService.java
index db490c6..ffb7ea0 100644
--- a/DroidLogicTvInput/src/com/droidlogic/tvinput/services/Hdmi4InputService.java
+++ b/DroidLogicTvInput/src/com/droidlogic/tvinput/services/Hdmi4InputService.java
@@ -65,7 +65,13 @@ public class Hdmi4InputService extends DroidLogicTvInputService {
}
}
-
+ @Override
+ public void doReleaseFinish(int sessionId) {
+ Utils.logd(TAG, "doReleaseFinish,sessionId:"+sessionId);
+ Hdmi4InputSession session = sessionMap.get(sessionId);
+ if (session != null)
+ session.performDoReleaseSession();
+ }
public class Hdmi4InputSession extends TvInputBaseSession {
public Hdmi4InputSession(Context context, String inputId, int deviceId) {
super(context, inputId, deviceId);
@@ -80,15 +86,24 @@ public class Hdmi4InputService extends DroidLogicTvInputService {
public boolean onSetSurface(Surface surface) {
return setSurfaceInService(surface,this);
}
-
+ @Override
+ public void onRelease() {
+ //doRelease();
+ Utils.logd(TAG, "onRelease,session:"+this);
+ doReleaseInService(getSessionId());
+ }
@Override
public boolean onTune(Uri channelUri) {
return doTuneInService(channelUri, getSessionId());
}
- @Override
- public void doRelease() {
- super.doRelease();
+
+ public void performDoReleaseSession() {
+ super.performDoReleaseSession();
+ if (mCurrentSession != null && mCurrentSession.getSessionId() == getSessionId()) {
+ mCurrentSession = null;
+ registerInputSession(null);
+ }
}
@Override
diff --git a/DroidLogicTvInput/src/com/droidlogic/tvinput/services/SPDIFInputService.java b/DroidLogicTvInput/src/com/droidlogic/tvinput/services/SPDIFInputService.java
index a5939b8..52e2860 100644
--- a/DroidLogicTvInput/src/com/droidlogic/tvinput/services/SPDIFInputService.java
+++ b/DroidLogicTvInput/src/com/droidlogic/tvinput/services/SPDIFInputService.java
@@ -52,6 +52,14 @@ public class SPDIFInputService extends DroidLogicTvInputService {
}
}
+ @Override
+ public void doReleaseFinish(int sessionId) {
+ Utils.logd(TAG, "doReleaseFinish,sessionId:"+sessionId);
+ SPDIFInputSession session = sessionMap.get(sessionId);
+ if (session != null)
+ session.performDoReleaseSession();
+ }
+
public class SPDIFInputSession extends TvInputBaseSession {
public SPDIFInputSession(Context context, String inputId, int deviceId) {
super(context, inputId, deviceId);
@@ -66,15 +74,24 @@ public class SPDIFInputService extends DroidLogicTvInputService {
public boolean onSetSurface(Surface surface) {
return setSurfaceInService(surface,this);
}
-
+ @Override
+ public void onRelease() {
+ //doRelease();
+ Utils.logd(TAG, "onRelease,session:"+this);
+ doReleaseInService(getSessionId());
+ }
@Override
public boolean onTune(Uri channelUri) {
return doTuneInService(channelUri, getSessionId());
}
- @Override
- public void doRelease() {
- super.doRelease();
+
+ public void performDoReleaseSession() {
+ super.performDoReleaseSession();
+ if (mCurrentSession != null && mCurrentSession.getSessionId() == getSessionId()) {
+ mCurrentSession = null;
+ registerInputSession(null);
+ }
}
@Override