Fix sideband stream issues

- Notify a listener when sideband stream is set
- Mark a layer as visible when sideband stream is set, even though
no buffer is queued.

Change-Id: I9652bf530f2b5ce331533ec1bb3b10a815ca191c
This commit is contained in:
Wonsik Kim 2014-03-31 23:16:08 +09:00
parent 2e1f4b5212
commit afe3081e0e
2 changed files with 11 additions and 3 deletions

View File

@ -793,8 +793,16 @@ status_t BufferQueueProducer::disconnect(int api) {
}
status_t BufferQueueProducer::setSidebandStream(const sp<NativeHandle>& stream) {
Mutex::Autolock _l(mCore->mMutex);
mCore->mSidebandStream = stream;
sp<IConsumerListener> listener;
{ // Autolock scope
Mutex::Autolock _l(mCore->mMutex);
mCore->mSidebandStream = stream;
listener = mCore->mConsumerListener;
} // Autolock scope
if (listener != NULL) {
listener->onSidebandStreamChanged();
}
return NO_ERROR;
}

View File

@ -959,7 +959,7 @@ void Layer::onPostComposition() {
bool Layer::isVisible() const {
const Layer::State& s(mDrawingState);
return !(s.flags & layer_state_t::eLayerHidden) && s.alpha
&& (mActiveBuffer != NULL);
&& (mActiveBuffer != NULL || mSidebandStream != NULL);
}
Region Layer::latchBuffer(bool& recomputeVisibleRegions)