protected override void TearDownMember(int index, object member, object tag) { // FIXME: Invalidate the affected portion, but don't render immediately in case more than one sheet is affected. SheetRenderer renderer = ((SheetRenderer)tag); if (tag != null) { this.m_Parent.m_SheetRenderers.Remove(renderer); renderer.Dispose(); } }
protected override object SetUpMember(int index, object member) { //If a set of slide transitions occur rapidly, we can see a case where the enqueued SetUpMember call is //invoked *after* dispose, causing bogus sheets to appear. Explicitly short-circuiting this call //after a dispose seems to be the fix: if (m_Disposed) { return(null); } // FIXME: Invalidate the affected region, but don't render immediately in case more than one sheet is affected. SheetRenderer renderer = SheetRenderer.ForSheet(this.m_Parent.m_SlideDisplay, (SheetModel)member); ///Invalidate the renderer...might not be a great idea for the reason above. renderer.SlideDisplay.Invalidate(); // Ignore sheets for which a renderer isn't available. if (renderer == null) { return(null); } // Add the renderer to the list. using (Synchronizer.Lock(this.m_Parent)) { // Prevent m_SheetRenderers list from changing. if (index >= 0 && index < this.m_Parent.m_SheetRenderers.Count) { this.m_Parent.m_SheetRenderers.Insert(index, renderer); } else { this.m_Parent.m_SheetRenderers.Add(renderer); } } return(renderer); }
public void Remove(SheetRenderer value) { List.Remove(value); }
public void Insert(int index, SheetRenderer value) { List.Insert(index, value); }
public int IndexOf(SheetRenderer value) { return List.IndexOf(value); }
public bool Contains(SheetRenderer value) { return List.Contains(value); }
public int Add(SheetRenderer value) { return List.Add(value); }
public bool Contains(SheetRenderer value) { return(List.Contains(value)); }
public int IndexOf(SheetRenderer value) { return(List.IndexOf(value)); }
public int Add(SheetRenderer value) { return(List.Add(value)); }