public void TestRefCountTextureDisposal() { Avatar avatar1 = null; Avatar avatar2 = null; TextureWithRefCount texture = null; AddStep("add disposable sprite", () => avatar1 = addSprite("https://a.ppy.sh/3")); AddStep("add disposable sprite", () => avatar2 = addSprite("https://a.ppy.sh/3")); AddUntilStep(() => (texture = (TextureWithRefCount)avatar1.Texture) != null && avatar2.Texture != null, "wait for texture load"); AddAssert("textures share gl texture", () => avatar1.Texture.TextureGL == avatar2.Texture.TextureGL); AddAssert("textures have different refcount textures", () => avatar1.Texture != avatar2.Texture); AddStep("remove delayed from children", Clear); AddUntilStep(() => texture.ReferenceCount == 0, "gl textures disposed"); }
public void TestRefCountTextureDisposal() { Avatar avatar1 = null; Avatar avatar2 = null; TextureWithRefCount texture = null; AddStep("add disposable sprite", () => avatar1 = addSprite("https://a.ppy.sh/3")); AddStep("add disposable sprite", () => avatar2 = addSprite("https://a.ppy.sh/3")); AddUntilStep("wait for texture load", () => (texture = (TextureWithRefCount)avatar1.Texture) != null && avatar2.Texture != null); AddAssert("textures share gl texture", () => avatar1.Texture.TextureGL == avatar2.Texture.TextureGL); AddAssert("textures have different refcount textures", () => avatar1.Texture != avatar2.Texture); AddStep("dispose children", () => { Clear(); avatar1.Dispose(); avatar2.Dispose(); }); assertAvailability(() => texture, false); }