Explorar o código

Queue url request if view has not been created yet, make a note of hide/show

Josh Engebretson %!s(int64=8) %!d(string=hai) anos
pai
achega
5958e300fd

+ 8 - 0
Data/AtomicEditor/Deployment/Android/src/com/atomicgameengine/player/AtomicWebView.java

@@ -92,6 +92,14 @@ public class AtomicWebView {
             @Override
             public void run() {
                 WebView webView = AtomicWebView.webViews.get(handle);
+
+                // Important: this is currently being run per frame
+                // and hide/show should be cached native side
+                if(webView.getParent() == layout)
+                {
+                    return;
+                }
+
                 layout.addView(webView);
                 RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(webView.getLayoutParams());
                 params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);

+ 11 - 1
Source/Atomic/UI/Platform/UIPlatformWebViewAndroid.cpp

@@ -131,7 +131,16 @@ bool UIPlatformWebView::PlatformCreateWebView()
     webViewHandle_ = webViewHandleCounter_++;
 
     android_webViewEnsureInitialized();
-    return (bool) gCreateMethodInfo.GetEnv()->CallStaticBooleanMethod(gCreateMethodInfo.classID, gCreateMethodInfo.methodID, (jint) webViewHandle_, (jlong)0, (jlong)0);
+
+    bool result = (bool) gCreateMethodInfo.GetEnv()->CallStaticBooleanMethod(gCreateMethodInfo.classID, gCreateMethodInfo.methodID, (jint) webViewHandle_, (jlong)0, (jlong)0);
+
+    if (result && queuedRequest_.Length())
+    {
+        LoadURL(queuedRequest_);
+        queuedRequest_.Clear();
+    }
+
+    return result;
 
 }
 
@@ -247,6 +256,7 @@ void UIPlatformWebView::LoadURL(const String& url)
 {
     if (webViewHandle_ == UI_PLATFORM_WEBVIEW_INVALID_HANDLE)
     {
+        queuedRequest_ = url;
         return;
     }