am 8ae5a8e7: Get to the point of being able to do native drawing.

Merge commit '8ae5a8e7c04c7b204b739dfcd5da9e2e0f83e1eb' into gingerbread-plus-aosp

* commit '8ae5a8e7c04c7b204b739dfcd5da9e2e0f83e1eb':
  Get to the point of being able to do native drawing.
This commit is contained in:
Dianne Hackborn
2010-07-01 19:25:01 -07:00
committed by Android Git Automerger
4 changed files with 37 additions and 10 deletions

View File

@ -362,8 +362,12 @@ onSurfaceChanged_native(JNIEnv* env, jobject clazz, jint handle, jobject surface
sp<ANativeWindow> oldNativeWindow = code->nativeWindow;
code->setSurface(surface);
if (oldNativeWindow != code->nativeWindow) {
if (code->nativeWindow != NULL && code->callbacks.onNativeWindowChanged != NULL) {
code->callbacks.onNativeWindowChanged(&code->activity,
if (oldNativeWindow != NULL && code->callbacks.onNativeWindowDestroyed != NULL) {
code->callbacks.onNativeWindowDestroyed(&code->activity,
oldNativeWindow.get());
}
if (code->nativeWindow != NULL && code->callbacks.onNativeWindowCreated != NULL) {
code->callbacks.onNativeWindowCreated(&code->activity,
code->nativeWindow.get());
}
}

View File

@ -39,3 +39,9 @@ int32_t ANativeWindow_getHeight(ANativeWindow* window) {
int32_t ANativeWindow_getFormat(ANativeWindow* window) {
return getWindowProp(window, NATIVE_WINDOW_FORMAT);
}
int32_t ANativeWindow_setBuffersGeometry(ANativeWindow* window, int32_t width,
int32_t height, int32_t format) {
native_window_set_buffers_geometry(window, width, height, format);
return 0;
}

View File

@ -131,14 +131,6 @@ typedef struct ANativeActivityCallbacks {
*/
void (*onNativeWindowCreated)(ANativeActivity* activity, ANativeWindow* window);
/**
* The drawing window for this native activity has changed. During this time,
* old ANativeWindow object is still valid but no longer active and drawing
* should switch to the new ANativeWindow given here. After returning from
* this function, you must not touch the old window.
*/
void (*onNativeWindowChanged)(ANativeActivity* activity, ANativeWindow* window);
/**
* The drawing window for this native activity is going to be destroyed.
* You MUST ensure that you do not touch the window object after returning

View File

@ -22,6 +22,15 @@
extern "C" {
#endif
/*
* Pixel formats that a window can use.
*/
enum {
WINDOW_FORMAT_RGBA_8888 = 1,
WINDOW_FORMAT_RGBX_8888 = 2,
WINDOW_FORMAT_RGB_565 = 4,
};
struct ANativeWindow;
typedef struct ANativeWindow ANativeWindow;
@ -43,6 +52,22 @@ int32_t ANativeWindow_getHeight(ANativeWindow* window);
*/
int32_t ANativeWindow_getFormat(ANativeWindow* window);
/*
* Change the format and size of the window buffers.
*
* The width and height control the number of pixels in the buffers, not the
* dimensions of the window on screen. If these are different than the
* window's physical size, then it buffer will be scaled to match that size
* when compositing it to the screen.
*
* The format may be one of the window format constants above.
*
* For all of these parameters, if 0 is supplied than the window's base
* value will come back in force.
*/
int32_t ANativeWindow_setBuffersGeometry(ANativeWindow* window, int32_t width,
int32_t height, int32_t format);
#ifdef __cplusplus
};
#endif