Merge "SurfaceFlinger: use async mode for video & cam"
This commit is contained in:
commit
05ca9998cd
@ -22,7 +22,7 @@ ifeq ($(TARGET_BOARD_PLATFORM), omap3)
|
||||
LOCAL_CFLAGS += -DNO_RGBX_8888
|
||||
endif
|
||||
ifeq ($(TARGET_BOARD_PLATFORM), s5pc110)
|
||||
LOCAL_CFLAGS += -DHAS_CONTEXT_PRIORITY
|
||||
LOCAL_CFLAGS += -DHAS_CONTEXT_PRIORITY -DNEVER_DEFAULT_TO_ASYNC_MODE
|
||||
endif
|
||||
|
||||
|
||||
|
@ -86,6 +86,32 @@ status_t SurfaceTextureLayer::dequeueBuffer(int *buf,
|
||||
return res;
|
||||
}
|
||||
|
||||
status_t SurfaceTextureLayer::connect(int api) {
|
||||
status_t err = SurfaceTexture::connect(api);
|
||||
if (err == NO_ERROR) {
|
||||
switch(api) {
|
||||
case NATIVE_WINDOW_API_MEDIA:
|
||||
case NATIVE_WINDOW_API_CAMERA:
|
||||
// Camera preview and videos are rate-limited on the producer
|
||||
// side. If enabled for this build, we use async mode to always
|
||||
// show the most recent frame at the cost of requiring an
|
||||
// additional buffer.
|
||||
#ifndef NEVER_DEFAULT_TO_ASYNC_MODE
|
||||
err = setSynchronousMode(false);
|
||||
break;
|
||||
#endif
|
||||
// fall through to set synchronous mode when not defaulting to
|
||||
// async mode.
|
||||
deafult:
|
||||
err = setSynchronousMode(true);
|
||||
break;
|
||||
}
|
||||
if (err != NO_ERROR) {
|
||||
disconnect(api);
|
||||
}
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
}; // namespace android
|
||||
|
@ -50,6 +50,8 @@ protected:
|
||||
|
||||
virtual status_t dequeueBuffer(int *buf, uint32_t w, uint32_t h,
|
||||
uint32_t format, uint32_t usage);
|
||||
|
||||
virtual status_t connect(int api);
|
||||
};
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user