From abe931f68e58ca45eaa0cce15512dadff942eab2 Mon Sep 17 00:00:00 2001 From: "Randall E. Barker" Date: Sat, 29 Feb 2020 02:51:45 -0800 Subject: [PATCH] Do not queue WindowWidget::unsetView() calls (#2898) * Do not queue WindowWidget::unsetView() calls * Update modelview url when there is a title bar visibility change Co-authored-by: Manuel Martin --- .../vrbrowser/ui/widgets/TitleBarWidget.java | 4 ++ .../vrbrowser/ui/widgets/WindowWidget.java | 48 ++++++++----------- 2 files changed, 25 insertions(+), 27 deletions(-) diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/TitleBarWidget.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/TitleBarWidget.java index 992e5b326..a3ac10a6b 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/TitleBarWidget.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/TitleBarWidget.java @@ -149,6 +149,10 @@ public void attachToWindow(@NonNull WindowWidget aWindow) { } else { mWidgetManager.updateWidget(TitleBarWidget.this); } + + if (mAttachedWindow.getSession() != null) { + mViewModel.setUrl(mAttachedWindow.getSession().getCurrentUri()); + } }; } diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/WindowWidget.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/WindowWidget.java index b064173fc..57b84195e 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/WindowWidget.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/WindowWidget.java @@ -403,36 +403,28 @@ private void setView(View view, boolean switchSurface) { } private void unsetView(View view, boolean switchSurface) { - Runnable unsetView = () -> { - if (mView != null && mView == view) { - mView = null; - removeView(view); - view.setVisibility(GONE); - - if (switchSurface) { - setWillNotDraw(true); - if (mTexture != null) { - // Surface must be recreated here when not using layers. - // When using layers the new Surface is received via the setSurface() method. - if (mRenderer != null) { - mRenderer.release(); - mRenderer = null; - } - mSurface = new Surface(mTexture); + mSetViewQueuedCalls.clear(); + if (mView != null && mView == view) { + mView = null; + removeView(view); + view.setVisibility(GONE); + + if (switchSurface) { + setWillNotDraw(true); + if (mTexture != null) { + // Surface must be recreated here when not using layers. + // When using layers the new Surface is received via the setSurface() method. + if (mRenderer != null) { + mRenderer.release(); + mRenderer = null; } - mWidgetPlacement.density = 1.0f; - mWidgetManager.updateWidget(WindowWidget.this); - mWidgetManager.popWorldBrightness(WindowWidget.this); - mWidgetManager.popBackHandler(mBackHandler); + mSurface = new Surface(mTexture); } + mWidgetPlacement.density = 1.0f; + mWidgetManager.updateWidget(WindowWidget.this); + mWidgetManager.popWorldBrightness(WindowWidget.this); + mWidgetManager.popBackHandler(mBackHandler); } - }; - - if (mAfterFirstPaint) { - unsetView.run(); - - } else { - mSetViewQueuedCalls.add(unsetView); } } @@ -1058,6 +1050,8 @@ public void setSession(@NonNull Session aSession, @OldSessionDisplayAction int a for (WindowListener listener: mListeners) { listener.onSessionChanged(oldSession, aSession); } + + } mCaptureOnPageStop = false; hideLibraryPanels();