| Index: device/vr/android/java/src/org/chromium/device/vr/GvrDeviceProvider.java
|
| diff --git a/device/vr/android/java/src/org/chromium/device/vr/GvrDeviceProvider.java b/device/vr/android/java/src/org/chromium/device/vr/GvrDeviceProvider.java
|
| index bf7db8ce024499e4c26392c0b133bf40ed8bbfd3..ba4f44c96acd2b8580ae7b2a2553587401d64c80 100644
|
| --- a/device/vr/android/java/src/org/chromium/device/vr/GvrDeviceProvider.java
|
| +++ b/device/vr/android/java/src/org/chromium/device/vr/GvrDeviceProvider.java
|
| @@ -5,9 +5,11 @@
|
| package org.chromium.device.vr;
|
|
|
| import android.content.Context;
|
| +import android.os.StrictMode;
|
|
|
| import com.google.vr.ndk.base.GvrLayout;
|
|
|
| +import org.chromium.base.Log;
|
| import org.chromium.base.annotations.CalledByNative;
|
| import org.chromium.base.annotations.JNINamespace;
|
|
|
| @@ -18,21 +20,9 @@ import org.chromium.base.annotations.JNINamespace;
|
| class GvrDeviceProvider {
|
| private static final String TAG = "GvrDeviceProvider";
|
| private final GvrLayout mLayout;
|
| - private Thread mGvrInitThread;
|
|
|
| private GvrDeviceProvider(Context context) {
|
| mLayout = new GvrLayout(context);
|
| -
|
| - // Initialize the GVR API on a separate thread to avoid strict mode
|
| - // violations. Note that this doesn't fix the underlying issue of
|
| - // blocking on disk reads here.
|
| - mGvrInitThread = new Thread(new Runnable() {
|
| - @Override
|
| - public void run() {
|
| - mLayout.getGvrApi();
|
| - }
|
| - });
|
| - mGvrInitThread.start();
|
| }
|
|
|
| @CalledByNative
|
| @@ -42,11 +32,20 @@ class GvrDeviceProvider {
|
|
|
| @CalledByNative
|
| private long getNativeContext() {
|
| + long nativeGvrContext = 0;
|
| +
|
| + StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads();
|
| +
|
| try {
|
| - mGvrInitThread.join();
|
| + nativeGvrContext = mLayout.getGvrApi().getNativeGvrContext();
|
| } catch (Exception ex) {
|
| + Log.e(TAG, "Unable to instantiate GvrApi", ex);
|
| + return 0;
|
| + } finally {
|
| + StrictMode.setThreadPolicy(oldPolicy);
|
| }
|
| - return mLayout.getGvrApi().getNativeGvrContext();
|
| +
|
| + return nativeGvrContext;
|
| }
|
|
|
| @CalledByNative
|
|
|