mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-25 18:30:14 +00:00
Merge pull request #311 from stefanbursuc/fix-gc-allocations-in-tooltiphandler
Fix for GC Allocations inside TooltipHandler
This commit is contained in:
@@ -107,7 +107,11 @@ namespace XCharts.Runtime
|
|||||||
m_ShowTooltip = false;
|
m_ShowTooltip = false;
|
||||||
if (tooltip.trigger == Tooltip.Trigger.None) return;
|
if (tooltip.trigger == Tooltip.Trigger.None) return;
|
||||||
chart.isTriggerOnClick = tooltip.triggerOn == Tooltip.TriggerOn.Click;
|
chart.isTriggerOnClick = tooltip.triggerOn == Tooltip.TriggerOn.Click;
|
||||||
if (!chart.isPointerInChart || !tooltip.show || (chart.isTriggerOnClick && !chart.isPointerClick))
|
|
||||||
|
if ((tooltip.show && chart.isPointerInChart) &&
|
||||||
|
((tooltip.triggerOn == Tooltip.TriggerOn.Click && chart.isPointerClick) ||
|
||||||
|
(tooltip.triggerOn == Tooltip.TriggerOn.MouseMove))
|
||||||
|
)
|
||||||
{
|
{
|
||||||
for (int i = chart.series.Count - 1; i >= 0; i--)
|
for (int i = chart.series.Count - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
@@ -124,26 +128,16 @@ namespace XCharts.Runtime
|
|||||||
if (m_ContainerSeries.Count > 0)
|
if (m_ContainerSeries.Count > 0)
|
||||||
{
|
{
|
||||||
m_ShowTooltip = true;
|
m_ShowTooltip = true;
|
||||||
m_ContainerSeries = null;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
m_ContainerSeries = ListPool<Serie>.Get();
|
|
||||||
UpdatePointerContainerAndSeriesAndTooltip(tooltip, ref m_ContainerSeries);
|
if (!m_ShowTooltip && tooltip.IsActive())
|
||||||
if (m_ContainerSeries.Count > 0)
|
|
||||||
{
|
{
|
||||||
m_ShowTooltip = true;
|
tooltip.ClearValue();
|
||||||
}
|
tooltip.SetActive(false);
|
||||||
else
|
component.context.xAxisClickIndex = -1;
|
||||||
{
|
chart.pointerClickEventData = null;
|
||||||
m_ShowTooltip = false;
|
|
||||||
if (tooltip.IsActive())
|
|
||||||
{
|
|
||||||
tooltip.ClearValue();
|
|
||||||
tooltip.SetActive(false);
|
|
||||||
component.context.xAxisClickIndex = -1;
|
|
||||||
chart.pointerClickEventData = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -151,7 +145,16 @@ namespace XCharts.Runtime
|
|||||||
private List<Serie> m_ContainerSeries;
|
private List<Serie> m_ContainerSeries;
|
||||||
private void UpdateTooltip(Tooltip tooltip)
|
private void UpdateTooltip(Tooltip tooltip)
|
||||||
{
|
{
|
||||||
if (!m_ShowTooltip) return;
|
if (!m_ShowTooltip)
|
||||||
|
{
|
||||||
|
if (m_ContainerSeries != null)
|
||||||
|
{
|
||||||
|
ListPool<Serie>.Release(m_ContainerSeries);
|
||||||
|
m_ContainerSeries = null;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var anyTrigger = false;
|
var anyTrigger = false;
|
||||||
for (int i = chart.series.Count - 1; i >= 0; i--)
|
for (int i = chart.series.Count - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
@@ -173,6 +176,7 @@ namespace XCharts.Runtime
|
|||||||
else
|
else
|
||||||
anyTrigger = true;
|
anyTrigger = true;
|
||||||
ListPool<Serie>.Release(m_ContainerSeries);
|
ListPool<Serie>.Release(m_ContainerSeries);
|
||||||
|
m_ContainerSeries = null;
|
||||||
}
|
}
|
||||||
if (!m_ShowTooltip || !anyTrigger)
|
if (!m_ShowTooltip || !anyTrigger)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user