void Destructor() { if (m_StaticIndex >= 0) { RenderChainStaticIndexAllocator.FreeIndex(m_StaticIndex); } m_StaticIndex = -1; UIRUtility.Destroy(m_DefaultMat); UIRUtility.Destroy(m_DefaultWorldSpaceMat); m_DefaultMat = m_DefaultWorldSpaceMat = null; Font.textureRebuilt -= OnFontReset; painter?.Dispose(); m_TextUpdatePainter?.Dispose(); atlasManager?.Dispose(); vectorImageManager?.Dispose(); shaderInfoAllocator.Dispose(); device?.Dispose(); painter = null; m_TextUpdatePainter = null; atlasManager = null; shaderInfoAllocator = new UIRVEShaderInfoAllocator(); device = null; m_ActiveRenderNodes = 0; m_RenderNodesData.Clear(); }
protected void Dispose(bool disposing) { if (disposed) { return; } if (disposing) { Font.textureRebuilt -= OnFontReset; painter?.Dispose(); m_TextUpdatePainter?.Dispose(); atlasManager?.Dispose(); device?.Dispose(); painter = null; m_TextUpdatePainter = null; atlasManager = null; device = null; } else { DisposeHelper.NotifyMissingDispose(this); } disposed = true; }
void Destructor() { Font.textureRebuilt -= OnFontReset; painter?.Dispose(); m_TextUpdatePainter?.Dispose(); atlasManager?.Dispose(); vectorImageManager?.Dispose(); shaderInfoAllocator.Dispose(); device?.Dispose(); painter = null; m_TextUpdatePainter = null; atlasManager = null; shaderInfoAllocator = new UIRVEShaderInfoAllocator(); device = null; }
private void ProcessTextRegen(bool timeSliced) { if ((timeSliced && m_DirtyTextRemaining == 0) || m_TextElementCount == 0) { return; } s_TextRegenSampler.Begin(); if (m_TextUpdatePainter == null) { m_TextUpdatePainter = new Implementation.UIRTextUpdatePainter(); } var dirty = m_FirstTextElement; m_DirtyTextStartIndex = timeSliced ? m_DirtyTextStartIndex % m_TextElementCount : 0; for (int i = 0; i < m_DirtyTextStartIndex; i++) { dirty = dirty.renderChainData.nextText; } if (dirty == null) { dirty = m_FirstTextElement; } int maxCount = timeSliced ? Math.Min(50, m_DirtyTextRemaining) : m_TextElementCount; for (int i = 0; i < maxCount; i++) { Implementation.RenderEvents.ProcessRegenText(this, dirty, m_TextUpdatePainter, device, ref m_Stats); dirty = dirty.renderChainData.nextText; m_DirtyTextStartIndex++; if (dirty == null) { dirty = m_FirstTextElement; m_DirtyTextStartIndex = 0; } } m_DirtyTextRemaining = Math.Max(0, m_DirtyTextRemaining - maxCount); if (m_DirtyTextRemaining > 0) { (panel as BaseVisualElementPanel)?.OnVersionChanged(m_FirstTextElement, VersionChangeType.Transform); // Force a window refresh } s_TextRegenSampler.End(); }