Index: content/browser/android/child_process_launcher_android.cc |
diff --git a/content/browser/android/child_process_launcher_android.cc b/content/browser/android/child_process_launcher_android.cc |
index cf915e4a42a837de1f7a824c63964e205cbbbe4f..ca99a784286ae9fd784d28d8c7c33c2db4ae8766 100644 |
--- a/content/browser/android/child_process_launcher_android.cc |
+++ b/content/browser/android/child_process_launcher_android.cc |
@@ -81,6 +81,7 @@ static void OnChildProcessStarted(JNIEnv*, |
void StartChildProcess( |
const CommandLine::StringVector& argv, |
+ int child_process_id, |
const std::vector<content::FileDescriptorInfo>& files_to_register, |
const StartChildProcessCallback& callback) { |
JNIEnv* env = AttachCurrentThread(); |
@@ -119,6 +120,7 @@ void StartChildProcess( |
Java_ChildProcessLauncher_start(env, |
base::android::GetApplicationContext(), |
j_argv.obj(), |
+ child_process_id, |
j_file_ids.obj(), |
j_file_fds.obj(), |
j_file_auto_close.obj(), |
@@ -156,7 +158,19 @@ jobject GetViewSurface(JNIEnv* env, jclass clazz, jint surface_id) { |
// handled on a binder thread. Handling this on the UI thread will lead |
// to deadlocks. |
DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- return CompositorImpl::GetSurface(surface_id); |
+ return CompositorImpl::GetSurface(surface_id).Release(); |
+} |
+ |
+jobject GetSurfaceTextureSurface(JNIEnv* env, |
+ jclass clazz, |
+ jint surface_texture_id, |
+ jint child_process_id) { |
+ // This is a synchronous call from a renderer process and is expected to be |
+ // handled on a binder thread. Handling this on the UI thread will lead |
+ // to deadlocks. |
+ DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ return CompositorImpl::GetSurfaceTextureSurface(surface_texture_id, |
+ child_process_id).Release(); |
} |
jboolean IsSingleProcess(JNIEnv* env, jclass clazz) { |