summaryrefslogtreecommitdiffstats
path: root/core/jni
diff options
context:
space:
mode:
authorChong Zhang <chz@google.com>2013-05-03 15:55:36 -0700
committerChong Zhang <chz@google.com>2013-08-23 16:02:09 -0700
commit1f3ecaae6303d5ee6c5ca8499262c9962f036365 (patch)
tree610f36b3c049710713e921c1aa10938fa250f1d2 /core/jni
parent570cd0f4c06a6e3de2af348040415ff2fcff57a1 (diff)
downloadframeworks_base-1f3ecaae6303d5ee6c5ca8499262c9962f036365.zip
frameworks_base-1f3ecaae6303d5ee6c5ca8499262c9962f036365.tar.gz
frameworks_base-1f3ecaae6303d5ee6c5ca8499262c9962f036365.tar.bz2
wifi-display: add certification options
When certification mode is enabled: - Pass wfd session info to wifi display settings - Allow sink to connect to source - Add interface in display manager for pausing/resuming session - Add interface in WifiP2pManager for setting lc, oc and starting autonomous GO Note that we're compliant regardless of certification mode, but some confusing options (eg. allowing incoming connection from sink) we want to hide when not being tested. Bug: 9371882 Change-Id: Icc7dcae4e046453796cfa03f5f197055fabf234b
Diffstat (limited to 'core/jni')
-rw-r--r--core/jni/android_media_RemoteDisplay.cpp28
1 files changed, 25 insertions, 3 deletions
diff --git a/core/jni/android_media_RemoteDisplay.cpp b/core/jni/android_media_RemoteDisplay.cpp
index 80d13be..3fd8ed9 100644
--- a/core/jni/android_media_RemoteDisplay.cpp
+++ b/core/jni/android_media_RemoteDisplay.cpp
@@ -61,7 +61,7 @@ protected:
public:
virtual void onDisplayConnected(const sp<IGraphicBufferProducer>& bufferProducer,
- uint32_t width, uint32_t height, uint32_t flags) {
+ uint32_t width, uint32_t height, uint32_t flags, uint32_t session) {
JNIEnv* env = AndroidRuntime::getJNIEnv();
jobject surfaceObj = android_view_Surface_createFromIGraphicBufferProducer(env, bufferProducer);
@@ -73,7 +73,7 @@ public:
env->CallVoidMethod(mRemoteDisplayObjGlobal,
gRemoteDisplayClassInfo.notifyDisplayConnected,
- surfaceObj, width, height, flags);
+ surfaceObj, width, height, flags, session);
env->DeleteLocalRef(surfaceObj);
checkAndClearExceptionFromCallback(env, "notifyDisplayConnected");
}
@@ -117,6 +117,14 @@ public:
mDisplay->dispose();
}
+ void pause() {
+ mDisplay->pause();
+ }
+
+ void resume() {
+ mDisplay->resume();
+ }
+
private:
sp<IRemoteDisplay> mDisplay;
sp<NativeRemoteDisplayClient> mClient;
@@ -149,6 +157,16 @@ static jint nativeListen(JNIEnv* env, jobject remoteDisplayObj, jstring ifaceStr
return reinterpret_cast<jint>(wrapper);
}
+static void nativePause(JNIEnv* env, jobject remoteDisplayObj, jint ptr) {
+ NativeRemoteDisplay* wrapper = reinterpret_cast<NativeRemoteDisplay*>(ptr);
+ wrapper->pause();
+}
+
+static void nativeResume(JNIEnv* env, jobject remoteDisplayObj, jint ptr) {
+ NativeRemoteDisplay* wrapper = reinterpret_cast<NativeRemoteDisplay*>(ptr);
+ wrapper->resume();
+}
+
static void nativeDispose(JNIEnv* env, jobject remoteDisplayObj, jint ptr) {
NativeRemoteDisplay* wrapper = reinterpret_cast<NativeRemoteDisplay*>(ptr);
delete wrapper;
@@ -161,6 +179,10 @@ static JNINativeMethod gMethods[] = {
(void*)nativeListen },
{"nativeDispose", "(I)V",
(void*)nativeDispose },
+ {"nativePause", "(I)V",
+ (void*)nativePause },
+ {"nativeResume", "(I)V",
+ (void*)nativeResume },
};
int register_android_media_RemoteDisplay(JNIEnv* env)
@@ -171,7 +193,7 @@ int register_android_media_RemoteDisplay(JNIEnv* env)
jclass clazz = env->FindClass("android/media/RemoteDisplay");
gRemoteDisplayClassInfo.notifyDisplayConnected =
env->GetMethodID(clazz, "notifyDisplayConnected",
- "(Landroid/view/Surface;III)V");
+ "(Landroid/view/Surface;IIII)V");
gRemoteDisplayClassInfo.notifyDisplayDisconnected =
env->GetMethodID(clazz, "notifyDisplayDisconnected", "()V");
gRemoteDisplayClassInfo.notifyDisplayError =