Home | History | Annotate | Download | only in docs
      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 -> ATsetMarkerPosition
     25 ATsetMarkerPosition [label="AudioTrack::setMarkerPosition()\n[sets marker variables]"];
     26 ATsetMarkerPosition -> ATTwake
     27 Application -> ATsetPositionUpdatePeriod
     28 ATsetPositionUpdatePeriod [label="AudioTrack::setPositionUpdatePeriod()\n[sets update period variables]"];
     29 ATsetPositionUpdatePeriod -> ATTwake
     30 Application -> ATstart;
     31 
     32 resume [label="AudioTrackThread::resume()"];
     33 resume -> resume_body;
     34 
     35 resume_body -> resume_paused [label="true"];
     36 resume_body -> resume_merged [label="false"];
     37 
     38 ATTwake [label="AudioTrackThread::wake()\nif (!mPaused && mPausedInt && mPausedNs > 0)"];
     39 ATTwake-> ATTWake_wakeable [label="true"];
     40 ATTWake_wakeable [label="mIgnoreNextPausedInt = true\nmPausedInt = false\nsignal()"];
     41 ATTwake-> ATTWake_cannotwake [label="false"]
     42 ATTWake_cannotwake [label="ignore"];
     43 
     44 pause [label="mPaused = true"];
     45 pause -> return;
     46 
     47 threadLoop [label="AudioTrackThread::threadLoop()\nENTRY"];
     48 threadLoop -> threadLoop_1;
     49 threadLoop_1 [label="if (mPaused)"];
     50 threadLoop_1 -> threadLoop_1_true [label="true"];
     51 threadLoop_1 -> threadLoop_2 [label="false"];
     52 threadLoop_1_true [label="wait()\nreturn true"];
     53 threadLoop_2 [label="if (mIgnoreNextPausedInt)"];
     54 threadLoop_2 -> threadLoop_2_true [label="true"];
     55 threadLoop_2 -> threadLoop_3 [label="false"];
     56 threadLoop_2_true [label="mIgnoreNextPausedInt = false\nmPausedInt = false"];
     57 threadLoop_2_true -> threadLoop_3;
     58 threadLoop_3 [label="if (mPausedInt)"];
     59 threadLoop_3 -> threadLoop_3_true [label="true"];
     60 threadLoop_3 -> threadLoop_4 [label="false"];
     61 threadLoop_3_true [label="wait()\nmPausedInt = false\nreturn true"];
     62 threadLoop_4 [label="if (exitPending)"];
     63 threadLoop_4 -> threadLoop_4_true [label="true"];
     64 threadLoop_4 -> threadLoop_5 [label="false"];
     65 threadLoop_4_true [label="return false"];
     66 threadLoop_5 [label="ns = processAudioBuffer()"];
     67 threadLoop_5 -> threadLoop_6;
     68 threadLoop_6 [label="case ns"];
     69 threadLoop_6 -> threadLoop_6_0 [label="0"];
     70 threadLoop_6 -> threadLoop_6_NS_INACTIVE [label="NS_INACTIVE"];
     71 threadLoop_6 -> threadLoop_6_NS_NEVER [label="NS_NEVER"];
     72 threadLoop_6 -> threadLoop_6_NS_WHENEVER [label="NS_WHENEVER"];
     73 threadLoop_6 -> threadLoop_6_default [label="default"];
     74 threadLoop_6_default [label="if (ns < 0)"];
     75 threadLoop_6_default -> threadLoop_6_default_true [label="true"];
     76 threadLoop_6_default -> threadLoop_6_default_false [label="false"];
     77 threadLoop_6_default_true [label="FATAL"];
     78 threadLoop_6_default_false [label="pauseInternal(ns) [wake()-able]\nmPausedInternal = true\nmPausedNs = ns\nreturn true"];
     79 threadLoop_6_0 [label="return true"];
     80 threadLoop_6_NS_INACTIVE [label="pauseInternal()\nmPausedInternal = true\nmPausedNs = 0\nreturn true"];
     81 threadLoop_6_NS_NEVER [label="return false"];
     82 threadLoop_6_NS_WHENEVER [label="ns = 1s"];
     83 threadLoop_6_NS_WHENEVER -> threadLoop_6_default_false;
     84 
     85 }
     86