summaryrefslogtreecommitdiff
path: root/libs/gui/Surface.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/gui/Surface.cpp')
-rw-r--r--libs/gui/Surface.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/libs/gui/Surface.cpp b/libs/gui/Surface.cpp
index 9191b2a379..7578a3db29 100644
--- a/libs/gui/Surface.cpp
+++ b/libs/gui/Surface.cpp
@@ -550,6 +550,9 @@ int Surface::perform(int operation, va_list args)
case NATIVE_WINDOW_SET_SURFACE_DAMAGE:
res = dispatchSetSurfaceDamage(args);
break;
+ case NATIVE_WINDOW_SET_SINGLE_BUFFER_MODE:
+ res = dispatchSetSingleBufferMode(args);
+ break;
default:
res = NAME_NOT_FOUND;
break;
@@ -660,6 +663,12 @@ int Surface::dispatchSetSurfaceDamage(va_list args) {
return NO_ERROR;
}
+int Surface::dispatchSetSingleBufferMode(va_list args) {
+ bool singleBufferMode = va_arg(args, int);
+ setSingleBufferMode(singleBufferMode);
+ return NO_ERROR;
+}
+
int Surface::connect(int api) {
static sp<IProducerListener> listener = new DummyProducerListener();
return connect(api, listener);
@@ -861,6 +870,19 @@ int Surface::setAsyncMode(bool async) {
return err;
}
+int Surface::setSingleBufferMode(bool singleBufferMode) {
+ ATRACE_CALL();
+ ALOGV("Surface::setSingleBufferMode (%d)", singleBufferMode);
+ Mutex::Autolock lock(mMutex);
+
+ status_t err = mGraphicBufferProducer->setSingleBufferMode(
+ singleBufferMode);
+ ALOGE_IF(err, "IGraphicsBufferProducer::setSingleBufferMode(%d) returned"
+ "%s", singleBufferMode, strerror(-err));
+
+ return err;
+}
+
int Surface::setBuffersDimensions(uint32_t width, uint32_t height)
{
ATRACE_CALL();