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

Side by Side Diff: services/gfx/compositor/compositor_engine.cc

Issue 1774373002: Mozart: Implement hit testing. (Closed) Base URL: git@github.com:domokit/mojo.git@moz-4
Patch Set: Created 4 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "services/gfx/compositor/compositor_engine.h" 5 #include "services/gfx/compositor/compositor_engine.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <sstream> 8 #include <sstream>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 } 269 }
270 270
271 void CompositorEngine::HitTest( 271 void CompositorEngine::HitTest(
272 RendererState* renderer_state, 272 RendererState* renderer_state,
273 mojo::PointPtr point, 273 mojo::PointPtr point,
274 const mojo::gfx::composition::HitTester::HitTestCallback& callback) { 274 const mojo::gfx::composition::HitTester::HitTestCallback& callback) {
275 DCHECK(IsRendererStateRegisteredDebug(renderer_state)); 275 DCHECK(IsRendererStateRegisteredDebug(renderer_state));
276 DCHECK(point); 276 DCHECK(point);
277 DVLOG(1) << "HitTest: renderer=" << renderer_state << ", point=" << point; 277 DVLOG(1) << "HitTest: renderer=" << renderer_state << ", point=" << point;
278 278
279 // TODO(jeffbrown): hit tests on scenes
280 auto result = mojo::gfx::composition::HitTestResult::New(); 279 auto result = mojo::gfx::composition::HitTestResult::New();
280
281 if (renderer_state->visible_snapshot()) {
282 DCHECK(!renderer_state->visible_snapshot()->is_blocked());
283 renderer_state->visible_snapshot()->HitTest(*point, result.get());
284 }
285
281 callback.Run(result.Pass()); 286 callback.Run(result.Pass());
282 } 287 }
283 288
284 base::WeakPtr<SceneDef> CompositorEngine::ResolveSceneReference( 289 base::WeakPtr<SceneDef> CompositorEngine::ResolveSceneReference(
285 const mojo::gfx::composition::SceneToken& scene_token) { 290 const mojo::gfx::composition::SceneToken& scene_token) {
286 SceneState* scene_state = FindScene(scene_token.value); 291 SceneState* scene_state = FindScene(scene_token.value);
287 return scene_state ? scene_state->scene_def()->GetWeakPtr() 292 return scene_state ? scene_state->scene_def()->GetWeakPtr()
288 : base::WeakPtr<SceneDef>(); 293 : base::WeakPtr<SceneDef>();
289 } 294 }
290 295
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 464
460 SceneDef::Disposition disposition = 465 SceneDef::Disposition disposition =
461 PresentScene(scene_state, presentation_time); 466 PresentScene(scene_state, presentation_time);
462 if (disposition == SceneDef::Disposition::kFailed) 467 if (disposition == SceneDef::Disposition::kFailed)
463 DestroyScene(scene_state); 468 DestroyScene(scene_state);
464 else if (disposition == SceneDef::Disposition::kSucceeded) 469 else if (disposition == SceneDef::Disposition::kSucceeded)
465 InvalidateScene(scene_state); 470 InvalidateScene(scene_state);
466 } 471 }
467 472
468 } // namespace compositor 473 } // namespace compositor
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698