summaryrefslogtreecommitdiffstats
path: root/WebCore/platform
diff options
context:
space:
mode:
authorDerek Sollenberger <djsollen@google.com>2011-02-05 19:14:14 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2011-02-05 19:14:14 -0800
commitad1398b85d7cef3bd7c3dc833921fcdb3c7f06f6 (patch)
tree3047a7d25945cef4c9f8627ea6b5919335b5efc3 /WebCore/platform
parent4fff0b9fdd23cd60b036e2ea48190e7a7d8dbf13 (diff)
parent79f07c999ff47d31cb788a64e35bfc04e7ed394d (diff)
downloadexternal_webkit-ad1398b85d7cef3bd7c3dc833921fcdb3c7f06f6.zip
external_webkit-ad1398b85d7cef3bd7c3dc833921fcdb3c7f06f6.tar.gz
external_webkit-ad1398b85d7cef3bd7c3dc833921fcdb3c7f06f6.tar.bz2
am 79f07c99: Fix to post an inval when plugins request a native video surface.
* commit '79f07c999ff47d31cb788a64e35bfc04e7ed394d': Fix to post an inval when plugins request a native video surface.
Diffstat (limited to 'WebCore/platform')
-rw-r--r--WebCore/platform/graphics/android/MediaTexture.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/WebCore/platform/graphics/android/MediaTexture.cpp b/WebCore/platform/graphics/android/MediaTexture.cpp
index c994e78..a92b570 100644
--- a/WebCore/platform/graphics/android/MediaTexture.cpp
+++ b/WebCore/platform/graphics/android/MediaTexture.cpp
@@ -158,8 +158,23 @@ ANativeWindow* VideoTexture::requestNewWindow()
}
m_newWindowRequest = true;
+
+ // post an inval message to the UI thread to fulfill the request
+ if (m_weakWebViewRef) {
+ JNIEnv* env = JSC::Bindings::getJNIEnv();
+ jobject localWebViewRef = env->NewLocalRef(m_weakWebViewRef);
+ if (localWebViewRef) {
+ jclass wvClass = env->GetObjectClass(localWebViewRef);
+ jmethodID postInvalMethod = env->GetMethodID(wvClass, "postInvalidate", "()V");
+ env->CallVoidMethod(localWebViewRef, postInvalMethod);
+ env->DeleteLocalRef(wvClass);
+ env->DeleteLocalRef(localWebViewRef);
+ }
+ checkException(env);
+ }
+
//block until the request can be fulfilled or we time out
- m_newVideoRequestCond.waitRelative(m_videoLock, 1000000000); // 1 sec
+ m_newVideoRequestCond.waitRelative(m_videoLock, 500000000); // .5 sec
if (m_surfaceTextureClient.get())
m_newWindowReady = false;