From c1b0a9eb936cbefa6717164a5f18c4005d1447c0 Mon Sep 17 00:00:00 2001 From: Cameron Zwarich Date: Mon, 7 Jul 2014 16:16:42 -0700 Subject: [PATCH] Add a new find_layer_with_pipeline_and_layer_id method This method will be used to eliminate a lot of the ad-hoc recursive searches that are present in the compositor layer code. --- src/components/compositing/compositor_data.rs | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/components/compositing/compositor_data.rs b/src/components/compositing/compositor_data.rs index e0965aab059..61b9298dc90 100644 --- a/src/components/compositing/compositor_data.rs +++ b/src/components/compositing/compositor_data.rs @@ -574,6 +574,27 @@ impl CompositorData { return None } + pub fn find_layer_with_pipeline_and_layer_id(layer: Rc>, + pipeline_id: PipelineId, + layer_id: LayerId) + -> Option>> { + if layer.extra_data.borrow().pipeline.id == pipeline_id && + layer.extra_data.borrow().id == layer_id { + return Some(layer.clone()); + } + + for kid in layer.children().iter() { + match CompositorData::find_layer_with_pipeline_and_layer_id(kid.clone(), + pipeline_id, + layer_id) { + v @ Some(_) => { return v; } + None => { } + } + } + + return None; + } + // A helper method to resize sublayers. fn resize_helper(layer: Rc>, pipeline_id: PipelineId,