summaryrefslogtreecommitdiffstats
path: root/include/gui
diff options
context:
space:
mode:
Diffstat (limited to 'include/gui')
-rw-r--r--include/gui/BufferQueue.h27
-rw-r--r--include/gui/ISurfaceTexture.h4
-rw-r--r--include/gui/SurfaceTextureClient.h2
3 files changed, 33 insertions, 0 deletions
diff --git a/include/gui/BufferQueue.h b/include/gui/BufferQueue.h
index 02598b0..cd38cfe 100644
--- a/include/gui/BufferQueue.h
+++ b/include/gui/BufferQueue.h
@@ -33,6 +33,23 @@
namespace android {
// ----------------------------------------------------------------------------
+#ifdef QCOM_BSP
+/*
+ * Structure to hold the buffer geometry
+ */
+struct QBufGeometry {
+ int mWidth;
+ int mHeight;
+ int mFormat;
+ QBufGeometry(): mWidth(0), mHeight(0), mFormat(0) {}
+ void set(int w, int h, int f) {
+ mWidth = w;
+ mHeight = h;
+ mFormat = f;
+ }
+};
+#endif
+
class BufferQueue : public BnSurfaceTexture {
public:
enum { MIN_UNDEQUEUED_BUFFERS = 2 };
@@ -156,6 +173,11 @@ public:
// to calculate the size for the buffer. this will take effect from next
// dequeue buffer.
virtual status_t setBuffersSize(int size);
+
+ // update buffer width, height and format for a native buffer
+ // dynamically from the client which will take effect in the next
+ // queue buffer.
+ virtual status_t updateBuffersGeometry(int w, int h, int f);
#endif
// connect attempts to connect a producer client API to the BufferQueue.
@@ -547,6 +569,11 @@ private:
// mTransformHint is used to optimize for screen rotations
uint32_t mTransformHint;
+
+#ifdef QCOM_BSP
+ // holds the updated buffer geometry info of the new video resolution.
+ QBufGeometry mNextBufferInfo;
+#endif
};
// ----------------------------------------------------------------------------
diff --git a/include/gui/ISurfaceTexture.h b/include/gui/ISurfaceTexture.h
index f0beab6..f2a6510 100644
--- a/include/gui/ISurfaceTexture.h
+++ b/include/gui/ISurfaceTexture.h
@@ -172,6 +172,10 @@ public:
// calculate the size for the buffer. this will take effect from next
// dequeue buffer.
virtual status_t setBuffersSize(int size) = 0;
+
+ // update buffer width, height and format information from the client
+ // which will take effect in the next queue buffer.
+ virtual status_t updateBuffersGeometry(int w, int h, int f) = 0;
#endif
// connect attempts to connect a client API to the SurfaceTexture. This
diff --git a/include/gui/SurfaceTextureClient.h b/include/gui/SurfaceTextureClient.h
index 108126d..f2b523d 100644
--- a/include/gui/SurfaceTextureClient.h
+++ b/include/gui/SurfaceTextureClient.h
@@ -94,6 +94,7 @@ private:
int dispatchSetPostTransformCrop(va_list args);
int dispatchSetUsage(va_list args);
#ifdef QCOM_BSP
+ int dispatchUpdateBuffersGeometry(va_list args);
int dispatchSetBuffersSize(va_list args);
#endif
int dispatchLock(va_list args);
@@ -107,6 +108,7 @@ protected:
virtual int query(int what, int* value) const;
virtual int setSwapInterval(int interval);
#ifdef QCOM_BSP
+ virtual int updateBuffersGeometry(int w, int h, int f);
virtual int setBuffersSize(int size);
#endif
virtual int lockBuffer_DEPRECATED(ANativeWindowBuffer* buffer);