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

Unified Diff: ui/android/window_android.cc

Issue 2754493002: Expose VSync pausing through WindowAndroid and pause VSync during webVR presentation (Closed)
Patch Set: Fix 'unused' member Created 3 years, 9 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 | « ui/android/window_android.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/android/window_android.cc
diff --git a/ui/android/window_android.cc b/ui/android/window_android.cc
index 8a0c8c368ff47df37ddff87326fe0b8819359655..a2100db6eabf4f29eb8fe66b71d8d3504052649d 100644
--- a/ui/android/window_android.cc
+++ b/ui/android/window_android.cc
@@ -32,7 +32,8 @@ class WindowAndroid::WindowBeginFrameSource : public cc::BeginFrameSource {
observers_(
base::ObserverList<cc::BeginFrameObserver>::NOTIFY_EXISTING_ONLY),
observer_count_(0),
- next_sequence_number_(cc::BeginFrameArgs::kStartingFrameNumber) {}
+ next_sequence_number_(cc::BeginFrameArgs::kStartingFrameNumber),
+ paused_(false) {}
~WindowBeginFrameSource() override {}
// cc::BeginFrameSource implementation.
@@ -43,6 +44,7 @@ class WindowAndroid::WindowBeginFrameSource : public cc::BeginFrameSource {
bool IsThrottled() const override { return true; }
void OnVSync(base::TimeTicks frame_time, base::TimeDelta vsync_period);
+ void OnPauseChanged(bool paused);
private:
WindowAndroid* const window_;
@@ -50,6 +52,7 @@ class WindowAndroid::WindowBeginFrameSource : public cc::BeginFrameSource {
int observer_count_;
cc::BeginFrameArgs last_begin_frame_args_;
uint64_t next_sequence_number_;
+ bool paused_;
};
void WindowAndroid::WindowBeginFrameSource::AddObserver(
@@ -59,7 +62,7 @@ void WindowAndroid::WindowBeginFrameSource::AddObserver(
observers_.AddObserver(obs);
observer_count_++;
- obs->OnBeginFrameSourcePausedChanged(false);
+ obs->OnBeginFrameSourcePausedChanged(paused_);
window_->SetNeedsBeginFrames(true);
// Send a MISSED BeginFrame if possible and necessary.
@@ -108,6 +111,12 @@ void WindowAndroid::WindowBeginFrameSource::OnVSync(
obs.OnBeginFrame(last_begin_frame_args_);
}
+void WindowAndroid::WindowBeginFrameSource::OnPauseChanged(bool paused) {
+ paused_ = paused;
+ for (auto& obs : observers_)
+ obs.OnBeginFrameSourcePausedChanged(paused_);
+}
+
WindowAndroid::WindowAndroid(JNIEnv* env, jobject obj, int display_id)
: display_id_(display_id),
compositor_(NULL),
@@ -244,6 +253,12 @@ void WindowAndroid::OnActivityStarted(JNIEnv* env,
observer.OnActivityStarted();
}
+void WindowAndroid::SetVSyncPaused(JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ bool paused) {
+ begin_frame_source_->OnPauseChanged(paused);
+}
+
bool WindowAndroid::HasPermission(const std::string& permission) {
JNIEnv* env = AttachCurrentThread();
return Java_WindowAndroid_hasPermission(
« no previous file with comments | « ui/android/window_android.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698