void AddChild(VisualElement view, IVisualElementRenderer oldRenderer = null, RendererPool pool = null, bool sameChildren = false) { var reference = Guid.NewGuid().ToString(); Performance.Start(reference); if (CompressedLayout.GetIsHeadless(view)) { var packager = new VisualElementPackager(_renderer, view); if (_childPackagers == null) { _childPackagers = new Dictionary <BindableObject, VisualElementPackager>(); } view.IsPlatformEnabled = true; packager.Load(); _childPackagers[view] = packager; } else { if (_childViews == null) { _childViews = new List <IVisualElementRenderer>(); } IVisualElementRenderer renderer = oldRenderer; if (pool != null) { renderer = pool.GetFreeRenderer(view); } if (renderer == null) { Performance.Start(reference, "New renderer"); renderer = Platform.CreateRenderer(view, _renderer.View.Context); Performance.Stop(reference, "New renderer"); } if (renderer == oldRenderer) { Platform.SetRenderer(renderer.Element, null); renderer.SetElement(view); } Performance.Start(reference, "Set renderer"); Platform.SetRenderer(view, renderer); Performance.Stop(reference, "Set renderer"); Performance.Start(reference, "Add view"); if (!sameChildren) { (_renderer.View as ViewGroup)?.AddView(renderer.View); _childViews.Add(renderer); } Performance.Stop(reference, "Add view"); Performance.Stop(reference); } }
void AddChild(VisualElement view, IVisualElementRenderer oldRenderer = null, RendererPool pool = null, bool sameChildren = false) { Performance.Start(); if (CompressedLayout.GetIsHeadless(view)) { var packager = new VisualElementPackager(_renderer, view); view.IsPlatformEnabled = true; packager.Load(); } else { if (_childViews == null) { _childViews = new List <IVisualElementRenderer>(); } IVisualElementRenderer renderer = oldRenderer; if (pool != null) { renderer = pool.GetFreeRenderer(view); } if (renderer == null) { Performance.Start("New renderer"); renderer = Platform.CreateRenderer(view); Performance.Stop("New renderer"); } if (renderer == oldRenderer) { Platform.SetRenderer(renderer.Element, null); renderer.SetElement(view); } Performance.Start("Set renderer"); Platform.SetRenderer(view, renderer); Performance.Stop("Set renderer"); Performance.Start("Add view"); if (!sameChildren) { (_renderer.View as ViewGroup)?.AddView(renderer.View); _childViews.Add(renderer); } Performance.Stop("Add view"); } Performance.Stop(); }
void AddChild(VisualElement view, IVisualElementRenderer oldRenderer = null, RendererPool pool = null, bool sameChildren = false) { Performance.Start(); if (_childViews == null) { _childViews = new List <IVisualElementRenderer>(); } IVisualElementRenderer renderer = oldRenderer; if (pool != null) { renderer = pool.GetFreeRenderer(view); } if (renderer == null) { Performance.Start("New renderer"); renderer = Platform.CreateRenderer(view); Performance.Stop("New renderer"); } if (renderer == oldRenderer) { Platform.SetRenderer(renderer.Element, null); renderer.SetElement(view); } Performance.Start("Set renderer"); Platform.SetRenderer(view, renderer); Performance.Stop("Set renderer"); Performance.Start("Add view"); if (!sameChildren) { _renderer.ViewGroup.AddView(renderer.ViewGroup); _childViews.Add(renderer); } Performance.Stop("Add view"); Performance.Stop(); }
void AddChild(VisualElement view, IVisualElementRenderer oldRenderer = null, RendererPool pool = null, bool sameChildren = false) { Performance.Start(); if (_childViews == null) _childViews = new List<IVisualElementRenderer>(); IVisualElementRenderer renderer = oldRenderer; if (pool != null) renderer = pool.GetFreeRenderer(view); if (renderer == null) { Performance.Start("New renderer"); renderer = Platform.CreateRenderer(view); Performance.Stop("New renderer"); } if (renderer == oldRenderer) { Platform.SetRenderer(renderer.Element, null); renderer.SetElement(view); } Performance.Start("Set renderer"); Platform.SetRenderer(view, renderer); Performance.Stop("Set renderer"); Performance.Start("Add view"); if (!sameChildren) { _renderer.ViewGroup.AddView(renderer.ViewGroup); _childViews.Add(renderer); } Performance.Stop("Add view"); Performance.Stop(); }