From 3c09c78aabcb9d314dfb400258fb99a37c7b50c9 Mon Sep 17 00:00:00 2001 From: Andy Hung Date: Mon, 29 Dec 2014 18:39:32 -0800 Subject: Event driven wake for AudioTrackThread notification changes Used for setMarkerPosition and setPositionUpdatePeriod. Change-Id: I0d94b929438a5cd94b295d7c1884f876fae8b5e7 --- media/libmedia/docs/paused.dot | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'media/libmedia/docs') diff --git a/media/libmedia/docs/paused.dot b/media/libmedia/docs/paused.dot index 8856647..11e1777 100644 --- a/media/libmedia/docs/paused.dot +++ b/media/libmedia/docs/paused.dot @@ -21,6 +21,12 @@ destructor [label="~AudioTrack()"]; destructor -> requestExit; requestExit [label="AudioTrackThread::requestExit()"]; requestExit -> resume; +Application -> ATsetMarkerPosition +ATsetMarkerPosition [label="AudioTrack::setMarkerPosition()\n[sets marker variables]"]; +ATsetMarkerPosition -> ATTwake +Application -> ATsetPositionUpdatePeriod +ATsetPositionUpdatePeriod [label="AudioTrack::setPositionUpdatePeriod()\n[sets update period variables]"]; +ATsetPositionUpdatePeriod -> ATTwake Application -> ATstart; resume [label="AudioTrackThread::resume()"]; @@ -29,6 +35,12 @@ resume -> resume_body; resume_body -> resume_paused [label="true"]; resume_body -> resume_merged [label="false"]; +ATTwake [label="AudioTrackThread::wake()\nif (!mPaused && mPausedInt && mPausedNs > 0)"]; +ATTwake-> ATTWake_wakeable [label="true"]; +ATTWake_wakeable [label="mIgnoreNextPausedInt = true\nmPausedInt = false\nsignal()"]; +ATTwake-> ATTWake_cannotwake [label="false"] +ATTWake_cannotwake [label="ignore"]; + pause [label="mPaused = true"]; pause -> return; @@ -63,7 +75,7 @@ threadLoop_6_default [label="if (ns < 0)"]; threadLoop_6_default -> threadLoop_6_default_true [label="true"]; threadLoop_6_default -> threadLoop_6_default_false [label="false"]; threadLoop_6_default_true [label="FATAL"]; -threadLoop_6_default_false [label="pauseInternal(ns)\nmPausedInternal = true\nmPausedNs = ns\nreturn true"]; +threadLoop_6_default_false [label="pauseInternal(ns) [wake()-able]\nmPausedInternal = true\nmPausedNs = ns\nreturn true"]; threadLoop_6_0 [label="return true"]; threadLoop_6_NS_INACTIVE [label="pauseInternal()\nmPausedInternal = true\nmPausedNs = 0\nreturn true"]; threadLoop_6_NS_NEVER [label="return false"]; -- cgit v1.1