Glenn Kasten | 3957eba | 2014-12-30 15:08:59 -0800 | [diff] [blame^] | 1 | digraph paused { |
| 2 | initial [label="INITIAL\n\ |
| 3 | mIgnoreNextPausedInt = false\n\ |
| 4 | mPaused = false\n\ |
| 5 | mPausedInt = false"]; |
| 6 | |
| 7 | resume_body [label="mIgnoreNextPausedInt = true\nif (mPaused || mPausedInt)"]; |
| 8 | resume_paused [label="mPaused = false\nmPausedInt = false\nsignal()"]; |
| 9 | resume_paused -> resume_merged; |
| 10 | resume_merged [label="return"]; |
| 11 | |
| 12 | Application -> ATstop; |
| 13 | ATstop [label="AudioTrack::stop()"]; |
| 14 | ATstop -> pause; |
| 15 | Application -> ATpause; |
| 16 | ATpause [label="AudioTrack::pause()"]; |
| 17 | ATpause -> pause; |
| 18 | ATstart -> resume; |
| 19 | ATstart [label="AudioTrack::start()"]; |
| 20 | destructor [label="~AudioTrack()"]; |
| 21 | destructor -> requestExit; |
| 22 | requestExit [label="AudioTrackThread::requestExit()"]; |
| 23 | requestExit -> resume; |
| 24 | Application -> ATstart; |
| 25 | |
| 26 | resume [label="AudioTrackThread::resume()"]; |
| 27 | resume -> resume_body; |
| 28 | |
| 29 | resume_body -> resume_paused [label="true"]; |
| 30 | resume_body -> resume_merged [label="false"]; |
| 31 | |
| 32 | pause [label="mPaused = true"]; |
| 33 | pause -> return; |
| 34 | |
| 35 | threadLoop [label="AudioTrackThread::threadLoop()\nENTRY"]; |
| 36 | threadLoop -> threadLoop_1; |
| 37 | threadLoop_1 [label="if (mPaused)"]; |
| 38 | threadLoop_1 -> threadLoop_1_true [label="true"]; |
| 39 | threadLoop_1 -> threadLoop_2 [label="false"]; |
| 40 | threadLoop_1_true [label="wait()\nreturn true"]; |
| 41 | threadLoop_2 [label="if (mIgnoreNextPausedInt)"]; |
| 42 | threadLoop_2 -> threadLoop_2_true [label="true"]; |
| 43 | threadLoop_2 -> threadLoop_3 [label="false"]; |
| 44 | threadLoop_2_true [label="mIgnoreNextPausedInt = false\nmPausedInt = false"]; |
| 45 | threadLoop_2_true -> threadLoop_3; |
| 46 | threadLoop_3 [label="if (mPausedInt)"]; |
| 47 | threadLoop_3 -> threadLoop_3_true [label="true"]; |
| 48 | threadLoop_3 -> threadLoop_4 [label="false"]; |
| 49 | threadLoop_3_true [label="wait()\nmPausedInt = false\nreturn true"]; |
| 50 | threadLoop_4 [label="if (exitPending)"]; |
| 51 | threadLoop_4 -> threadLoop_4_true [label="true"]; |
| 52 | threadLoop_4 -> threadLoop_5 [label="false"]; |
| 53 | threadLoop_4_true [label="return false"]; |
| 54 | threadLoop_5 [label="ns = processAudioBuffer()"]; |
| 55 | threadLoop_5 -> threadLoop_6; |
| 56 | threadLoop_6 [label="case ns"]; |
| 57 | threadLoop_6 -> threadLoop_6_0 [label="0"]; |
| 58 | threadLoop_6 -> threadLoop_6_NS_INACTIVE [label="NS_INACTIVE"]; |
| 59 | threadLoop_6 -> threadLoop_6_NS_NEVER [label="NS_NEVER"]; |
| 60 | threadLoop_6 -> threadLoop_6_NS_WHENEVER [label="NS_WHENEVER"]; |
| 61 | threadLoop_6 -> threadLoop_6_default [label="default"]; |
| 62 | threadLoop_6_default [label="if (ns < 0)"]; |
| 63 | threadLoop_6_default -> threadLoop_6_default_true [label="true"]; |
| 64 | threadLoop_6_default -> threadLoop_6_default_false [label="false"]; |
| 65 | threadLoop_6_default_true [label="FATAL"]; |
| 66 | threadLoop_6_default_false [label="pauseInternal(ns)\nmPausedInternal = true\nmPausedNs = ns\nreturn true"]; |
| 67 | threadLoop_6_0 [label="return true"]; |
| 68 | threadLoop_6_NS_INACTIVE [label="pauseInternal()\nmPausedInternal = true\nmPausedNs = 0\nreturn true"]; |
| 69 | threadLoop_6_NS_NEVER [label="return false"]; |
| 70 | threadLoop_6_NS_WHENEVER [label="ns = 1s"]; |
| 71 | threadLoop_6_NS_WHENEVER -> threadLoop_6_default_false; |
| 72 | |
| 73 | } |