summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2010-03-11 15:05:52 -0800
committerMathias Agopian <mathias@google.com>2010-03-11 15:05:52 -0800
commite156e6478f8393dc519a903d48ef09b3eabf32ad (patch)
treea8864bc0a8985836aab7df8c8a3d5ef5f84eb9e4 /include
parent49b2fdce2f7e9745e1ae5279f28fe64ece34c496 (diff)
downloadframeworks_native-e156e6478f8393dc519a903d48ef09b3eabf32ad.zip
frameworks_native-e156e6478f8393dc519a903d48ef09b3eabf32ad.tar.gz
frameworks_native-e156e6478f8393dc519a903d48ef09b3eabf32ad.tar.bz2
Add a new connect/disconnect API to android_native_window_t
it's used to keep track of which API owns the surface. Change-Id: I1021c5905c020efc3c428e561b38189377168b22
Diffstat (limited to 'include')
-rw-r--r--include/ui/egl/android_natives.h38
1 files changed, 37 insertions, 1 deletions
diff --git a/include/ui/egl/android_natives.h b/include/ui/egl/android_natives.h
index 3740db5..773fd93 100644
--- a/include/ui/egl/android_natives.h
+++ b/include/ui/egl/android_natives.h
@@ -69,7 +69,14 @@ enum {
/* valid operations for the (*perform)() hook */
enum {
- NATIVE_WINDOW_SET_USAGE = 0
+ NATIVE_WINDOW_SET_USAGE = 0,
+ NATIVE_WINDOW_CONNECT = 1,
+ NATIVE_WINDOW_DISCONNECT = 2
+};
+
+/* parameter for NATIVE_WINDOW_[DIS]CONNECT */
+enum {
+ NATIVE_WINDOW_API_EGL = 1
};
typedef struct android_native_window_t
@@ -157,8 +164,13 @@ typedef struct android_native_window_t
* This hook should not be called directly, instead use the helper functions
* defined below.
*
+ * (*perform)() returns -ENOENT if the 'what' parameter is not supported
+ * by the surface's implementation.
+ *
* The valid operations are:
* NATIVE_WINDOW_SET_USAGE
+ * NATIVE_WINDOW_CONNECT
+ * NATIVE_WINDOW_DISCONNECT
*
*/
@@ -185,6 +197,30 @@ static inline int native_window_set_usage(
return window->perform(window, NATIVE_WINDOW_SET_USAGE, usage);
}
+/*
+ * native_window_connect(..., NATIVE_WINDOW_API_EGL) must be called
+ * by EGL when the window is made current.
+ * Returns -EINVAL if for some reason the window cannot be connected, which
+ * can happen if it's connected to some other API.
+ */
+static inline int native_window_connect(
+ android_native_window_t* window, int api)
+{
+ return window->perform(window, NATIVE_WINDOW_CONNECT, api);
+}
+
+/*
+ * native_window_disconnect(..., NATIVE_WINDOW_API_EGL) must be called
+ * by EGL when the window is made not current.
+ * An error is returned if for instance the window wasn't connected in the
+ * first place.
+ */
+static inline int native_window_disconnect(
+ android_native_window_t* window, int api)
+{
+ return window->perform(window, NATIVE_WINDOW_DISCONNECT, api);
+}
+
// ---------------------------------------------------------------------------