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

Unified Diff: components/exo/surface.cc

Issue 2048453002: exo: Keep order of functions in .h and .cc files consistent. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/exo/surface.cc
diff --git a/components/exo/surface.cc b/components/exo/surface.cc
index 30b783aaf09b9359be9173268d0f6ca0935a566c..162f4af55b8a3062e84e061ab1100f8f95071bab 100644
--- a/components/exo/surface.cc
+++ b/components/exo/surface.cc
@@ -429,6 +429,216 @@ void Surface::Commit() {
CommitSurfaceHierarchy();
}
+void Surface::CommitSurfaceHierarchy() {
+ DCHECK(needs_commit_surface_hierarchy_);
+ needs_commit_surface_hierarchy_ = false;
+
+ // TODO(dcastagna): Make secure_output_only a layer property instead of a
+ // texture mailbox flag so this can be changed without have to provide
+ // new contents.
+ only_visible_on_secure_output_ = pending_only_visible_on_secure_output_;
+ pending_only_visible_on_secure_output_ = false;
+
+ // Update current alpha.
+ alpha_ = pending_alpha_;
+
+ // Update current crop rectangle.
+ crop_ = pending_crop_;
+
+ if (factory_owner_) {
+ CommitSurfaceContents();
+ } else {
+ CommitTextureContents();
+ }
+
+ // Update current input region.
+ input_region_ = pending_input_region_;
+
+ // Synchronize window hierarchy. This will position and update the stacking
+ // order of all sub-surfaces after committing all pending state of sub-surface
+ // descendants.
+ aura::Window* stacking_target = nullptr;
+ for (auto& sub_surface_entry : pending_sub_surfaces_) {
+ Surface* sub_surface = sub_surface_entry.first;
+
+ // Synchronsouly commit all pending state of the sub-surface and its
+ // decendents.
+ if (sub_surface->needs_commit_surface_hierarchy())
+ sub_surface->CommitSurfaceHierarchy();
+
+ // Enable/disable sub-surface based on if it has contents.
+ if (sub_surface->has_contents())
+ sub_surface->Show();
+ else
+ sub_surface->Hide();
+
+ // Move sub-surface to its new position in the stack.
+ if (stacking_target)
+ StackChildAbove(sub_surface, stacking_target);
+
+ // Stack next sub-surface above this sub-surface.
+ stacking_target = sub_surface;
+
+ // Update sub-surface position relative to surface origin.
+ sub_surface->SetBounds(
+ gfx::Rect(sub_surface_entry.second, sub_surface->layer()->size()));
+ }
+}
+
+bool Surface::IsSynchronized() const {
+ return delegate_ ? delegate_->IsSurfaceSynchronized() : false;
+}
+
+gfx::Rect Surface::GetHitTestBounds() const {
+ SkIRect bounds = input_region_.getBounds();
+ if (!bounds.intersect(gfx::RectToSkIRect(gfx::Rect(layer()->size()))))
+ return gfx::Rect();
+ return gfx::SkIRectToRect(bounds);
+}
+
+bool Surface::HitTestRect(const gfx::Rect& rect) const {
+ if (HasHitTestMask())
+ return input_region_.intersects(gfx::RectToSkIRect(rect));
+
+ return rect.Intersects(gfx::Rect(layer()->size()));
+}
+
+bool Surface::HasHitTestMask() const {
+ return !input_region_.contains(
+ gfx::RectToSkIRect(gfx::Rect(layer()->size())));
+}
+
+void Surface::GetHitTestMask(gfx::Path* mask) const {
+ input_region_.getBoundaryPath(mask);
+}
+
+void Surface::RegisterCursorProvider(Pointer* provider) {
+ cursor_providers_.insert(provider);
+}
+
+void Surface::UnregisterCursorProvider(Pointer* provider) {
+ cursor_providers_.erase(provider);
+}
+
+bool Surface::HasCursorProvider() const {
+ return !cursor_providers_.empty();
+}
+
+void Surface::SetSurfaceDelegate(SurfaceDelegate* delegate) {
+ DCHECK(!delegate_ || !delegate);
+ delegate_ = delegate;
+}
+
+bool Surface::HasSurfaceDelegate() const {
+ return !!delegate_;
+}
+
+void Surface::AddSurfaceObserver(SurfaceObserver* observer) {
+ observers_.AddObserver(observer);
+}
+
+void Surface::RemoveSurfaceObserver(SurfaceObserver* observer) {
+ observers_.RemoveObserver(observer);
+}
+
+bool Surface::HasSurfaceObserver(const SurfaceObserver* observer) const {
+ return observers_.HasObserver(observer);
+}
+
+std::unique_ptr<base::trace_event::TracedValue> Surface::AsTracedValue() const {
+ std::unique_ptr<base::trace_event::TracedValue> value(
+ new base::trace_event::TracedValue());
+ value->SetString("name", layer()->name());
+ return value;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// aura::WindowObserver overrides:
+
+void Surface::OnWindowAddedToRootWindow(aura::Window* window) {
+ DCHECK(!compositor_);
+ DCHECK(!factory_owner_);
+ compositor_ = layer()->GetCompositor();
+ compositor_->AddObserver(this);
+}
+
+void Surface::OnWindowRemovingFromRootWindow(aura::Window* window,
+ aura::Window* new_root) {
+ DCHECK(compositor_);
+ compositor_->RemoveObserver(this);
+ compositor_ = nullptr;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// ui::LayerOwnerDelegate overrides:
+
+void Surface::OnLayerRecreated(ui::Layer* old_layer, ui::Layer* new_layer) {
+ if (!current_buffer_)
+ return;
+
+ // TODO(reveman): Give the client a chance to provide new contents.
+ if (factory_owner_) {
+ SetSurfaceLayerContents(new_layer);
+ } else {
+ SetTextureLayerContents(new_layer);
+ }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// ui::CompositorObserver overrides:
+
+void Surface::OnCompositingDidCommit(ui::Compositor* compositor) {
+ DCHECK(!factory_owner_);
+ // Move frame callbacks to the end of |active_frame_callbacks_|.
+ active_frame_callbacks_.splice(active_frame_callbacks_.end(),
+ frame_callbacks_);
+}
+
+void Surface::OnCompositingStarted(ui::Compositor* compositor,
+ base::TimeTicks start_time) {
+ last_compositing_start_time_ = start_time;
+}
+
+void Surface::OnCompositingEnded(ui::Compositor* compositor) {
+ // Run all frame callbacks associated with the compositor's active tree.
+ while (!active_frame_callbacks_.empty()) {
+ active_frame_callbacks_.front().Run(last_compositing_start_time_);
+ active_frame_callbacks_.pop_front();
+ }
+
+ // Nothing more to do in here unless this has been set.
+ if (!update_contents_after_successful_compositing_)
+ return;
+
+ update_contents_after_successful_compositing_ = false;
+
+ // Early out if no contents is currently assigned to the surface.
+ if (!current_buffer_)
+ return;
+
+ // Update contents by producing a new texture mailbox for the current buffer.
+ SetTextureLayerContents(layer());
+}
+
+void Surface::OnCompositingAborted(ui::Compositor* compositor) {
+ // The contents of this surface might be lost if compositing aborted because
+ // of a lost graphics context. We recover from this by updating the contents
+ // of the surface next time the compositor successfully ends compositing.
+ update_contents_after_successful_compositing_ = true;
+}
+
+void Surface::OnCompositingShuttingDown(ui::Compositor* compositor) {
+ compositor->RemoveObserver(this);
+ compositor_ = nullptr;
+}
+
+void Surface::WillDraw(cc::SurfaceId id) {
+ while (!active_frame_callbacks_.empty()) {
+ active_frame_callbacks_.front().Run(base::TimeTicks::Now());
+ active_frame_callbacks_.pop_front();
+ }
+}
+
void Surface::CommitTextureContents() {
// We update contents if Attach() has been called since last commit.
if (has_pending_contents_) {
@@ -647,216 +857,6 @@ void Surface::CommitSurfaceContents() {
pending_frame_callbacks_);
}
-void Surface::CommitSurfaceHierarchy() {
- DCHECK(needs_commit_surface_hierarchy_);
- needs_commit_surface_hierarchy_ = false;
-
- // TODO(dcastagna): Make secure_output_only a layer property instead of a
- // texture mailbox flag so this can be changed without have to provide
- // new contents.
- only_visible_on_secure_output_ = pending_only_visible_on_secure_output_;
- pending_only_visible_on_secure_output_ = false;
-
- // Update current alpha.
- alpha_ = pending_alpha_;
-
- // Update current crop rectangle.
- crop_ = pending_crop_;
-
- if (factory_owner_) {
- CommitSurfaceContents();
- } else {
- CommitTextureContents();
- }
-
- // Update current input region.
- input_region_ = pending_input_region_;
-
- // Synchronize window hierarchy. This will position and update the stacking
- // order of all sub-surfaces after committing all pending state of sub-surface
- // descendants.
- aura::Window* stacking_target = nullptr;
- for (auto& sub_surface_entry : pending_sub_surfaces_) {
- Surface* sub_surface = sub_surface_entry.first;
-
- // Synchronsouly commit all pending state of the sub-surface and its
- // decendents.
- if (sub_surface->needs_commit_surface_hierarchy())
- sub_surface->CommitSurfaceHierarchy();
-
- // Enable/disable sub-surface based on if it has contents.
- if (sub_surface->has_contents())
- sub_surface->Show();
- else
- sub_surface->Hide();
-
- // Move sub-surface to its new position in the stack.
- if (stacking_target)
- StackChildAbove(sub_surface, stacking_target);
-
- // Stack next sub-surface above this sub-surface.
- stacking_target = sub_surface;
-
- // Update sub-surface position relative to surface origin.
- sub_surface->SetBounds(
- gfx::Rect(sub_surface_entry.second, sub_surface->layer()->size()));
- }
-}
-
-bool Surface::IsSynchronized() const {
- return delegate_ ? delegate_->IsSurfaceSynchronized() : false;
-}
-
-gfx::Rect Surface::GetHitTestBounds() const {
- SkIRect bounds = input_region_.getBounds();
- if (!bounds.intersect(gfx::RectToSkIRect(gfx::Rect(layer()->size()))))
- return gfx::Rect();
- return gfx::SkIRectToRect(bounds);
-}
-
-bool Surface::HitTestRect(const gfx::Rect& rect) const {
- if (HasHitTestMask())
- return input_region_.intersects(gfx::RectToSkIRect(rect));
-
- return rect.Intersects(gfx::Rect(layer()->size()));
-}
-
-bool Surface::HasHitTestMask() const {
- return !input_region_.contains(
- gfx::RectToSkIRect(gfx::Rect(layer()->size())));
-}
-
-void Surface::GetHitTestMask(gfx::Path* mask) const {
- input_region_.getBoundaryPath(mask);
-}
-
-void Surface::RegisterCursorProvider(Pointer* provider) {
- cursor_providers_.insert(provider);
-}
-
-void Surface::UnregisterCursorProvider(Pointer* provider) {
- cursor_providers_.erase(provider);
-}
-
-bool Surface::HasCursorProvider() const {
- return !cursor_providers_.empty();
-}
-
-void Surface::SetSurfaceDelegate(SurfaceDelegate* delegate) {
- DCHECK(!delegate_ || !delegate);
- delegate_ = delegate;
-}
-
-bool Surface::HasSurfaceDelegate() const {
- return !!delegate_;
-}
-
-void Surface::AddSurfaceObserver(SurfaceObserver* observer) {
- observers_.AddObserver(observer);
-}
-
-void Surface::RemoveSurfaceObserver(SurfaceObserver* observer) {
- observers_.RemoveObserver(observer);
-}
-
-bool Surface::HasSurfaceObserver(const SurfaceObserver* observer) const {
- return observers_.HasObserver(observer);
-}
-
-std::unique_ptr<base::trace_event::TracedValue> Surface::AsTracedValue() const {
- std::unique_ptr<base::trace_event::TracedValue> value(
- new base::trace_event::TracedValue());
- value->SetString("name", layer()->name());
- return value;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// aura::WindowObserver overrides:
-
-void Surface::OnWindowAddedToRootWindow(aura::Window* window) {
- DCHECK(!compositor_);
- DCHECK(!factory_owner_);
- compositor_ = layer()->GetCompositor();
- compositor_->AddObserver(this);
-}
-
-void Surface::OnWindowRemovingFromRootWindow(aura::Window* window,
- aura::Window* new_root) {
- DCHECK(compositor_);
- compositor_->RemoveObserver(this);
- compositor_ = nullptr;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// ui::LayerOwnerDelegate overrides:
-
-void Surface::OnLayerRecreated(ui::Layer* old_layer, ui::Layer* new_layer) {
- if (!current_buffer_)
- return;
-
- // TODO(reveman): Give the client a chance to provide new contents.
- if (factory_owner_) {
- SetSurfaceLayerContents(new_layer);
- } else {
- SetTextureLayerContents(new_layer);
- }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// ui::CompositorObserver overrides:
-
-void Surface::OnCompositingDidCommit(ui::Compositor* compositor) {
- DCHECK(!factory_owner_);
- // Move frame callbacks to the end of |active_frame_callbacks_|.
- active_frame_callbacks_.splice(active_frame_callbacks_.end(),
- frame_callbacks_);
-}
-
-void Surface::OnCompositingStarted(ui::Compositor* compositor,
- base::TimeTicks start_time) {
- last_compositing_start_time_ = start_time;
-}
-
-void Surface::OnCompositingEnded(ui::Compositor* compositor) {
- // Run all frame callbacks associated with the compositor's active tree.
- while (!active_frame_callbacks_.empty()) {
- active_frame_callbacks_.front().Run(last_compositing_start_time_);
- active_frame_callbacks_.pop_front();
- }
-
- // Nothing more to do in here unless this has been set.
- if (!update_contents_after_successful_compositing_)
- return;
-
- update_contents_after_successful_compositing_ = false;
-
- // Early out if no contents is currently assigned to the surface.
- if (!current_buffer_)
- return;
-
- // Update contents by producing a new texture mailbox for the current buffer.
- SetTextureLayerContents(layer());
-}
-
-void Surface::OnCompositingAborted(ui::Compositor* compositor) {
- // The contents of this surface might be lost if compositing aborted because
- // of a lost graphics context. We recover from this by updating the contents
- // of the surface next time the compositor successfully ends compositing.
- update_contents_after_successful_compositing_ = true;
-}
-
-void Surface::OnCompositingShuttingDown(ui::Compositor* compositor) {
- compositor->RemoveObserver(this);
- compositor_ = nullptr;
-}
-
-void Surface::WillDraw(cc::SurfaceId id) {
- while (!active_frame_callbacks_.empty()) {
- active_frame_callbacks_.front().Run(base::TimeTicks::Now());
- active_frame_callbacks_.pop_front();
- }
-}
-
void Surface::SetTextureLayerContents(ui::Layer* layer) {
DCHECK(current_buffer_);
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698