summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJesse Hall <jessehall@google.com>2011-12-13 12:23:14 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2011-12-13 12:23:14 -0800
commit3bc5e452808514c48cdb5d2c3ca14c022aeecf6f (patch)
tree70764111f38370bcbf2a30d7e87c8d8eecc83e58 /include
parent00eac09334b10af78e6b9ef9390f492cc74ad5e3 (diff)
parent7cd3e0a3a2f9b104cd6c04f699ae62c4577787e2 (diff)
downloadsystem_core-3bc5e452808514c48cdb5d2c3ca14c022aeecf6f.zip
system_core-3bc5e452808514c48cdb5d2c3ca14c022aeecf6f.tar.gz
system_core-3bc5e452808514c48cdb5d2c3ca14c022aeecf6f.tar.bz2
am 7cd3e0a3: Document ANativeWindow\'s buffer refcounting
* commit '7cd3e0a3a2f9b104cd6c04f699ae62c4577787e2': Document ANativeWindow's buffer refcounting
Diffstat (limited to 'include')
-rw-r--r--include/system/window.h42
1 files changed, 30 insertions, 12 deletions
diff --git a/include/system/window.h b/include/system/window.h
index 959bd23..1cc4a0a 100644
--- a/include/system/window.h
+++ b/include/system/window.h
@@ -340,9 +340,15 @@ struct ANativeWindow
int interval);
/*
- * hook called by EGL to acquire a buffer. After this call, the buffer
- * is not locked, so its content cannot be modified.
- * this call may block if no buffers are available.
+ * Hook called by EGL to acquire a buffer. After this call, the buffer
+ * is not locked, so its content cannot be modified. This call may block if
+ * no buffers are available.
+ *
+ * The window holds a reference to the buffer between dequeueBuffer and
+ * either queueBuffer or cancelBuffer, so clients only need their own
+ * reference if they might use the buffer after queueing or canceling it.
+ * Holding a reference to a buffer after queueing or canceling it is only
+ * allowed if a specific buffer count has been set.
*
* Returns 0 on success or -errno on error.
*/
@@ -358,14 +364,20 @@ struct ANativeWindow
*/
int (*lockBuffer)(struct ANativeWindow* window,
struct ANativeWindowBuffer* buffer);
- /*
- * hook called by EGL when modifications to the render buffer are done.
- * This unlocks and post the buffer.
- *
- * Buffers MUST be queued in the same order than they were dequeued.
- *
- * Returns 0 on success or -errno on error.
- */
+ /*
+ * Hook called by EGL when modifications to the render buffer are done.
+ * This unlocks and post the buffer.
+ *
+ * The window holds a reference to the buffer between dequeueBuffer and
+ * either queueBuffer or cancelBuffer, so clients only need their own
+ * reference if they might use the buffer after queueing or canceling it.
+ * Holding a reference to a buffer after queueing or canceling it is only
+ * allowed if a specific buffer count has been set.
+ *
+ * Buffers MUST be queued in the same order than they were dequeued.
+ *
+ * Returns 0 on success or -errno on error.
+ */
int (*queueBuffer)(struct ANativeWindow* window,
struct ANativeWindowBuffer* buffer);
@@ -411,10 +423,16 @@ struct ANativeWindow
int operation, ... );
/*
- * hook used to cancel a buffer that has been dequeued.
+ * Hook used to cancel a buffer that has been dequeued.
* No synchronization is performed between dequeue() and cancel(), so
* either external synchronization is needed, or these functions must be
* called from the same thread.
+ *
+ * The window holds a reference to the buffer between dequeueBuffer and
+ * either queueBuffer or cancelBuffer, so clients only need their own
+ * reference if they might use the buffer after queueing or canceling it.
+ * Holding a reference to a buffer after queueing or canceling it is only
+ * allowed if a specific buffer count has been set.
*/
int (*cancelBuffer)(struct ANativeWindow* window,
struct ANativeWindowBuffer* buffer);