Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(830)

Unified Diff: chrome/browser/android/vr_shell/vr_shell_gl.cc

Issue 2891243002: VR: Loading DD controller model after GL is initialized (Closed)
Patch Set: doing texture patching on background task Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/android/vr_shell/vr_shell_gl.h ('k') | chrome/browser/android/vr_shell/vr_shell_renderer.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/android/vr_shell/vr_shell_gl.cc
diff --git a/chrome/browser/android/vr_shell/vr_shell_gl.cc b/chrome/browser/android/vr_shell/vr_shell_gl.cc
index 08cf41e9e498b90f6deabc83bc891db807c0febf..65cc835187302e13ebd1d9266e54d0b50d144d13 100644
--- a/chrome/browser/android/vr_shell/vr_shell_gl.cc
+++ b/chrome/browser/android/vr_shell/vr_shell_gl.cc
@@ -12,6 +12,7 @@
#include "base/callback_helpers.h"
#include "base/memory/ptr_util.h"
#include "base/metrics/histogram_macros.h"
+#include "base/task_scheduler/post_task.h"
#include "base/threading/thread_task_runner_handle.h"
#include "chrome/browser/android/vr_shell/fps_meter.h"
#include "chrome/browser/android/vr_shell/mailbox_to_surface_bridge.h"
@@ -196,15 +197,28 @@ double NowSeconds() {
return (base::TimeTicks::Now() - base::TimeTicks()).InSecondsF();
}
+void LoadControllerModelTask(
+ base::WeakPtr<VrShellGl> weak_vr_shell_gl,
+ scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
+ auto controller_model = VrControllerModel::LoadFromResources();
+ if (controller_model) {
+ task_runner->PostTask(
+ FROM_HERE, base::Bind(&VrShellGl::SetControllerModel, weak_vr_shell_gl,
+ base::Passed(&controller_model)));
+ }
+}
+
} // namespace
VrShellGl::VrShellGl(VrBrowserInterface* browser,
gvr_context* gvr_api,
bool initially_web_vr,
bool reprojected_rendering,
+ bool daydream_support,
UiScene* scene)
: web_vr_mode_(initially_web_vr),
surfaceless_rendering_(reprojected_rendering),
+ daydream_support_(daydream_support),
task_runner_(base::ThreadTaskRunnerHandle::Get()),
binding_(this),
browser_(browser),
@@ -305,6 +319,13 @@ void VrShellGl::InitializeGl(gfx::AcceleratedWidget window) {
OnVSync();
ready_to_draw_ = true;
+
+ if (daydream_support_) {
+ base::PostTaskWithTraits(
+ FROM_HERE, {base::TaskPriority::BACKGROUND},
+ base::Bind(LoadControllerModelTask, weak_ptr_factory_.GetWeakPtr(),
+ task_runner_));
+ }
}
void VrShellGl::CreateContentSurface() {
@@ -458,9 +479,10 @@ void VrShellGl::InitializeRenderer() {
render_size_headlocked_ = {render_size_headlocked.width,
render_size_headlocked.height};
- swap_chain_.reset(new gvr::SwapChain(gvr_api_->CreateSwapChain(specs)));
+ swap_chain_ =
+ base::MakeUnique<gvr::SwapChain>(gvr_api_->CreateSwapChain(specs));
- vr_shell_renderer_.reset(new VrShellRenderer());
+ vr_shell_renderer_ = base::MakeUnique<VrShellRenderer>();
// Allocate a buffer viewport for use in UI drawing. This isn't
// initialized at this point, it'll be set from other viewport list
« no previous file with comments | « chrome/browser/android/vr_shell/vr_shell_gl.h ('k') | chrome/browser/android/vr_shell/vr_shell_renderer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698