diff options
| author | Mathias Agopian <mathias@google.com> | 2010-05-21 14:19:50 -0700 |
|---|---|---|
| committer | Mathias Agopian <mathias@google.com> | 2010-05-21 14:34:32 -0700 |
| commit | 25f0bdaea6d1a34aae3faf6688cad4fbebcca969 (patch) | |
| tree | 8600372f2cb6f54254d2c7e0f7018c039e07c4b6 /libs/surfaceflinger_client | |
| parent | 4f5f2786b2c850ad0d772c7707ddbe55c3b7adf6 (diff) | |
| download | frameworks_base-25f0bdaea6d1a34aae3faf6688cad4fbebcca969.zip frameworks_base-25f0bdaea6d1a34aae3faf6688cad4fbebcca969.tar.gz frameworks_base-25f0bdaea6d1a34aae3faf6688cad4fbebcca969.tar.bz2 | |
added native_window_set_buffer_count()
this method can be used to change the number of buffers
associated to a native window. the default is two.
Change-Id: I608b959e6b29d77f95edb23c31dc9b099a758f2f
Diffstat (limited to 'libs/surfaceflinger_client')
| -rw-r--r-- | libs/surfaceflinger_client/SharedBufferStack.cpp | 3 | ||||
| -rw-r--r-- | libs/surfaceflinger_client/Surface.cpp | 9 |
2 files changed, 11 insertions, 1 deletions
diff --git a/libs/surfaceflinger_client/SharedBufferStack.cpp b/libs/surfaceflinger_client/SharedBufferStack.cpp index 5deeabb..e2e1591 100644 --- a/libs/surfaceflinger_client/SharedBufferStack.cpp +++ b/libs/surfaceflinger_client/SharedBufferStack.cpp @@ -463,6 +463,9 @@ status_t SharedBufferClient::setBufferCount( if (uint32_t(bufferCount) >= SharedBufferStack::NUM_BUFFER_MAX) return BAD_VALUE; + if (uint32_t(bufferCount) < SharedBufferStack::NUM_BUFFER_MIN) + return BAD_VALUE; + RWLock::AutoWLock _wr(mLock); status_t err = ipc(bufferCount); diff --git a/libs/surfaceflinger_client/Surface.cpp b/libs/surfaceflinger_client/Surface.cpp index 4d5c0b6..5f42af0 100644 --- a/libs/surfaceflinger_client/Surface.cpp +++ b/libs/surfaceflinger_client/Surface.cpp @@ -584,6 +584,9 @@ int Surface::perform(int operation, va_list args) case NATIVE_WINDOW_SET_CROP: res = dispatch_crop( args ); break; + case NATIVE_WINDOW_SET_BUFFER_COUNT: + res = dispatch_set_buffer_count( args ); + break; default: res = NAME_NOT_FOUND; break; @@ -607,6 +610,10 @@ int Surface::dispatch_crop(va_list args) { android_native_rect_t const* rect = va_arg(args, android_native_rect_t*); return crop( reinterpret_cast<Rect const*>(rect) ); } +int Surface::dispatch_set_buffer_count(va_list args) { + size_t bufferCount = va_arg(args, size_t); + return setBufferCount(bufferCount); +} void Surface::setUsage(uint32_t reqUsage) @@ -856,7 +863,7 @@ status_t Surface::getBufferLocked(int index, int usage) currentBuffer->setIndex(index); } } else { - err = err<0 ? err : NO_MEMORY; + err = err<0 ? err : status_t(NO_MEMORY); } } return err; |
