Home | History | Annotate | Download | only in audioflinger

Lines Matching full:observer

51 //  - observer must always be able to poll for and view the latest pushed state; it must never be
53 // - observer does not need to see every state in sequence; it is OK for it to skip states
58 // - work well if the observer runs more frequently than the mutator,
61 // and the mutator were to run more frequently than the observer.
70 // Let's call the fast mixer thread the "observer" and normal mixer thread the "mutator".
71 // We assume there is only a single observer and a single mutator; this is critical.
75 // previous read-only, observer can compare vs. current to see the subset that changed
76 // current read-only, this is the primary state for observer
77 // next read-only, when observer is ready to accept a new state it will shift it in:
81 // mutating invisible to observer, read/write to mutator
82 // Initialization is tricky, especially for the observer. If the observer starts execution
83 // before the mutator, there are no previous, current, or next states. And even if the observer
85 // To solve this, we'll have the observer idle until there is a next state,
88 // The observer polls for mutations, and receives a new state pointer after a
89 // a mutation is pushed onto the queue. To the observer, the state pointers are
90 // effectively in random order, that is the observer should not do address
133 // Observer APIs
140 // this allows the observer to diff the previous and new states.
158 // Push a new state, if any, out to the observer via the state queue.
169 BLOCK_UNTIL_ACKED, // also block until the push is acknowledged by the observer
177 // Register location of observer dump area
188 T mStates[kN]; // written by mutator, read by observer
191 atomic_uintptr_t mNext; // written by mutator to advance next, read by observer
192 volatile const T* mAck; // written by observer to acknowledge advance of next, read by mutator
194 // only used by observer
205 StateQueueObserverDump mObserverDummyDump; // default area for observer dump if not set
206 StateQueueObserverDump* mObserverDump; // pointer to active observer dump, always non-NULL