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

Unified Diff: cc/scheduler/begin_frame_source.h

Issue 1533773002: Delete CC. (Closed) Base URL: git@github.com:domokit/mojo.git@cl-2e
Patch Set: rebase Created 5 years 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 | « cc/resources/transferable_resource.cc ('k') | cc/scheduler/begin_frame_source.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/scheduler/begin_frame_source.h
diff --git a/cc/scheduler/begin_frame_source.h b/cc/scheduler/begin_frame_source.h
deleted file mode 100644
index d15139d76f51325c4b989eaf4679e960c75038a0..0000000000000000000000000000000000000000
--- a/cc/scheduler/begin_frame_source.h
+++ /dev/null
@@ -1,283 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CC_SCHEDULER_BEGIN_FRAME_SOURCE_H_
-#define CC_SCHEDULER_BEGIN_FRAME_SOURCE_H_
-
-#include <set>
-#include <string>
-
-#include "base/logging.h"
-#include "base/trace_event/trace_event.h"
-#include "cc/output/begin_frame_args.h"
-#include "cc/output/vsync_parameter_observer.h"
-#include "cc/scheduler/delay_based_time_source.h"
-
-namespace cc {
-
-// (Pure) Interface for observing BeginFrame messages from BeginFrameSource
-// objects.
-class BeginFrameObserver {
- public:
- virtual ~BeginFrameObserver() {}
-
- // The |args| given to OnBeginFrame is guaranteed to have
- // |args|.IsValid()==true and have |args|.frame_time
- // field be strictly greater than the previous call.
- //
- // Side effects: This function can (and most of the time *will*) change the
- // return value of the LastUsedBeginFrameArgs method. See the documentation
- // on that method for more information.
- virtual void OnBeginFrame(const BeginFrameArgs& args) = 0;
-
- // Returns the last BeginFrameArgs used by the observer. This method's return
- // value is affected by the OnBeginFrame method!
- //
- // - Before the first call of OnBeginFrame, this method should return a
- // BeginFrameArgs on which IsValid() returns false.
- //
- // - If the |args| passed to OnBeginFrame is (or *will be*) used, then
- // LastUsedBeginFrameArgs return value should become the |args| given to
- // OnBeginFrame.
- //
- // - If the |args| passed to OnBeginFrame is dropped, then
- // LastUsedBeginFrameArgs return value should *not* change.
- //
- // These requirements are designed to allow chaining and nesting of
- // BeginFrameObservers which filter the incoming BeginFrame messages while
- // preventing "double dropping" and other bad side effects.
- virtual const BeginFrameArgs LastUsedBeginFrameArgs() const = 0;
-
- // Tracing support
- virtual void AsValueInto(base::trace_event::TracedValue* dict) const = 0;
-};
-
-// Simple mix in which implements a BeginFrameObserver which checks the
-// incoming values meet the BeginFrameObserver requirements and implements the
-// required LastUsedBeginFrameArgs behaviour.
-//
-// Users of this mix in should;
-// - Implement the OnBeginFrameMixInDelegate function.
-// - Recommended (but not required) to call
-// BeginFrameObserverMixIn::OnValueInto in their overridden OnValueInto
-// function.
-class BeginFrameObserverMixIn : public BeginFrameObserver {
- public:
- BeginFrameObserverMixIn();
-
- // BeginFrameObserver
-
- // Traces |args| and DCHECK |args| satisfies pre-conditions then calls
- // OnBeginFrameMixInDelegate and updates the last_begin_frame_args_ value on
- // true.
- void OnBeginFrame(const BeginFrameArgs& args) override;
- const BeginFrameArgs LastUsedBeginFrameArgs() const override;
-
- // Outputs last_begin_frame_args_
- void AsValueInto(base::trace_event::TracedValue* dict) const override;
-
- protected:
- // Subclasses should override this method!
- // Return true if the given argument is (or will be) used.
- virtual bool OnBeginFrameMixInDelegate(const BeginFrameArgs& args) = 0;
-
- BeginFrameArgs last_begin_frame_args_;
- int64_t dropped_begin_frame_args_;
-};
-
-// Interface for a class which produces BeginFrame calls to a
-// BeginFrameObserver.
-//
-// BeginFrame calls *normally* occur just after a vsync interrupt when input
-// processing has been finished and provide information about the time values
-// of the vsync times. *However*, these values can be heavily modified or even
-// plain made up (when no vsync signal is available or vsync throttling is
-// turned off). See the BeginFrameObserver for information about the guarantees
-// all BeginFrameSources *must* provide.
-class BeginFrameSource {
- public:
- virtual ~BeginFrameSource() {}
-
- // SetNeedsBeginFrames is the on/off "switch" for the BeginFrameSource. When
- // set to false no more BeginFrame messages should be sent to observer.
- virtual bool NeedsBeginFrames() const = 0;
- virtual void SetNeedsBeginFrames(bool needs_begin_frames) = 0;
-
- // DidFinishFrame provides back pressure to a frame source about frame
- // processing (rather than toggling SetNeedsBeginFrames every frame). It is
- // used by systems like the BackToBackFrameSource to make sure only one frame
- // is pending at a time.
- virtual void DidFinishFrame(size_t remaining_frames) = 0;
-
- // Add/Remove an observer from the source.
- // *At the moment* only a single observer can be added to the source, however
- // in the future this may be extended to allow multiple observers.
- // If making this change, please use base::ObserverList to do so.
- virtual void AddObserver(BeginFrameObserver* obs) = 0;
- virtual void RemoveObserver(BeginFrameObserver* obs) = 0;
-
- // Tells the Source that client is ready to handle BeginFrames messages.
- virtual void SetClientReady() = 0;
-
- // Tracing support - Recommend (but not required) to call this implementation
- // in any override.
- virtual void AsValueInto(base::trace_event::TracedValue* dict) const = 0;
-};
-
-// Simple mix in which implements a BeginFrameSource.
-// Implementation classes should:
-// - Implement the pure virtual (Set)NeedsBeginFrames methods from
-// BeginFrameSource.
-// - Use the CallOnBeginFrame method to call to the observer(s).
-// - Recommended (but not required) to call BeginFrameSourceMixIn::AsValueInto
-// in their own AsValueInto implementation.
-class BeginFrameSourceMixIn : public BeginFrameSource {
- public:
- ~BeginFrameSourceMixIn() override {}
-
- // BeginFrameSource
- bool NeedsBeginFrames() const final;
- void SetNeedsBeginFrames(bool needs_begin_frames) final;
- void DidFinishFrame(size_t remaining_frames) override {}
- void AddObserver(BeginFrameObserver* obs) final;
- void RemoveObserver(BeginFrameObserver* obs) final;
- void SetClientReady() override {}
-
- // Tracing support - Recommend (but not required) to call this implementation
- // in any override.
- void AsValueInto(base::trace_event::TracedValue* dict) const override;
-
- protected:
- BeginFrameSourceMixIn();
-
- // These methods should be used by subclasses to make the call to the
- // observers.
- void CallOnBeginFrame(const BeginFrameArgs& args);
-
- // This method should be overridden if you want to change some behaviour on
- // needs_begin_frames change.
- virtual void OnNeedsBeginFramesChange(bool needs_begin_frames) {}
-
- BeginFrameObserver* observer_;
- bool needs_begin_frames_;
-
- private:
- bool inside_as_value_into_;
-};
-
-// A frame source which calls BeginFrame (at the next possible time) as soon as
-// remaining frames reaches zero.
-class BackToBackBeginFrameSource : public BeginFrameSourceMixIn {
- public:
- static scoped_ptr<BackToBackBeginFrameSource> Create(
- base::SingleThreadTaskRunner* task_runner);
- ~BackToBackBeginFrameSource() override;
-
- // BeginFrameSource
- void DidFinishFrame(size_t remaining_frames) override;
-
- // Tracing
- void AsValueInto(base::trace_event::TracedValue* dict) const override;
-
- protected:
- explicit BackToBackBeginFrameSource(
- base::SingleThreadTaskRunner* task_runner);
- virtual base::TimeTicks Now(); // Now overridable for testing
-
- base::SingleThreadTaskRunner* task_runner_;
-
- bool send_begin_frame_posted_;
-
- // BeginFrameSourceMixIn
- void OnNeedsBeginFramesChange(bool needs_begin_frames) override;
-
- void BeginFrame();
-
- private:
- base::WeakPtrFactory<BackToBackBeginFrameSource> weak_factory_;
-};
-
-// A frame source which is locked to an external parameters provides from a
-// vsync source and generates BeginFrameArgs for it.
-class SyntheticBeginFrameSource : public BeginFrameSourceMixIn,
- public VSyncParameterObserver,
- public TimeSourceClient {
- public:
- static scoped_ptr<SyntheticBeginFrameSource> Create(
- base::SingleThreadTaskRunner* task_runner,
- base::TimeTicks initial_vsync_timebase,
- base::TimeDelta initial_vsync_interval);
- ~SyntheticBeginFrameSource() override;
-
- // Tracing
- void AsValueInto(base::trace_event::TracedValue* dict) const override;
-
- // VSyncParameterObserver
- void OnUpdateVSyncParameters(base::TimeTicks new_vsync_timebase,
- base::TimeDelta new_vsync_interval) override;
-
- // TimeSourceClient
- void OnTimerTick() override;
-
- protected:
- explicit SyntheticBeginFrameSource(
- scoped_refptr<DelayBasedTimeSource> time_source);
-
- BeginFrameArgs CreateBeginFrameArgs(base::TimeTicks frame_time,
- BeginFrameArgs::BeginFrameArgsType type);
-
- // BeginFrameSourceMixIn
- void OnNeedsBeginFramesChange(bool needs_begin_frames) override;
-
- scoped_refptr<DelayBasedTimeSource> time_source_;
-};
-
-// A "virtual" frame source which lets you switch between multiple other frame
-// sources while making sure the BeginFrameArgs stays increasing (possibly
-// enforcing minimum boundry between BeginFrameArgs messages).
-class BeginFrameSourceMultiplexer : public BeginFrameSourceMixIn,
- public BeginFrameObserver {
- public:
- static scoped_ptr<BeginFrameSourceMultiplexer> Create();
- ~BeginFrameSourceMultiplexer() override;
-
- void SetMinimumInterval(base::TimeDelta new_minimum_interval);
-
- void AddSource(BeginFrameSource* new_source);
- void RemoveSource(BeginFrameSource* existing_source);
- void SetActiveSource(BeginFrameSource* new_source);
- const BeginFrameSource* ActiveSource();
-
- // BeginFrameObserver
- // The mux is an BeginFrameObserver as it needs to proxy the OnBeginFrame
- // calls to preserve the monotonicity of the BeginFrameArgs when switching
- // sources.
- void OnBeginFrame(const BeginFrameArgs& args) override;
- const BeginFrameArgs LastUsedBeginFrameArgs() const override;
-
- // BeginFrameSource
- void DidFinishFrame(size_t remaining_frames) override;
-
- // BeginFrameSourceMixIn
- void OnNeedsBeginFramesChange(bool needs_begin_frames) override;
-
- // Tracing
- void AsValueInto(base::trace_event::TracedValue* dict) const override;
-
- protected:
- BeginFrameSourceMultiplexer();
- explicit BeginFrameSourceMultiplexer(base::TimeDelta minimum_interval);
-
- bool HasSource(BeginFrameSource* source);
- bool IsIncreasing(const BeginFrameArgs& args);
-
- base::TimeDelta minimum_interval_;
-
- BeginFrameSource* active_source_;
- std::set<BeginFrameSource*> source_list_;
-};
-
-} // namespace cc
-
-#endif // CC_SCHEDULER_BEGIN_FRAME_SOURCE_H_
« no previous file with comments | « cc/resources/transferable_resource.cc ('k') | cc/scheduler/begin_frame_source.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698