Mercurial > sdl-ios-xcode
changeset 4728:431c0381c696
Removed obsolete test project
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Thu, 19 Aug 2010 00:21:20 -0700 |
parents | 8087bb208acf |
children | 1f7ad083fd3c |
files | android/testproject/AndroidManifest.xml android/testproject/build.properties android/testproject/build.xml android/testproject/default.properties android/testproject/jni/Android.mk android/testproject/jni/app-android.cpp android/testproject/jni/egl.h android/testproject/jni/eglnatives.h android/testproject/jni/egltypes.h android/testproject/jni/importgl.cpp android/testproject/jni/importgl.h android/testproject/jni/lesson05.c android/testproject/local.properties android/testproject/res/drawable-hdpi/icon.png android/testproject/res/drawable-ldpi/icon.png android/testproject/res/drawable-mdpi/icon.png android/testproject/res/layout/main.xml android/testproject/res/values/strings.xml android/testproject/src/org/libsdl/android/SDLActivity.java |
diffstat | 19 files changed, 0 insertions(+), 2289 deletions(-) [+] |
line wrap: on
line diff
--- a/android/testproject/AndroidManifest.xml Tue Aug 17 17:28:14 2010 +1200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="org.libsdl.android" - android:versionCode="1" - android:versionName="1.0"> - <application android:label="@string/app_name" android:icon="@drawable/icon"> - <activity android:name="SDLActivity" - android:label="@string/app_name"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - </application> -</manifest>
--- a/android/testproject/build.properties Tue Aug 17 17:28:14 2010 +1200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -# This file is used to override default values used by the Ant build system. -# -# This file must be checked in Version Control Systems, as it is -# integral to the build system of your project. - -# This file is only used by the Ant script. - -# You can use this to override default values such as -# 'source.dir' for the location of your java source folder and -# 'out.dir' for the location of your output folder. - -# You can also use it define how the release builds are signed by declaring -# the following properties: -# 'key.store' for the location of your keystore and -# 'key.alias' for the name of the key to use. -# The password will be asked during the build when you use the 'release' target. -
--- a/android/testproject/build.xml Tue Aug 17 17:28:14 2010 +1200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,67 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project name="Test" default="help"> - - <!-- The local.properties file is created and updated by the 'android' tool. - It contains the path to the SDK. It should *NOT* be checked in in Version - Control Systems. --> - <property file="local.properties" /> - - <!-- The build.properties file can be created by you and is never touched - by the 'android' tool. This is the place to change some of the default property values - used by the Ant rules. - Here are some properties you may want to change/update: - - application.package - the name of your application package as defined in the manifest. Used by the - 'uninstall' rule. - source.dir - the name of the source directory. Default is 'src'. - out.dir - the name of the output directory. Default is 'bin'. - - Properties related to the SDK location or the project target should be updated - using the 'android' tool with the 'update' action. - - This file is an integral part of the build system for your application and - should be checked in in Version Control Systems. - - --> - <property file="build.properties" /> - - <!-- The default.properties file is created and updated by the 'android' tool, as well - as ADT. - This file is an integral part of the build system for your application and - should be checked in in Version Control Systems. --> - <property file="default.properties" /> - - <!-- Custom Android task to deal with the project target, and import the proper rules. - This requires ant 1.6.0 or above. --> - <path id="android.antlibs"> - <pathelement path="${sdk.dir}/tools/lib/anttasks.jar" /> - <pathelement path="${sdk.dir}/tools/lib/sdklib.jar" /> - <pathelement path="${sdk.dir}/tools/lib/androidprefs.jar" /> - <pathelement path="${sdk.dir}/tools/lib/apkbuilder.jar" /> - <pathelement path="${sdk.dir}/tools/lib/jarutils.jar" /> - </path> - - <taskdef name="setup" - classname="com.android.ant.SetupTask" - classpathref="android.antlibs" /> - - <!-- Execute the Android Setup task that will setup some properties specific to the target, - and import the build rules files. - - The rules file is imported from - <SDK>/platforms/<target_platform>/templates/android_rules.xml - - To customize some build steps for your project: - - copy the content of the main node <project> from android_rules.xml - - paste it in this build.xml below the <setup /> task. - - disable the import by changing the setup task below to <setup import="false" /> - - This will ensure that the properties are setup correctly but that your customized - build steps are used. - --> - <setup /> - -</project>
--- a/android/testproject/default.properties Tue Aug 17 17:28:14 2010 +1200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system use, -# "build.properties", and override values to adapt the script to your -# project structure. - -# Project target. -target=Google Inc.:Google APIs:7
--- a/android/testproject/jni/Android.mk Tue Aug 17 17:28:14 2010 +1200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -LOCAL_PATH := $(call my-dir) - -include $(CLEAR_VARS) - -LOCAL_MODULE := sdltest - -SDL := /home/paul/Projects/gsoc/SDL-gsoc2010_android/ - -LOCAL_CFLAGS := -DANDROID_NDK \ - -DDISABLE_IMPORTGL \ - -I$(SDL)/include - -LOCAL_SRC_FILES := \ - importgl.cpp \ - app-android.cpp \ - lesson05.c \ - -LOCAL_LDLIBS := -lGLESv1_CM -ldl -llog -lSDL -lEGL -lgcc -L$(SDL) -L$(SDL)/build-scripts/android_libs/ - -include $(BUILD_SHARED_LIBRARY)
--- a/android/testproject/jni/app-android.cpp Tue Aug 17 17:28:14 2010 +1200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,236 +0,0 @@ -/******************************************************************************* - Headers -*******************************************************************************/ -#include <jni.h> -#include <sys/time.h> -#include <time.h> -#include <android/log.h> -#include <stdint.h> - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> - -#include <pthread.h> - -//#include "importgl.h" -//#include "egl.h" - -/******************************************************************************* - Globals -*******************************************************************************/ -static long _getTime(void){ - struct timeval now; - gettimeofday(&now, NULL); - return (long)(now.tv_sec*1000 + now.tv_usec/1000); -} - -JNIEnv* mEnv = NULL; -JNIEnv* mAudioThreadEnv = NULL; //See the note below for why this is necessary -JavaVM* mVM = NULL; - -//Main activity -jclass mActivityInstance; - -//method signatures -jmethodID midCreateGLContext; -jmethodID midFlipBuffers; -jmethodID midEnableFeature; -jmethodID midUpdateAudio; - -extern "C" int SDL_main(); -extern "C" int Android_OnKeyDown(int keycode); -extern "C" int Android_OnKeyUp(int keycode); -extern "C" void Android_SetScreenResolution(int width, int height); -extern "C" void Android_OnResize(int width, int height, int format); -extern "C" int SDL_SendQuit(); -extern "C" void Android_EnableFeature(int featureid, bool enabled); - -//If we're not the active app, don't try to render -bool bRenderingEnabled = false; - -//Feature IDs -static const int FEATURE_AUDIO = 1; -static const int FEATURE_ACCEL = 2; - -//Accelerometer data storage -float fLastAccelerometer[3]; - - -/******************************************************************************* - Functions called by JNI -*******************************************************************************/ - -//Library init -extern "C" jint JNI_OnLoad(JavaVM* vm, void* reserved){ - - JNIEnv* env = NULL; - jint result = -1; - - if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) { - return result; - } - - mEnv = env; - - __android_log_print(ANDROID_LOG_INFO, "SDL", "JNI: OnLoad"); - - jclass cls = mEnv->FindClass ("org/libsdl/android/SDLActivity"); - mActivityInstance = cls; - midCreateGLContext = mEnv->GetStaticMethodID(cls,"createGLContext","()V"); - midFlipBuffers = mEnv->GetStaticMethodID(cls,"flipBuffers","()V"); - midEnableFeature = mEnv->GetStaticMethodID(cls,"enableFeature","(II)V"); - midUpdateAudio = mEnv->GetStaticMethodID(cls,"updateAudio","([B)V"); - - if(!midCreateGLContext || !midFlipBuffers || !midEnableFeature || - !midUpdateAudio){ - __android_log_print(ANDROID_LOG_INFO, "SDL", "SDL: Bad mids\n"); - }else{ - __android_log_print(ANDROID_LOG_INFO, "SDL", "SDL: Good mids\n"); - } - - return JNI_VERSION_1_4; -} - -//Start up the SDL app -extern "C" void Java_org_libsdl_android_SDLActivity_nativeInit( JNIEnv* env, - jobject obj ){ - - __android_log_print(ANDROID_LOG_INFO, "SDL", "SDL: Native Init"); - - mEnv = env; - bRenderingEnabled = true; - - Android_EnableFeature(FEATURE_ACCEL, true); - - SDL_main(); -} - -//Keydown -extern "C" void Java_org_libsdl_android_SDLActivity_onNativeKeyDown(JNIEnv* env, - jobject obj, jint keycode){ - - int r = Android_OnKeyDown(keycode); - __android_log_print(ANDROID_LOG_INFO, "SDL", - "SDL: native key down %d, %d\n", keycode, r); - -} - -//Keyup -extern "C" void Java_org_libsdl_android_SDLActivity_onNativeKeyUp(JNIEnv* env, - jobject obj, jint keycode){ - - int r = Android_OnKeyUp(keycode); - __android_log_print(ANDROID_LOG_INFO, "SDL", - "SDL: native key up %d, %d\n", keycode, r); - -} - -//Touch -extern "C" void Java_org_libsdl_android_SDLActivity_onNativeTouch(JNIEnv* env, - jobject obj, jint action, jfloat x, jfloat y, jfloat p){ - - __android_log_print(ANDROID_LOG_INFO, "SDL", - "SDL: native touch event %d @ %f/%f, pressure %f\n", - action, x, y, p); - - //TODO: Pass this off to the SDL multitouch stuff - -} - -//Quit -extern "C" void Java_org_libsdl_android_SDLActivity_nativeQuit( JNIEnv* env, - jobject obj ){ - - //Stop rendering as we're no longer in the foreground - bRenderingEnabled = false; - - //Inject a SDL_QUIT event - int r = SDL_SendQuit(); - - __android_log_print(ANDROID_LOG_INFO, "SDL", "SDL: Native quit %d", r); -} - -//Screen size -extern "C" void Java_org_libsdl_android_SDLActivity_nativeSetScreenSize( - JNIEnv* env, jobject obj, jint width, jint height){ - - __android_log_print(ANDROID_LOG_INFO, "SDL", - "SDL: Set screen size on init: %d/%d\n", width, height); - Android_SetScreenResolution(width, height); - -} - -//Resize -extern "C" void Java_org_libsdl_android_SDLActivity_onNativeResize( - JNIEnv* env, jobject obj, jint width, - jint height, jint format){ - Android_OnResize(width, height, format); -} - -extern "C" void Java_org_libsdl_android_SDLActivity_onNativeAccel( - JNIEnv* env, jobject obj, - jfloat x, jfloat y, jfloat z){ - fLastAccelerometer[0] = x; - fLastAccelerometer[1] = y; - fLastAccelerometer[2] = z; -} - - - -/******************************************************************************* - Functions called by SDL into Java -*******************************************************************************/ -extern "C" void Android_CreateContext(){ - __android_log_print(ANDROID_LOG_INFO, "SDL", "SDL: sdl_create_context()\n"); - - bRenderingEnabled = true; - - mEnv->CallStaticVoidMethod(mActivityInstance, midCreateGLContext ); -} - -extern "C" void Android_Render(){ - - if(!bRenderingEnabled){ - return; - } - - //When we get here, we've accumulated a full frame - mEnv->CallStaticVoidMethod(mActivityInstance, midFlipBuffers ); -} - -extern "C" void Android_EnableFeature(int featureid, bool enabled){ - - mEnv->CallStaticVoidMethod(mActivityInstance, midEnableFeature, - featureid, (int)enabled); -} - -extern "C" void Android_UpdateAudioBuffer(unsigned char *buf, int len){ - - //Annoyingly we can't just call into Java from any thread. Because the audio - //callback is dispatched from the SDL audio thread (that wasn't made from - //java, we have to do some magic here to let the JVM know about the thread. - //Because everything it touches on the Java side is static anyway, it's - //not a big deal, just annoying. - if(!mAudioThreadEnv){ - __android_log_print(ANDROID_LOG_INFO, "SDL", "SDL: Need to set up audio thread env\n"); - - mJVM->AttachCurrentThread(&mAudioThreadEnv, NULL); - - __android_log_print(ANDROID_LOG_INFO, "SDL", "SDL: ok\n"); - } - - jbyteArray arr = mAudioThreadEnv->NewByteArray(len); - - //blah. We probably should rework this so we avoid the copy. - mAudioThreadEnv->SetByteArrayRegion(arr, 0, len, (jbyte *)buf); - - __android_log_print(ANDROID_LOG_INFO, "SDL", "SDL: copied\n"); - - mAudioThreadEnv->CallStaticVoidMethod( mActivityInstance, - midUpdateAudio, arr ); - - __android_log_print(ANDROID_LOG_INFO, "SDL", "SDL: invoked\n"); - -} -
--- a/android/testproject/jni/egl.h Tue Aug 17 17:28:14 2010 +1200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,269 +0,0 @@ -/* - * Copyright (C) 2007 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef ANDROID_EGL_H -#define ANDROID_EGL_H - -#include <GLES/gl.h> -#include <egltypes.h> -#include <eglnatives.h> - -#ifdef __cplusplus -extern "C" { -#endif - -#define EGL_VERSION_1_0 1 -#define EGL_VERSION_1_1 1 -#define EGL_VERSION_1_2 1 - -#define EGL_FALSE 0 -#define EGL_TRUE 1 - -/* Errors */ -#define EGL_SUCCESS 0x3000 -#define EGL_NOT_INITIALIZED 0x3001 -#define EGL_BAD_ACCESS 0x3002 -#define EGL_BAD_ALLOC 0x3003 -#define EGL_BAD_ATTRIBUTE 0x3004 -#define EGL_BAD_CONFIG 0x3005 -#define EGL_BAD_CONTEXT 0x3006 -#define EGL_BAD_CURRENT_SURFACE 0x3007 -#define EGL_BAD_DISPLAY 0x3008 -#define EGL_BAD_MATCH 0x3009 -#define EGL_BAD_NATIVE_PIXMAP 0x300A -#define EGL_BAD_NATIVE_WINDOW 0x300B -#define EGL_BAD_PARAMETER 0x300C -#define EGL_BAD_SURFACE 0x300D -#define EGL_CONTEXT_LOST 0x300E - -/* Config attributes */ -#define EGL_BUFFER_SIZE 0x3020 -#define EGL_ALPHA_SIZE 0x3021 -#define EGL_BLUE_SIZE 0x3022 -#define EGL_GREEN_SIZE 0x3023 -#define EGL_RED_SIZE 0x3024 -#define EGL_DEPTH_SIZE 0x3025 -#define EGL_STENCIL_SIZE 0x3026 -#define EGL_CONFIG_CAVEAT 0x3027 -#define EGL_CONFIG_ID 0x3028 -#define EGL_LEVEL 0x3029 -#define EGL_MAX_PBUFFER_HEIGHT 0x302A -#define EGL_MAX_PBUFFER_PIXELS 0x302B -#define EGL_MAX_PBUFFER_WIDTH 0x302C -#define EGL_NATIVE_RENDERABLE 0x302D -#define EGL_NATIVE_VISUAL_ID 0x302E -#define EGL_NATIVE_VISUAL_TYPE 0x302F -#define EGL_SAMPLES 0x3031 -#define EGL_SAMPLE_BUFFERS 0x3032 -#define EGL_SURFACE_TYPE 0x3033 -#define EGL_TRANSPARENT_TYPE 0x3034 -#define EGL_TRANSPARENT_BLUE_VALUE 0x3035 -#define EGL_TRANSPARENT_GREEN_VALUE 0x3036 -#define EGL_TRANSPARENT_RED_VALUE 0x3037 -#define EGL_NONE 0x3038 -#define EGL_BIND_TO_TEXTURE_RGB 0x3039 -#define EGL_BIND_TO_TEXTURE_RGBA 0x303A -#define EGL_MIN_SWAP_INTERVAL 0x303B -#define EGL_MAX_SWAP_INTERVAL 0x303C -#define EGL_LUMINANCE_SIZE 0x303D -#define EGL_ALPHA_MASK_SIZE 0x303E -#define EGL_COLOR_BUFFER_TYPE 0x303F -#define EGL_RENDERABLE_TYPE 0x3040 - -/* Config values */ -#define EGL_DONT_CARE ((EGLint)-1) - -#define EGL_SLOW_CONFIG 0x3050 -#define EGL_NON_CONFORMANT_CONFIG 0x3051 -#define EGL_TRANSPARENT_RGB 0x3052 -#define EGL_NO_TEXTURE 0x305C -#define EGL_TEXTURE_RGB 0x305D -#define EGL_TEXTURE_RGBA 0x305E -#define EGL_TEXTURE_2D 0x305F -#define EGL_RGB_BUFFER 0x308E -#define EGL_LUMINANCE_BUFFER 0x308F - -/* Config attribute mask bits */ -#define EGL_PBUFFER_BIT 0x01 -#define EGL_PIXMAP_BIT 0x02 -#define EGL_WINDOW_BIT 0x04 -#define EGL_OPENGL_ES_BIT 0x01 -#define EGL_OPENVG_BIT 0x02 - -/* String names */ -#define EGL_VENDOR 0x3053 -#define EGL_VERSION 0x3054 -#define EGL_EXTENSIONS 0x3055 -#define EGL_CLIENT_APIS 0x308D - -/* Surface attributes */ -#define EGL_HEIGHT 0x3056 -#define EGL_WIDTH 0x3057 -#define EGL_LARGEST_PBUFFER 0x3058 -#define EGL_TEXTURE_FORMAT 0x3080 -#define EGL_TEXTURE_TARGET 0x3081 -#define EGL_MIPMAP_TEXTURE 0x3082 -#define EGL_MIPMAP_LEVEL 0x3083 -#define EGL_RENDER_BUFFER 0x3086 -#define EGL_COLORSPACE 0x3087 -#define EGL_ALPHA_FORMAT 0x3088 -#define EGL_HORIZONTAL_RESOLUTION 0x3090 -#define EGL_VERTICAL_RESOLUTION 0x3091 -#define EGL_PIXEL_ASPECT_RATIO 0x3092 -#define EGL_SWAP_BEHAVIOR 0x3093 - -#define EGL_BACK_BUFFER 0x3084 -#define EGL_SINGLE_BUFFER 0x3085 - -#define EGL_DISPLAY_SCALING 10000 - -#define EGL_UNKNOWN ((EGLint)-1) - -/* Back buffer swap behaviors */ -#define EGL_BUFFER_PRESERVED 0x3094 -#define EGL_BUFFER_DESTROYED 0x3095 - -/* CreatePbufferFromClientBuffer buffer types */ -#define EGL_OPENVG_IMAGE 0x3096 - -/* QueryContext targets */ -#define EGL_CONTEXT_CLIENT_TYPE 0x3097 - -/* BindAPI/QueryAPI targets */ -#define EGL_OPENGL_ES_API 0x30A0 -#define EGL_OPENVG_API 0x30A1 - -/* WaitNative engines */ -#define EGL_CORE_NATIVE_ENGINE 0x305B - -/* Current surfaces */ -#define EGL_DRAW 0x3059 -#define EGL_READ 0x305A - - -EGLDisplay eglGetDisplay(NativeDisplayType display); -EGLBoolean eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor); -EGLBoolean eglTerminate(EGLDisplay dpy); - -EGLBoolean eglGetConfigs( EGLDisplay dpy, - EGLConfig *configs, - EGLint config_size, EGLint *num_config); - -EGLBoolean eglChooseConfig( EGLDisplay dpy, const EGLint *attrib_list, - EGLConfig *configs, EGLint config_size, - EGLint *num_config); - -EGLBoolean eglGetConfigAttrib( EGLDisplay dpy, EGLConfig config, - EGLint attribute, EGLint *value); - -EGLSurface eglCreateWindowSurface( EGLDisplay dpy, EGLConfig config, - NativeWindowType window, - const EGLint *attrib_list); - -EGLSurface eglCreatePixmapSurface( EGLDisplay dpy, EGLConfig config, - NativePixmapType pixmap, - const EGLint *attrib_list); - -EGLSurface eglCreatePbufferSurface( EGLDisplay dpy, EGLConfig config, - const EGLint *attrib_list); - -EGLBoolean eglDestroySurface(EGLDisplay dpy, EGLSurface surface); - -EGLBoolean eglQuerySurface( EGLDisplay dpy, EGLSurface surface, - EGLint attribute, EGLint *value); - -EGLContext eglCreateContext(EGLDisplay dpy, EGLConfig config, - EGLContext share_list, const EGLint *attrib_list); - -EGLBoolean eglDestroyContext(EGLDisplay dpy, EGLContext ctx); - -EGLBoolean eglMakeCurrent( EGLDisplay dpy, EGLSurface draw, - EGLSurface read, EGLContext ctx); - -EGLContext eglGetCurrentContext(void); -EGLSurface eglGetCurrentSurface(EGLint readdraw); -EGLDisplay eglGetCurrentDisplay(void); -EGLBoolean eglQueryContext( EGLDisplay dpy, EGLContext ctx, - EGLint attribute, EGLint *value); - -EGLBoolean eglWaitGL(void); -EGLBoolean eglWaitNative(EGLint engine); -EGLBoolean eglSwapBuffers(EGLDisplay dpy, EGLSurface draw); -EGLBoolean eglCopyBuffers( EGLDisplay dpy, EGLSurface surface, - NativePixmapType target); - -EGLint eglGetError(void); -const char* eglQueryString(EGLDisplay dpy, EGLint name); -void (*eglGetProcAddress (const char *procname))(); - -/* ---------------------------------------------------------------------------- - * EGL 1.1 - * ---------------------------------------------------------------------------- - */ - -EGLBoolean eglSurfaceAttrib( - EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value); -EGLBoolean eglBindTexImage( - EGLDisplay dpy, EGLSurface surface, EGLint buffer); -EGLBoolean eglReleaseTexImage( - EGLDisplay dpy, EGLSurface surface, EGLint buffer); - -EGLBoolean eglSwapInterval(EGLDisplay dpy, EGLint interval); - -/* ---------------------------------------------------------------------------- - * EGL 1.2 - * ---------------------------------------------------------------------------- - */ - -EGLBoolean eglBindAPI(EGLenum api); -EGLenum eglQueryAPI(void); -EGLBoolean eglWaitClient(void); -EGLBoolean eglReleaseThread(void); -EGLSurface eglCreatePbufferFromClientBuffer( - EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, - EGLConfig config, const EGLint *attrib_list); - -/* ---------------------------------------------------------------------------- - * Android extentions - * ---------------------------------------------------------------------------- - */ - -EGLBoolean eglSwapRectangleANDROID(EGLDisplay dpy, EGLSurface draw, - EGLint l, EGLint t, EGLint w, EGLint h); - -EGLBoolean eglCopyFrontToBackANDROID(EGLDisplay dpy, - EGLSurface surface, - EGLint l, EGLint t, EGLint w, EGLint h); - -const char* eglQueryStringConfigANDROID( - EGLDisplay dpy, EGLConfig config, EGLint name); - -void* eglGetRenderBufferAddressANDROID(EGLDisplay dpy, EGLSurface surface); - -EGLBoolean eglCopyBitsANDROID(EGLDisplay dpy, - NativeWindowType draw, EGLint x, EGLint y, - NativeWindowType read, - EGLint crop_x, EGLint crop_y, EGLint crop_w, EGLint crop_h, - EGLint flags); - - -#ifdef __cplusplus -} -#endif - - -#endif /*ANDROID_EGL_H*/ -
--- a/android/testproject/jni/eglnatives.h Tue Aug 17 17:28:14 2010 +1200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,277 +0,0 @@ -/* - * Copyright (C) 2007 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef ANDROID_EGLNATIVES_H -#define ANDROID_EGLNATIVES_H - -#include <sys/types.h> - -#ifdef __cplusplus -extern "C" { -#endif -/*****************************************************************************/ - -struct egl_native_window_t; -struct egl_native_pixmap_t; - - -typedef struct egl_native_window_t* NativeWindowType; -typedef struct egl_native_pixmap_t* NativePixmapType; -typedef void* NativeDisplayType; - -/* - * This a conveniance function to create a NativeWindowType surface - * that maps to the whole screen - * This function is actually implemented in libui.so - */ - -NativeWindowType android_createDisplaySurface(); - -/* flags returned from swapBuffer */ -#define EGL_NATIVES_FLAG_SIZE_CHANGED 0x00000001 - -/* surface flags */ -#define EGL_NATIVES_FLAG_DESTROY_BACKBUFFER 0x00000001 - -enum native_pixel_format_t -{ - NATIVE_PIXEL_FORMAT_RGBA_8888 = 1, - NATIVE_PIXEL_FORMAT_RGB_565 = 4, - NATIVE_PIXEL_FORMAT_RGBA_5551 = 6, - NATIVE_PIXEL_FORMAT_RGBA_4444 = 7, - NATIVE_PIXEL_FORMAT_YCbCr_422_SP= 0x10, - NATIVE_PIXEL_FORMAT_YCbCr_420_SP= 0x11, -}; - -enum native_memory_type_t -{ - NATIVE_MEMORY_TYPE_PMEM = 0, - NATIVE_MEMORY_TYPE_GPU = 1, - NATIVE_MEMORY_TYPE_FB = 2, - NATIVE_MEMORY_TYPE_HEAP = 128 -}; - - -struct egl_native_window_t -{ - /* - * magic must be set to 0x600913 - */ - uint32_t magic; - - /* - * must be sizeof(egl_native_window_t) - */ - uint32_t version; - - /* - * ident is reserved for the Android platform - */ - uint32_t ident; - - /* - * width, height and stride of the window in pixels - * Any of these value can be nul in which case GL commands are - * accepted and processed as usual, but not rendering occurs. - */ - int width; // w=h=0 is legal - int height; - int stride; - - /* - * format of the native window (see ui/PixelFormat.h) - */ - int format; - - /* - * Offset of the bits in the VRAM - */ - intptr_t offset; - - /* - * flags describing some attributes of this surface - * EGL_NATIVES_FLAG_DESTROY_BACKBUFFER: backbuffer not preserved after - * eglSwapBuffers - */ - uint32_t flags; - - /* - * horizontal and vertical resolution in DPI - */ - float xdpi; - float ydpi; - - /* - * refresh rate in frames per second (Hz) - */ - float fps; - - - /* - * Base memory virtual address of the surface in the CPU side - */ - intptr_t base; - - /* - * Heap the offset above is based from - */ - int fd; - - /* - * Memory type the surface resides into - */ - uint8_t memory_type; - - /* - * Reserved for future use. MUST BE ZERO. - */ - uint8_t reserved_pad[3]; - int reserved[8]; - - /* - * Vertical stride (only relevant with planar formats) - */ - - int vstride; - - /* - * Hook called by EGL to hold a reference on this structure - */ - void (*incRef)(NativeWindowType window); - - /* - * Hook called by EGL to release a reference on this structure - */ - void (*decRef)(NativeWindowType window); - - /* - * Hook called by EGL to perform a page flip. This function - * may update the size attributes above, in which case it returns - * the EGL_NATIVES_FLAG_SIZE_CHANGED bit set. - */ - uint32_t (*swapBuffers)(NativeWindowType window); - - /* - * Hook called by EGL to set the swap rectangle. this hook can be - * null (operation not supported) - */ - void (*setSwapRectangle)(NativeWindowType window, int l, int t, int w, int h); - - /* - * Reserved for future use. MUST BE ZERO. - */ - void (*reserved_proc_0)(void); - - - /* - * Hook called by EGL to retrieve the next buffer to render into. - * This call updates this structure. - */ - uint32_t (*nextBuffer)(NativeWindowType window); - - /* - * Hook called by EGL when the native surface is associated to EGL - * (eglCreateWindowSurface). Can be NULL. - */ - void (*connect)(NativeWindowType window); - - /* - * Hook called by EGL when eglDestroySurface is called. Can be NULL. - */ - void (*disconnect)(NativeWindowType window); - - /* - * Reserved for future use. MUST BE ZERO. - */ - void (*reserved_proc[11])(void); - - /* - * Some storage reserved for the oem driver. - */ - intptr_t oem[4]; -}; - - -struct egl_native_pixmap_t -{ - int32_t version; /* must be 32 */ - int32_t width; - int32_t height; - int32_t stride; - uint8_t* data; - uint8_t format; - uint8_t rfu[3]; - union { - uint32_t compressedFormat; - int32_t vstride; - }; - int32_t reserved; -}; - -/*****************************************************************************/ - -/* - * OEM's egl's library (libhgl.so) must imlement these hooks to allocate - * the GPU memory they need - */ - - -typedef struct -{ - // for internal use - void* user; - // virtual address of this area - void* base; - // size of this area in bytes - size_t size; - // physical address of this area - void* phys; - // offset in this area available to the GPU - size_t offset; - // fd of this area - int fd; -} gpu_area_t; - -typedef struct -{ - // area where GPU registers are mapped - gpu_area_t regs; - // number of extra areas (currently limited to 2) - int32_t count; - // extra GPU areas (currently limited to 2) - gpu_area_t gpu[2]; -} request_gpu_t; - - -typedef request_gpu_t* (*OEM_EGL_acquire_gpu_t)(void* user); -typedef int (*OEM_EGL_release_gpu_t)(void* user, request_gpu_t* handle); -typedef void (*register_gpu_t) - (void* user, OEM_EGL_acquire_gpu_t, OEM_EGL_release_gpu_t); - -void oem_register_gpu( - void* user, - OEM_EGL_acquire_gpu_t acquire, - OEM_EGL_release_gpu_t release); - - -/*****************************************************************************/ - -#ifdef __cplusplus -} -#endif - -#endif /* ANDROID_EGLNATIVES_H */ -
--- a/android/testproject/jni/egltypes.h Tue Aug 17 17:28:14 2010 +1200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* - * Copyright (C) 2007 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef ANDROID_EGL_TYPES_H -#define ANDROID_EGL_TYPES_H - -#include <sys/types.h> - -#ifdef __cplusplus -extern "C" { -#endif - -typedef unsigned int EGLBoolean; -typedef int32_t EGLint; -typedef int EGLenum; -typedef void *EGLDisplay; -typedef void *EGLConfig; -typedef void *EGLSurface; -typedef void *EGLContext; -typedef void *EGLClientBuffer; - -#define EGL_DEFAULT_DISPLAY ((NativeDisplayType)0) - -#define EGL_NO_CONTEXT ((EGLContext)0) -#define EGL_NO_DISPLAY ((EGLDisplay)0) -#define EGL_NO_SURFACE ((EGLSurface)0) - - -#ifdef __cplusplus -} -#endif - - -#endif /* ANDROID_EGL_TYPES_H */ -
--- a/android/testproject/jni/importgl.cpp Tue Aug 17 17:28:14 2010 +1200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,168 +0,0 @@ -/* San Angeles Observation OpenGL ES version example - * Copyright 2004-2005 Jetro Lauha - * All rights reserved. - * Web: http://iki.fi/jetro/ - * - * This source is free software; you can redistribute it and/or - * modify it under the terms of EITHER: - * (1) The GNU Lesser General Public License as published by the Free - * Software Foundation; either version 2.1 of the License, or (at - * your option) any later version. The text of the GNU Lesser - * General Public License is included with this source in the - * file LICENSE-LGPL.txt. - * (2) The BSD-style license that is included with this source in - * the file LICENSE-BSD.txt. - * - * This source is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files - * LICENSE-LGPL.txt and LICENSE-BSD.txt for more details. - * - * $Id: importgl.c,v 1.4 2005/02/08 18:42:55 tonic Exp $ - * $Revision: 1.4 $ - */ - -#undef WIN32 -#undef LINUX -#ifdef _MSC_VER -// Desktop or mobile Win32 environment: -#define WIN32 -#else -// Linux environment: -#define LINUX -#endif - -#ifndef DISABLE_IMPORTGL - -#if defined(WIN32) -#define WIN32_LEAN_AND_MEAN -#include <windows.h> -#include <tchar.h> -static HMODULE sGLESDLL = NULL; -#endif // WIN32 - -#ifdef LINUX -#include <stdlib.h> -#include <dlfcn.h> -static void *sGLESSO = NULL; -#endif // LINUX - -#endif /* DISABLE_IMPORTGL */ - -#define IMPORTGL_NO_FNPTR_DEFS -#define IMPORTGL_API -#define IMPORTGL_FNPTRINIT = NULL -#include "importgl.h" - - -/* Imports function pointers to selected function calls in OpenGL ES Common - * or Common Lite profile DLL or shared object. The function pointers are - * stored as global symbols with equivalent function name but prefixed with - * "funcPtr_". Standard gl/egl calls are redirected to the function pointers - * with preprocessor macros (see importgl.h). - */ -int importGLInit() -{ - int result = 1; - -#ifndef DISABLE_IMPORTGL - -#undef IMPORT_FUNC - -#ifdef WIN32 - sGLESDLL = LoadLibrary(_T("libGLES_CM.dll")); - if (sGLESDLL == NULL) - sGLESDLL = LoadLibrary(_T("libGLES_CL.dll")); - if (sGLESDLL == NULL) - return 0; // Cannot find OpenGL ES Common or Common Lite DLL. - - /* The following fetches address to each egl & gl function call - * and stores it to the related function pointer. Casting through - * void * results in warnings with VC warning level 4, which - * could be fixed by casting to the true type for each fetch. - */ -#define IMPORT_FUNC(funcName) do { \ - void *procAddress = (void *)GetProcAddress(sGLESDLL, _T(#funcName)); \ - if (procAddress == NULL) result = 0; \ - *((void **)&FNPTR(funcName)) = procAddress; } while (0) -#endif // WIN32 - -#ifdef LINUX -#ifdef ANDROID_NDK - sGLESSO = dlopen("libGLESv1_CM.so", RTLD_NOW); -#else /* !ANDROID_NDK */ - sGLESSO = dlopen("libGLES_CM.so", RTLD_NOW); - if (sGLESSO == NULL) - sGLESSO = dlopen("libGLES_CL.so", RTLD_NOW); -#endif /* !ANDROID_NDK */ - if (sGLESSO == NULL) - return 0; // Cannot find OpenGL ES Common or Common Lite SO. - -#define IMPORT_FUNC(funcName) do { \ - void *procAddress = (void *)dlsym(sGLESSO, #funcName); \ - if (procAddress == NULL) result = 0; \ - *((void **)&FNPTR(funcName)) = procAddress; } while (0) -#endif // LINUX - -#ifndef ANDROID_NDK - IMPORT_FUNC(eglChooseConfig); - IMPORT_FUNC(eglCreateContext); - IMPORT_FUNC(eglCreateWindowSurface); - IMPORT_FUNC(eglDestroyContext); - IMPORT_FUNC(eglDestroySurface); - IMPORT_FUNC(eglGetConfigAttrib); - IMPORT_FUNC(eglGetConfigs); - IMPORT_FUNC(eglGetDisplay); - IMPORT_FUNC(eglGetError); - IMPORT_FUNC(eglInitialize); - IMPORT_FUNC(eglMakeCurrent); - IMPORT_FUNC(eglSwapBuffers); - IMPORT_FUNC(eglTerminate); -#endif /* !ANDROID_NDK */ - - IMPORT_FUNC(glBlendFunc); - IMPORT_FUNC(glClear); - IMPORT_FUNC(glClearColorx); - IMPORT_FUNC(glColor4x); - IMPORT_FUNC(glColorPointer); - IMPORT_FUNC(glDisable); - IMPORT_FUNC(glDisableClientState); - IMPORT_FUNC(glDrawArrays); - IMPORT_FUNC(glEnable); - IMPORT_FUNC(glEnableClientState); - IMPORT_FUNC(glFrustumx); - IMPORT_FUNC(glGetError); - IMPORT_FUNC(glLightxv); - IMPORT_FUNC(glLoadIdentity); - IMPORT_FUNC(glMaterialx); - IMPORT_FUNC(glMaterialxv); - IMPORT_FUNC(glMatrixMode); - IMPORT_FUNC(glMultMatrixx); - IMPORT_FUNC(glNormalPointer); - IMPORT_FUNC(glPopMatrix); - IMPORT_FUNC(glPushMatrix); - IMPORT_FUNC(glRotatex); - IMPORT_FUNC(glScalex); - IMPORT_FUNC(glShadeModel); - IMPORT_FUNC(glTranslatex); - IMPORT_FUNC(glVertexPointer); - IMPORT_FUNC(glViewport); - -#endif /* DISABLE_IMPORTGL */ - - return result; -} - - -void importGLDeinit() -{ -#ifndef DISABLE_IMPORTGL -#ifdef WIN32 - FreeLibrary(sGLESDLL); -#endif - -#ifdef LINUX - dlclose(sGLESSO); -#endif -#endif /* DISABLE_IMPORTGL */ -}
--- a/android/testproject/jni/importgl.h Tue Aug 17 17:28:14 2010 +1200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,172 +0,0 @@ -/* San Angeles Observation OpenGL ES version example - * Copyright 2004-2005 Jetro Lauha - * All rights reserved. - * Web: http://iki.fi/jetro/ - * - * This source is free software; you can redistribute it and/or - * modify it under the terms of EITHER: - * (1) The GNU Lesser General Public License as published by the Free - * Software Foundation; either version 2.1 of the License, or (at - * your option) any later version. The text of the GNU Lesser - * General Public License is included with this source in the - * file LICENSE-LGPL.txt. - * (2) The BSD-style license that is included with this source in - * the file LICENSE-BSD.txt. - * - * This source is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files - * LICENSE-LGPL.txt and LICENSE-BSD.txt for more details. - * - * $Id: importgl.h,v 1.4 2005/02/24 20:29:33 tonic Exp $ - * $Revision: 1.4 $ - */ - -#ifndef IMPORTGL_H_INCLUDED -#define IMPORTGL_H_INCLUDED - - -#ifdef __cplusplus -extern "C" { -#endif - - -#include <GLES/gl.h> -#ifndef ANDROID_NDK -#include <GLES/egl.h> -#endif /* !ANDROID_NDK */ - -/* Use DISABLE_IMPORTGL if you want to link the OpenGL ES at - * compile/link time and not import it dynamically runtime. - */ -#ifndef DISABLE_IMPORTGL - - -/* Dynamically fetches pointers to the egl & gl functions. - * Should be called once on application initialization. - * Returns non-zero on success and 0 on failure. - */ -extern int importGLInit(); - -/* Frees the handle to egl & gl functions library. - */ -extern void importGLDeinit(); - - -#ifndef IMPORTGL_API -#define IMPORTGL_API extern -#endif -#ifndef IMPORTGL_FNPTRINIT -#define IMPORTGL_FNPTRINIT -#endif - -#define FNDEF(retType, funcName, args) IMPORTGL_API retType (*funcPtr_##funcName) args IMPORTGL_FNPTRINIT - -#ifndef ANDROID_NDK -FNDEF(EGLBoolean, eglChooseConfig, (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config)); -FNDEF(EGLContext, eglCreateContext, (EGLDisplay dpy, EGLConfig config, EGLContext share_list, const EGLint *attrib_list)); -FNDEF(EGLSurface, eglCreateWindowSurface, (EGLDisplay dpy, EGLConfig config, NativeWindowType window, const EGLint *attrib_list)); -FNDEF(EGLBoolean, eglDestroyContext, (EGLDisplay dpy, EGLContext ctx)); -FNDEF(EGLBoolean, eglDestroySurface, (EGLDisplay dpy, EGLSurface surface)); -FNDEF(EGLBoolean, eglGetConfigAttrib, (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value)); -FNDEF(EGLBoolean, eglGetConfigs, (EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config)); -FNDEF(EGLDisplay, eglGetDisplay, (NativeDisplayType display)); -FNDEF(EGLint, eglGetError, (void)); -FNDEF(EGLBoolean, eglInitialize, (EGLDisplay dpy, EGLint *major, EGLint *minor)); -FNDEF(EGLBoolean, eglMakeCurrent, (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx)); -FNDEF(EGLBoolean, eglSwapBuffers, (EGLDisplay dpy, EGLSurface draw)); -FNDEF(EGLBoolean, eglTerminate, (EGLDisplay dpy)); -#endif /* !ANDROID_NDK */ - -FNDEF(void, glBlendFunc, (GLenum sfactor, GLenum dfactor)); -FNDEF(void, glClear, (GLbitfield mask)); -FNDEF(void, glClearColorx, (GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha)); -FNDEF(void, glColor4x, (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)); -FNDEF(void, glColorPointer, (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)); -FNDEF(void, glDisable, (GLenum cap)); -FNDEF(void, glDisableClientState, (GLenum array)); -FNDEF(void, glDrawArrays, (GLenum mode, GLint first, GLsizei count)); -FNDEF(void, glEnable, (GLenum cap)); -FNDEF(void, glEnableClientState, (GLenum array)); -FNDEF(void, glFrustumx, (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)); -FNDEF(GLenum, glGetError, (void)); -FNDEF(void, glLightxv, (GLenum light, GLenum pname, const GLfixed *params)); -FNDEF(void, glLoadIdentity, (void)); -FNDEF(void, glMaterialx, (GLenum face, GLenum pname, GLfixed param)); -FNDEF(void, glMaterialxv, (GLenum face, GLenum pname, const GLfixed *params)); -FNDEF(void, glMatrixMode, (GLenum mode)); -FNDEF(void, glMultMatrixx, (const GLfixed *m)); -FNDEF(void, glNormalPointer, (GLenum type, GLsizei stride, const GLvoid *pointer)); -FNDEF(void, glPopMatrix, (void)); -FNDEF(void, glPushMatrix, (void)); -FNDEF(void, glRotatex, (GLfixed angle, GLfixed x, GLfixed y, GLfixed z)); -FNDEF(void, glScalex, (GLfixed x, GLfixed y, GLfixed z)); -FNDEF(void, glShadeModel, (GLenum mode)); -FNDEF(void, glTranslatex, (GLfixed x, GLfixed y, GLfixed z)); -FNDEF(void, glVertexPointer, (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)); -FNDEF(void, glViewport, (GLint x, GLint y, GLsizei width, GLsizei height)); - - -#undef FN -#define FNPTR(name) funcPtr_##name - -#ifndef IMPORTGL_NO_FNPTR_DEFS - -// Redirect egl* and gl* function calls to funcPtr_egl* and funcPtr_gl*. - -#ifndef ANDROID_NDK -#define eglChooseConfig FNPTR(eglChooseConfig) -#define eglCreateContext FNPTR(eglCreateContext) -#define eglCreateWindowSurface FNPTR(eglCreateWindowSurface) -#define eglDestroyContext FNPTR(eglDestroyContext) -#define eglDestroySurface FNPTR(eglDestroySurface) -#define eglGetConfigAttrib FNPTR(eglGetConfigAttrib) -#define eglGetConfigs FNPTR(eglGetConfigs) -#define eglGetDisplay FNPTR(eglGetDisplay) -#define eglGetError FNPTR(eglGetError) -#define eglInitialize FNPTR(eglInitialize) -#define eglMakeCurrent FNPTR(eglMakeCurrent) -#define eglSwapBuffers FNPTR(eglSwapBuffers) -#define eglTerminate FNPTR(eglTerminate) -#endif /* !ANDROID_NDK */ - -#define glBlendFunc FNPTR(glBlendFunc) -#define glClear FNPTR(glClear) -#define glClearColorx FNPTR(glClearColorx) -#define glColor4x FNPTR(glColor4x) -#define glColorPointer FNPTR(glColorPointer) -#define glDisable FNPTR(glDisable) -#define glDisableClientState FNPTR(glDisableClientState) -#define glDrawArrays FNPTR(glDrawArrays) -#define glEnable FNPTR(glEnable) -#define glEnableClientState FNPTR(glEnableClientState) -#define glFrustumx FNPTR(glFrustumx) -#define glGetError FNPTR(glGetError) -#define glLightxv FNPTR(glLightxv) -#define glLoadIdentity FNPTR(glLoadIdentity) -#define glMaterialx FNPTR(glMaterialx) -#define glMaterialxv FNPTR(glMaterialxv) -#define glMatrixMode FNPTR(glMatrixMode) -#define glMultMatrixx FNPTR(glMultMatrixx) -#define glNormalPointer FNPTR(glNormalPointer) -#define glPopMatrix FNPTR(glPopMatrix) -#define glPushMatrix FNPTR(glPushMatrix) -#define glRotatex FNPTR(glRotatex) -#define glScalex FNPTR(glScalex) -#define glShadeModel FNPTR(glShadeModel) -#define glTranslatex FNPTR(glTranslatex) -#define glVertexPointer FNPTR(glVertexPointer) -#define glViewport FNPTR(glViewport) - -#endif // !IMPORTGL_NO_FNPTR_DEFS - - -#endif // !DISABLE_IMPORTGL - - -#ifdef __cplusplus -} -#endif - - -#endif // !IMPORTGL_H_INCLUDED
--- a/android/testproject/jni/lesson05.c Tue Aug 17 17:28:14 2010 +1200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,574 +0,0 @@ -/* - * This code was created by Jeff Molofee '99 - * (ported to Linux/SDL by Ti Leggett '01) - * - * If you've found this code useful, please let me know. - * - * Visit Jeff at http://nehe.gamedev.net/ - * - * or for port-specific comments, questions, bugreports etc. - * email to leggett@eecs.tulane.edu - */ - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> - -#include <signal.h> - -#include <android/log.h> - - -#ifdef ANDROID -#include <GLES/gl.h> -#else -#include <GL/gl.h> -#include <GL/glu.h> -#endif -#include "SDL.h" - -/* screen width, height, and bit depth */ -#define SCREEN_WIDTH 320 -#define SCREEN_HEIGHT 430 -#define SCREEN_BPP 16 - -/* Define our booleans */ -#define TRUE 1 -#define FALSE 0 - -/* This is our SDL surface */ -SDL_Surface *surface; - -int rotation = 0; - - -/************************************** - gluperspective implementation -**************************************/ -void gluPerspective(double fovy, double aspect, double zNear, double zFar){ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - double xmin, xmax, ymin, ymax; - ymax = zNear * tan(fovy * M_PI / 360.0); - ymin = -ymax; - xmin = ymin * aspect; - xmax = ymax * aspect; - glFrustumf(xmin, xmax, ymin, ymax, zNear, zFar); -} - - -/************************************** - glulookat implementation -**************************************/ -void gluLookAt(GLfloat eyex, GLfloat eyey, GLfloat eyez, - GLfloat centerx, GLfloat centery, GLfloat centerz, - GLfloat upx, GLfloat upy, GLfloat upz) -{ - GLfloat m[16]; - GLfloat x[3], y[3], z[3]; - GLfloat mag; - - /* Make rotation matrix */ - - /* Z vector */ - z[0] = eyex - centerx; - z[1] = eyey - centery; - z[2] = eyez - centerz; - mag = sqrt(z[0] * z[0] + z[1] * z[1] + z[2] * z[2]); - if (mag) { /* mpichler, 19950515 */ - z[0] /= mag; - z[1] /= mag; - z[2] /= mag; - } - - /* Y vector */ - y[0] = upx; - y[1] = upy; - y[2] = upz; - - /* X vector = Y cross Z */ - x[0] = y[1] * z[2] - y[2] * z[1]; - x[1] = -y[0] * z[2] + y[2] * z[0]; - x[2] = y[0] * z[1] - y[1] * z[0]; - - /* Recompute Y = Z cross X */ - y[0] = z[1] * x[2] - z[2] * x[1]; - y[1] = -z[0] * x[2] + z[2] * x[0]; - y[2] = z[0] * x[1] - z[1] * x[0]; - - /* mpichler, 19950515 */ - /* cross product gives area of parallelogram, which is < 1.0 for - * non-perpendicular unit-length vectors; so normalize x, y here - */ - - mag = sqrt(x[0] * x[0] + x[1] * x[1] + x[2] * x[2]); - if (mag) { - x[0] /= mag; - x[1] /= mag; - x[2] /= mag; - } - - mag = sqrt(y[0] * y[0] + y[1] * y[1] + y[2] * y[2]); - if (mag) { - y[0] /= mag; - y[1] /= mag; - y[2] /= mag; - } - -#define M(row,col) m[col*4+row] - M(0, 0) = x[0]; - M(0, 1) = x[1]; - M(0, 2) = x[2]; - M(0, 3) = 0.0; - M(1, 0) = y[0]; - M(1, 1) = y[1]; - M(1, 2) = y[2]; - M(1, 3) = 0.0; - M(2, 0) = z[0]; - M(2, 1) = z[1]; - M(2, 2) = z[2]; - M(2, 3) = 0.0; - M(3, 0) = 0.0; - M(3, 1) = 0.0; - M(3, 2) = 0.0; - M(3, 3) = 1.0; -#undef M - glMultMatrixf(m); - - /* Translate Eye to Origin */ - glTranslatef(-eyex, -eyey, -eyez); - -} - - - - - -/* function to release/destroy our resources and restoring the old desktop */ -void Quit( int returnCode ) -{ - /* clean up the window */ - SDL_Quit( ); - - /* and exit appropriately */ - exit( returnCode ); -} - -/* function to reset our viewport after a window resize */ -int resizeWindow( int width, int height ) -{ - /* Height / width ration */ - GLfloat ratio; - - /* Protect against a divide by zero */ - if ( height == 0 ) - height = 1; - - ratio = ( GLfloat )width / ( GLfloat )height; - - /* Setup our viewport. */ - glViewport( 0, 0, ( GLsizei )width, ( GLsizei )height ); - - /* change to the projection matrix and set our viewing volume. */ - glMatrixMode( GL_PROJECTION ); - glLoadIdentity( ); - - /* Set our perspective */ - gluPerspective( 45.0f, ratio, 0.1f, 100.0f ); - - /* Make sure we're chaning the model view and not the projection */ - glMatrixMode( GL_MODELVIEW ); - - /* Reset The View */ - glLoadIdentity( ); - - return( TRUE ); -} - -/* function to handle key press events */ -void handleKeyPress( SDL_keysym *keysym ) -{ - switch ( keysym->sym ) - { - case SDLK_ESCAPE: - /* ESC key was pressed */ - Quit( 0 ); - break; - case SDLK_F1: - /* F1 key was pressed - * this toggles fullscreen mode - */ - SDL_WM_ToggleFullScreen( surface ); - break; - case SDLK_LEFT: - rotation -= 30; - break; - - case SDLK_RIGHT: - rotation += 30; - break; - - default: - break; - } - - __android_log_print(ANDROID_LOG_INFO, "SDL","Keycode: %d, %d, %d\n", keysym->sym, SDLK_LEFT, SDLK_RIGHT); - - return; -} - -/* general OpenGL initialization function */ -int initGL( GLvoid ) -{ - - /* Enable smooth shading */ - glShadeModel( GL_SMOOTH ); - - /* Set the background black */ - glClearColor( 0.0f, 0.0f, 0.0f, 0.0f ); - - /* Depth buffer setup */ - //glClearDepth( 1.0f ); - - /* Enables Depth Testing */ - glEnable( GL_DEPTH_TEST ); - - /* The Type Of Depth Test To Do */ - glDepthFunc( GL_LEQUAL ); - - /* Really Nice Perspective Calculations */ - glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST ); - - return( TRUE ); -} - -/* Here goes our drawing code */ -int drawGLScene( GLvoid ) -{ - - static int Frames = 0; - static int T0 = 0; - - glViewport(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); - - glClearColorx(0,0,0,255); - glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(45, (float)SCREEN_WIDTH / SCREEN_HEIGHT, 0.5f, 150); - - glMatrixMode(GL_MODELVIEW); - - glLoadIdentity(); - - //Camera - gluLookAt(0,0,5, 0,0,0, 0,1,0); - - //Draw a triangle - //glRotatef(iRot, 0, 1, 0); - - glRotatef( rotation, 0.0f, 1.0f, 0.0f ); - - - glEnableClientState (GL_VERTEX_ARRAY); - glEnableClientState (GL_COLOR_ARRAY); - - /* Rotate The Triangle On The Y axis ( NEW ) */ - //glRotatef( Frames % 360, 0.0f, 1.0f, 0.0f ); - - /* GLES variant of drawing a triangle */ - const GLfloat triVertices[][9] = { - { /* Front Triangle */ - 0.0f, 1.0f, 0.0f, /* Top Of Triangle */ - -1.0f, -1.0f, 1.0f, /* Left Of Triangle */ - 1.0f, -1.0f, 1.0f /* Right Of Triangle */ - }, { /* Right Triangle */ - 0.0f, 1.0f, 0.0f, /* Top Of Triangle */ - 1.0f, -1.0f, 1.0f, /* Left Of Triangle */ - 1.0f, -1.0f, -1.0f /* Right Of Triangle */ - }, { /* Back Triangle */ - 0.0f, 1.0f, 0.0f, /* Top Of Triangle */ - 1.0f, -1.0f, -1.0f, /* Left Of Triangle */ - -1.0f, -1.0f, -1.0f /* Right Of Triangle */ - }, { /* Left Triangle */ - 0.0f, 1.0f, 0.0f, /* Top Of Triangle */ - -1.0f, -1.0f, -1.0f, /* Left Of Triangle */ - -1.0f, -1.0f, 1.0f /* Right Of Triangle */ - } - }; - - /* unlike GL, GLES does not support RGB. We have to use RGBA instead */ - const GLfloat triColors[][12] = { - { /* Front triangle */ - 1.0f, 0.0f, 0.0f, 1.0f, /* Red */ - 0.0f, 1.0f, 0.0f, 1.0f, /* Green */ - 0.0f, 0.0f, 1.0f, 1.0f /* Blue */ - }, { /* Right triangle */ - 1.0f, 0.0f, 0.0f, 1.0f, /* Red */ - 0.0f, 0.0f, 1.0f, 1.0f, /* Blue */ - 0.0f, 1.0f, 0.0f, 1.0f /* Green */ - }, { /* Back triangle */ - 1.0f, 0.0f, 0.0f, 1.0f, /* Red */ - 0.0f, 1.0f, 0.0f, 1.0f, /* Green */ - 0.0f, 0.0f, 1.0f, 1.0f /* Blue */ - }, { /* Left triangle */ - 1.0f, 0.0f, 0.0f, 1.0f, /* Red */ - 0.0f, 0.0f, 1.0f, 1.0f, /* Blue */ - 0.0f, 1.0f, 0.0f, 1.0f /* Green */ - } - }; - - glEnableClientState(GL_COLOR_ARRAY); - - int tri=0; - - /* Loop through all Triangles */ - for(tri=0;tri<sizeof(triVertices)/(9*sizeof(GLfloat));tri++) - { - glVertexPointer(3, GL_FLOAT, 0, triVertices[tri]); - glColorPointer(4, GL_FLOAT, 0, triColors[tri]); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 3); - } - - //__android_log_print(ANDROID_LOG_INFO, "SDL", "render %d", Frames++); - - /* Draw it to the screen */ - SDL_GL_SwapBuffers( ); - - /* Gather our frames per second */ - Frames++; - { - GLint t = SDL_GetTicks(); - if (t - T0 >= 5000) { - GLfloat seconds = (t - T0) / 1000.0; - GLfloat fps = Frames / seconds; - __android_log_print(ANDROID_LOG_INFO, "SDL","%d frames in %g seconds = %g FPS\n", Frames, seconds, fps); - T0 = t; - Frames = 0; - } - } - - rotation++; - - return( TRUE ); -} - - -struct -{ - SDL_AudioSpec spec; - Uint8 *sound; /* Pointer to wave data */ - Uint32 soundlen; /* Length of wave data */ - int soundpos; /* Current play position */ -} wave; - -void SDLCALL -fillerup(void *unused, Uint8 * stream, int len) -{ - __android_log_print(ANDROID_LOG_INFO, "SDL","FILLERUP\n"); - - Uint8 *waveptr; - int waveleft; - - /* Set up the pointers */ - waveptr = wave.sound + wave.soundpos; - waveleft = wave.soundlen - wave.soundpos; - - /* Go! */ - while (waveleft <= len) { - SDL_memcpy(stream, waveptr, waveleft); - stream += waveleft; - len -= waveleft; - waveptr = wave.sound; - waveleft = wave.soundlen; - wave.soundpos = 0; - } - SDL_memcpy(stream, waveptr, len); - wave.soundpos += len; -} - -void testAudio(){ - - const char *file = "/sdcard/sample.wav"; - - /* Load the SDL library */ - if (SDL_Init(SDL_INIT_AUDIO) < 0) { - __android_log_print(ANDROID_LOG_INFO, "SDL","Couldn't initialize SDL Audio: %s\n", SDL_GetError()); - return; - }else{ - __android_log_print(ANDROID_LOG_INFO, "SDL","Init audio ok\n"); - } - - /* Load the wave file into memory */ - if (SDL_LoadWAV(file, &wave.spec, &wave.sound, &wave.soundlen) == NULL) { - __android_log_print(ANDROID_LOG_INFO, "SDL", "Couldn't load %s: %s\n", file, SDL_GetError()); - return; - } - - wave.spec.callback = fillerup; - - __android_log_print(ANDROID_LOG_INFO, "SDL","Loaded: %d\n", wave.soundlen); - - - /* Initialize fillerup() variables */ - if (SDL_OpenAudio(&wave.spec, NULL) < 0) { - __android_log_print(ANDROID_LOG_INFO, "SDL", "Couldn't open audio: %s\n", SDL_GetError()); - SDL_FreeWAV(wave.sound); - return; - } - - __android_log_print(ANDROID_LOG_INFO, "SDL","Using audio driver: %s\n", SDL_GetCurrentAudioDriver()); - - /* Let the audio run */ - SDL_PauseAudio(0); - - __android_log_print(ANDROID_LOG_INFO, "SDL","Playing\n"); - - while (SDL_GetAudioStatus() == SDL_AUDIO_PLAYING){ - //__android_log_print(ANDROID_LOG_INFO, "SDL","Still playing\n"); - SDL_Delay(100); - } - - __android_log_print(ANDROID_LOG_INFO, "SDL","Closing down\n"); - - /* Clean up on signal */ - SDL_CloseAudio(); - SDL_FreeWAV(wave.sound); -} - -int SDL_main( int argc, char **argv ) -{ - - __android_log_print(ANDROID_LOG_INFO, "SDL","entry\n"); - - /* Flags to pass to SDL_SetVideoMode */ - int videoFlags; - /* main loop variable */ - int done = FALSE; - /* used to collect events */ - SDL_Event event; - /* this holds some info about our display */ - const SDL_VideoInfo *videoInfo; - /* whether or not the window is active */ - int isActive = TRUE; - - /* initialize SDL */ - if ( SDL_Init( SDL_INIT_VIDEO ) < 0 ) - { - __android_log_print(ANDROID_LOG_INFO, "SDL", "Video initialization failed: %s\n", - SDL_GetError( ) ); - Quit( 1 ); - } - - /* Fetch the video info */ - videoInfo = SDL_GetVideoInfo( ); - - if ( !videoInfo ) - { - __android_log_print(ANDROID_LOG_INFO, "SDL", "Video query failed: %s\n", - SDL_GetError( ) ); - Quit( 1 ); - } - - /* the flags to pass to SDL_SetVideoMode */ - videoFlags = SDL_OPENGL; /* Enable OpenGL in SDL */ - videoFlags |= SDL_GL_DOUBLEBUFFER; /* Enable double buffering */ - videoFlags |= SDL_HWPALETTE; /* Store the palette in hardware */ - videoFlags |= SDL_RESIZABLE; /* Enable window resizing */ - - /* This checks to see if surfaces can be stored in memory */ - if ( videoInfo->hw_available ) - videoFlags |= SDL_HWSURFACE; - else - videoFlags |= SDL_SWSURFACE; - - /* This checks if hardware blits can be done */ - if ( videoInfo->blit_hw ) - videoFlags |= SDL_HWACCEL; - - /* Sets up OpenGL double buffering */ - SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); - - /* get a SDL surface */ - surface = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, - videoFlags ); - - /* Verify there is a surface */ - if ( !surface ) - { - __android_log_print(ANDROID_LOG_INFO, "SDL", "Video mode set failed: %s\n", SDL_GetError( ) ); - Quit( 1 ); - } - - __android_log_print(ANDROID_LOG_INFO, "SDL","Made a video mode!\n"); - - /* initialize OpenGL */ - initGL( ); - - /* resize the initial window */ - resizeWindow( SCREEN_WIDTH, SCREEN_HEIGHT ); - - - testAudio(); - - - /* wait for events */ - while ( !done ) - { - /* handle the events in the queue */ - - while ( SDL_PollEvent( &event ) ) - { - switch( event.type ) - { - case SDL_ACTIVEEVENT: - /* Something's happend with our focus - * If we lost focus or we are iconified, we - * shouldn't draw the screen - */ - if ( event.active.gain == 0 ) - isActive = FALSE; - else - isActive = TRUE; - break; - case SDL_VIDEORESIZE: - /* handle resize event */ - surface = SDL_SetVideoMode( event.resize.w, - event.resize.h, - 16, videoFlags ); - if ( !surface ) - { - __android_log_print(ANDROID_LOG_INFO, "SDL","Could not get a surface after resize: %s\n", SDL_GetError( ) ); - Quit( 1 ); - } - resizeWindow( event.resize.w, event.resize.h ); - break; - case SDL_KEYDOWN: - /* handle key presses */ - handleKeyPress( &event.key.keysym ); - break; - case SDL_QUIT: - /* handle quit requests */ - done = TRUE; - __android_log_print(ANDROID_LOG_INFO, "SDL","App is shutting down\n"); - break; - default: - break; - } - } - - /* draw the scene */ - if ( isActive ) - drawGLScene( ); - } - - /* clean ourselves up and exit */ - Quit( 0 ); - - /* Should never get here */ - return( 0 ); -} - -
--- a/android/testproject/local.properties Tue Aug 17 17:28:14 2010 +1200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must *NOT* be checked in Version Control Systems, -# as it contains information specific to your local configuration. - -# location of the SDK. This is only used by Ant -# For customization when using a Version Control System, please read the -# header note. -sdk.dir=/home/paul/Projects/gsoc/sdk/android-sdk-linux_86
--- a/android/testproject/res/layout/main.xml Tue Aug 17 17:28:14 2010 +1200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - > -<TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="Hello World, TestActivity" - /> -</LinearLayout> -
--- a/android/testproject/res/values/strings.xml Tue Aug 17 17:28:14 2010 +1200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> - <string name="app_name">TestActivity</string> -</resources>
--- a/android/testproject/src/org/libsdl/android/SDLActivity.java Tue Aug 17 17:28:14 2010 +1200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,388 +0,0 @@ -package org.libsdl.android; - -import javax.microedition.khronos.egl.EGLConfig; -import javax.microedition.khronos.opengles.GL10; -import javax.microedition.khronos.egl.*; - -import android.app.*; -import android.content.*; -import android.view.*; -import android.os.*; -import android.util.Log; -import android.graphics.*; -import android.text.method.*; -import android.text.*; -import android.media.*; -import android.hardware.*; -import android.content.*; - -import java.lang.*; - - -/** - SDL Activity -*/ -public class SDLActivity extends Activity { - - //Main components - private static SDLActivity mSingleton; - private static SDLSurface mSurface; - - //Audio - private static AudioTrack mAudioTrack; - private static boolean bAudioIsEnabled; - - //Sensors - private static boolean bAccelIsEnabled; - - //feature IDs. Must match up on the C side as well. - private static int FEATURE_AUDIO = 1; - private static int FEATURE_ACCEL = 2; - - //Load the .so - static { - System.loadLibrary("sdltest"); - } - - //Setup - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - //So we can call stuff from static callbacks - mSingleton = this; - - //Set up the surface - mSurface = new SDLSurface(getApplication()); - setContentView(mSurface); - SurfaceHolder holder = mSurface.getHolder(); - holder.setType(SurfaceHolder.SURFACE_TYPE_GPU); - - } - - //Audio - public static boolean initAudio(){ - - //blah. Hardcoded things are bad. FIXME when we have more sound stuff - //working properly. - mAudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, - 11025, - AudioFormat.CHANNEL_CONFIGURATION_MONO, - AudioFormat.ENCODING_PCM_8BIT, - 2048, - AudioTrack.MODE_STREAM); - bAudioIsEnabled = true; - return true; - } - - //Accel - public static boolean initAccel(){ - mSurface.enableSensor(Sensor.TYPE_ACCELEROMETER, true); - bAccelIsEnabled = true; - return true; - } - - public static boolean closeAccel(){ - mSurface.enableSensor(Sensor.TYPE_ACCELEROMETER, false); - bAccelIsEnabled = false; - return true; - } - - - //Events - protected void onPause() { - super.onPause(); - } - - protected void onResume() { - super.onResume(); - } - - - - - - //C functions we call - public static native void nativeInit(); - public static native void nativeQuit(); - public static native void nativeSetScreenSize(int width, int height); - public static native void onNativeKeyDown(int keycode); - public static native void onNativeKeyUp(int keycode); - public static native void onNativeTouch(int action, float x, - float y, float p); - public static native void onNativeResize(int x, int y, int format); - public static native void onNativeAccel(float x, float y, float z); - - - - //Java functions called from C - private static void createGLContext(){ - mSurface.initEGL(); - } - - public static void flipBuffers(){ - mSurface.flipEGL(); - } - - public static void updateAudio(byte [] buf){ - - if(mAudioTrack == null){ - return; - } - - mAudioTrack.write(buf, 0, buf.length); - mAudioTrack.play(); - - Log.v("SDL","Played some audio"); - } - - public static void enableFeature(int featureid, int enabled){ - Log.v("SDL","Feature " + featureid + " = " + enabled); - - //Yuck. This is all horribly inelegent. If it gets to more than a few - //'features' I'll rip this out and make something nicer, I promise :) - if(featureid == FEATURE_AUDIO){ - if(enabled == 1){ - initAudio(); - }else{ - //We don't have one of these yet... - //closeAudio(); - } - } - - else if(featureid == FEATURE_ACCEL){ - if(enabled == 1){ - initAccel(); - }else{ - closeAccel(); - } - } - } - - - - - - - -} - -/** - Simple nativeInit() runnable -*/ -class SDLRunner implements Runnable{ - public void run(){ - //SDLActivity.initAudio(); - - //Runs SDL_main() - SDLActivity.nativeInit(); - - Log.v("SDL","SDL thread terminated"); - } -} - - -/** - SDLSurface. This is what we draw on, so we need to know when it's created - in order to do anything useful. - - Because of this, that's where we set up the SDL thread -*/ -class SDLSurface extends SurfaceView implements SurfaceHolder.Callback, - View.OnKeyListener, View.OnTouchListener, SensorEventListener { - - //This is what SDL runs in. It invokes SDL_main(), eventually - private Thread mSDLThread; - - //EGL private objects - private EGLContext mEGLContext; - private EGLSurface mEGLSurface; - private EGLDisplay mEGLDisplay; - - //Sensors - private static SensorManager mSensorManager; - - //Startup - public SDLSurface(Context context) { - super(context); - getHolder().addCallback(this); - - setFocusable(true); - setFocusableInTouchMode(true); - requestFocus(); - setOnKeyListener(this); - setOnTouchListener(this); - - mSensorManager = (SensorManager)context.getSystemService("sensor"); - } - - //Called when we have a valid drawing surface - public void surfaceCreated(SurfaceHolder holder) { - Log.v("SDL","Surface created"); - - int width = getWidth(); - int height = getHeight(); - - //Set the width and height variables in C before we start SDL so we have - //it available on init - SDLActivity.nativeSetScreenSize(width, height); - - //Now start up the C app thread - mSDLThread = new Thread(new SDLRunner(), "SDLThread"); - mSDLThread.start(); - } - - //Called when we lose the surface - public void surfaceDestroyed(SurfaceHolder holder) { - Log.v("SDL","Surface destroyed"); - - SDLActivity.nativeQuit(); - - //Now wait for the SDL thread to quit - try{ - mSDLThread.wait(); - }catch(Exception e){ - Log.v("SDL","Problem stopping thread: " + e); - } - } - - //Called when the surface is resized - public void surfaceChanged(SurfaceHolder holder, int format, - int width, int height) { - Log.v("SDL","Surface resized"); - - SDLActivity.onNativeResize(width, height, format); - } - - //unused - public void onDraw(Canvas canvas) {} - - - //EGL functions - public boolean initEGL(){ - Log.v("SDL","Starting up"); - - try{ - - EGL10 egl = (EGL10)EGLContext.getEGL(); - - EGLDisplay dpy = egl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY); - - int[] version = new int[2]; - egl.eglInitialize(dpy, version); - - int[] configSpec = { - //EGL10.EGL_DEPTH_SIZE, 16, - EGL10.EGL_NONE - }; - EGLConfig[] configs = new EGLConfig[1]; - int[] num_config = new int[1]; - egl.eglChooseConfig(dpy, configSpec, configs, 1, num_config); - EGLConfig config = configs[0]; - - EGLContext ctx = egl.eglCreateContext(dpy, config, EGL10.EGL_NO_CONTEXT, null); - - EGLSurface surface = egl.eglCreateWindowSurface(dpy, config, this, null); - - egl.eglMakeCurrent(dpy, surface, surface, ctx); - - mEGLContext = ctx; - mEGLDisplay = dpy; - mEGLSurface = surface; - - - }catch(Exception e){ - Log.v("SDL", e + ""); - for(StackTraceElement s : e.getStackTrace()){ - Log.v("SDL", s.toString()); - } - } - Log.v("SDL","Done making!"); - - return true; - } - - //EGL buffer flip - public void flipEGL(){ - try{ - - EGL10 egl = (EGL10)EGLContext.getEGL(); - GL10 gl = (GL10)mEGLContext.getGL(); - - egl.eglWaitNative(EGL10.EGL_NATIVE_RENDERABLE, null); - - //drawing here - - egl.eglWaitGL(); - - egl.eglSwapBuffers(mEGLDisplay, mEGLSurface); - - - }catch(Exception e){ - Log.v("SDL", "flipEGL(): " + e); - - for(StackTraceElement s : e.getStackTrace()){ - Log.v("SDL", s.toString()); - } - } - } - - - - //Key events - public boolean onKey(View v, int keyCode, KeyEvent event){ - - if(event.getAction() == KeyEvent.ACTION_DOWN){ - SDLActivity.onNativeKeyDown(keyCode); - return true; - } - - else if(event.getAction() == KeyEvent.ACTION_UP){ - SDLActivity.onNativeKeyUp(keyCode); - return true; - } - - return false; - } - - //Touch events - public boolean onTouch(View v, MotionEvent event){ - - int action = event.getAction(); - float x = event.getX(); - float y = event.getY(); - float p = event.getPressure(); - - //TODO: Anything else we need to pass? - SDLActivity.onNativeTouch(action, x, y, p); - return true; - } - - //Sensor events - public void enableSensor(int sensortype, boolean enabled){ - //TODO: This uses getDefaultSensor - what if we have >1 accels? - if(enabled){ - mSensorManager.registerListener(this, - mSensorManager.getDefaultSensor(sensortype), - SensorManager.SENSOR_DELAY_GAME, null); - }else{ - mSensorManager.unregisterListener(this, - mSensorManager.getDefaultSensor(sensortype)); - } - } - - public void onAccuracyChanged(Sensor sensor, int accuracy){ - //TODO - } - - public void onSensorChanged(SensorEvent event){ - if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){ - SDLActivity.onNativeAccel( event.values[0], - event.values[1], - event.values[2] ); - } - } - - -} - -