diff options
| author | Chong Zhang <chz@google.com> | 2013-05-03 15:55:36 -0700 |
|---|---|---|
| committer | Chong Zhang <chz@google.com> | 2013-08-23 16:02:09 -0700 |
| commit | 1f3ecaae6303d5ee6c5ca8499262c9962f036365 (patch) | |
| tree | 610f36b3c049710713e921c1aa10938fa250f1d2 /core/jni | |
| parent | 570cd0f4c06a6e3de2af348040415ff2fcff57a1 (diff) | |
| download | frameworks_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.cpp | 28 |
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 = |
