You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
3.4 KiB
86 lines
3.4 KiB
4 months ago
|
digraph paused {
|
||
|
initial [label="INITIAL\n\
|
||
|
mIgnoreNextPausedInt = false\n\
|
||
|
mPaused = false\n\
|
||
|
mPausedInt = false"];
|
||
|
|
||
|
resume_body [label="mIgnoreNextPausedInt = true\nif (mPaused || mPausedInt)"];
|
||
|
resume_paused [label="mPaused = false\nmPausedInt = false\nsignal()"];
|
||
|
resume_paused -> resume_merged;
|
||
|
resume_merged [label="return"];
|
||
|
|
||
|
Application -> ATstop;
|
||
|
ATstop [label="AudioTrack::stop()"];
|
||
|
ATstop -> pause;
|
||
|
Application -> ATpause;
|
||
|
ATpause [label="AudioTrack::pause()"];
|
||
|
ATpause -> pause;
|
||
|
ATstart -> resume;
|
||
|
ATstart [label="AudioTrack::start()"];
|
||
|
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()"];
|
||
|
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;
|
||
|
|
||
|
threadLoop [label="AudioTrackThread::threadLoop()\nENTRY"];
|
||
|
threadLoop -> threadLoop_1;
|
||
|
threadLoop_1 [label="if (mPaused)"];
|
||
|
threadLoop_1 -> threadLoop_1_true [label="true"];
|
||
|
threadLoop_1 -> threadLoop_2 [label="false"];
|
||
|
threadLoop_1_true [label="wait()\nreturn true"];
|
||
|
threadLoop_2 [label="if (mIgnoreNextPausedInt)"];
|
||
|
threadLoop_2 -> threadLoop_2_true [label="true"];
|
||
|
threadLoop_2 -> threadLoop_3 [label="false"];
|
||
|
threadLoop_2_true [label="mIgnoreNextPausedInt = false\nmPausedInt = false"];
|
||
|
threadLoop_2_true -> threadLoop_3;
|
||
|
threadLoop_3 [label="if (mPausedInt)"];
|
||
|
threadLoop_3 -> threadLoop_3_true [label="true"];
|
||
|
threadLoop_3 -> threadLoop_4 [label="false"];
|
||
|
threadLoop_3_true [label="wait()\nmPausedInt = false\nreturn true"];
|
||
|
threadLoop_4 [label="if (exitPending)"];
|
||
|
threadLoop_4 -> threadLoop_4_true [label="true"];
|
||
|
threadLoop_4 -> threadLoop_5 [label="false"];
|
||
|
threadLoop_4_true [label="return false"];
|
||
|
threadLoop_5 [label="ns = processAudioBuffer()"];
|
||
|
threadLoop_5 -> threadLoop_6;
|
||
|
threadLoop_6 [label="case ns"];
|
||
|
threadLoop_6 -> threadLoop_6_0 [label="0"];
|
||
|
threadLoop_6 -> threadLoop_6_NS_INACTIVE [label="NS_INACTIVE"];
|
||
|
threadLoop_6 -> threadLoop_6_NS_NEVER [label="NS_NEVER"];
|
||
|
threadLoop_6 -> threadLoop_6_NS_WHENEVER [label="NS_WHENEVER"];
|
||
|
threadLoop_6 -> threadLoop_6_default [label="default"];
|
||
|
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) [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"];
|
||
|
threadLoop_6_NS_WHENEVER [label="ns = 1s"];
|
||
|
threadLoop_6_NS_WHENEVER -> threadLoop_6_default_false;
|
||
|
|
||
|
}
|