summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2012-09-30 11:48:10 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-09-30 11:48:11 -0700
commitd13df2463bd09d8c1fc5b20050d3262a4e89512d (patch)
treea684796ab498c092f7d98de69d105a2cfe3bf6e1 /include
parent73bbd1f1c493835f191ea2b0b72439292496b40a (diff)
parent003d9f71937070791418bf7efc1f7fe1e4c6b821 (diff)
downloadframeworks_av-d13df2463bd09d8c1fc5b20050d3262a4e89512d.zip
frameworks_av-d13df2463bd09d8c1fc5b20050d3262a4e89512d.tar.gz
frameworks_av-d13df2463bd09d8c1fc5b20050d3262a4e89512d.tar.bz2
Merge "Enable write side of MonoPipe to be shutdown" into jb-mr1-dev
Diffstat (limited to 'include')
-rw-r--r--include/media/nbaio/MonoPipe.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/include/media/nbaio/MonoPipe.h b/include/media/nbaio/MonoPipe.h
index c47bf6c..5fcfe9e 100644
--- a/include/media/nbaio/MonoPipe.h
+++ b/include/media/nbaio/MonoPipe.h
@@ -77,6 +77,17 @@ public:
void setAvgFrames(size_t setpoint);
size_t maxFrames() const { return mMaxFrames; }
+ // Set the shutdown state for the write side of a pipe.
+ // This may be called by an unrelated thread. When shutdown state is 'true',
+ // a write that would otherwise block instead returns a short transfer count.
+ // There is no guarantee how long it will take for the shutdown to be recognized,
+ // but it will not be an unbounded amount of time.
+ // The state can be restored to normal by calling shutdown(false).
+ void shutdown(bool newState = true);
+
+ // Return true if the write side of a pipe is currently shutdown.
+ bool isShutdown();
+
private:
// A pair of methods and a helper variable which allows the reader and the
// writer to update and observe the values of mFront and mNextRdPTS in an
@@ -114,6 +125,8 @@ private:
int64_t offsetTimestampByAudioFrames(int64_t ts, size_t audFrames);
LinearTransform mSamplesToLocalTime;
+
+ bool mIsShutdown; // whether shutdown(true) was called, no barriers are needed
};
} // namespace android