diff options
author | Mathias Agopian <mathias@google.com> | 2010-03-11 15:05:52 -0800 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2010-03-11 15:05:52 -0800 |
commit | e156e6478f8393dc519a903d48ef09b3eabf32ad (patch) | |
tree | a8864bc0a8985836aab7df8c8a3d5ef5f84eb9e4 /include | |
parent | 49b2fdce2f7e9745e1ae5279f28fe64ece34c496 (diff) | |
download | frameworks_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.h | 38 |
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); +} + // --------------------------------------------------------------------------- |