diff options
author | Jesse Hall <jessehall@google.com> | 2011-12-13 12:23:14 -0800 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2011-12-13 12:23:14 -0800 |
commit | 3bc5e452808514c48cdb5d2c3ca14c022aeecf6f (patch) | |
tree | 70764111f38370bcbf2a30d7e87c8d8eecc83e58 /include | |
parent | 00eac09334b10af78e6b9ef9390f492cc74ad5e3 (diff) | |
parent | 7cd3e0a3a2f9b104cd6c04f699ae62c4577787e2 (diff) | |
download | system_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.h | 42 |
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); |