OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |