summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmy Zhang <amyjojo@google.com>2020-12-22 12:48:52 -0800
committerAmy Zhang <amyjojo@google.com>2021-01-20 03:53:20 +0000
commitd3f0aa464c9a9a1d3e3a2297ad0ac3b0e5004f63 (patch)
treee3d1b9347dfe899b47ef3ca8b93bd8316f64ac0d
parent9923250234d691bcafe4bb0ec3f5960b87281642 (diff)
Only allow RecordDVR to flush buffer when the DVR is stopped
Test: make services Bug: 176108239 Change-Id: I5fa31c34cac83bb5952576adf86c5a31ec62d9b5 Merged-In: I5fa31c34cac83bb5952576adf86c5a31ec62d9b5
-rw-r--r--media/java/android/media/tv/tuner/dvr/DvrRecorder.java25
1 files changed, 22 insertions, 3 deletions
diff --git a/media/java/android/media/tv/tuner/dvr/DvrRecorder.java b/media/java/android/media/tv/tuner/dvr/DvrRecorder.java
index 887116725961..c4b622d0fba9 100644
--- a/media/java/android/media/tv/tuner/dvr/DvrRecorder.java
+++ b/media/java/android/media/tv/tuner/dvr/DvrRecorder.java
@@ -47,6 +47,7 @@ public class DvrRecorder implements AutoCloseable {
private static int sInstantId = 0;
private int mSegmentId = 0;
private int mOverflow;
+ private Boolean mIsStopped = null;
private native int nativeAttachFilter(Filter filter);
private native int nativeDetachFilter(Filter filter);
@@ -135,7 +136,13 @@ public class DvrRecorder implements AutoCloseable {
.write(FrameworkStatsLog.TV_TUNER_DVR_STATUS, mUserId,
FrameworkStatsLog.TV_TUNER_DVR_STATUS__TYPE__RECORD,
FrameworkStatsLog.TV_TUNER_DVR_STATUS__STATE__STARTED, mSegmentId, 0);
- return nativeStartDvr();
+ synchronized (mIsStopped) {
+ int result = nativeStartDvr();
+ if (result == Tuner.RESULT_SUCCESS) {
+ mIsStopped = false;
+ }
+ return result;
+ }
}
/**
@@ -152,7 +159,13 @@ public class DvrRecorder implements AutoCloseable {
.write(FrameworkStatsLog.TV_TUNER_DVR_STATUS, mUserId,
FrameworkStatsLog.TV_TUNER_DVR_STATUS__TYPE__RECORD,
FrameworkStatsLog.TV_TUNER_DVR_STATUS__STATE__STOPPED, mSegmentId, mOverflow);
- return nativeStopDvr();
+ synchronized (mIsStopped) {
+ int result = nativeStopDvr();
+ if (result == Tuner.RESULT_SUCCESS) {
+ mIsStopped = true;
+ }
+ return result;
+ }
}
/**
@@ -164,7 +177,13 @@ public class DvrRecorder implements AutoCloseable {
*/
@Result
public int flush() {
- return nativeFlushDvr();
+ synchronized (mIsStopped) {
+ if (mIsStopped) {
+ return nativeFlushDvr();
+ }
+ Log.w(TAG, "Cannot flush non-stopped Record DVR.");
+ return Tuner.RESULT_INVALID_STATE;
+ }
}
/**