public void Dispose() { Log.Info("TexturePacker:Dispose()"); if (_packedTextures != null) { foreach (PackedTexture bigOne in _packedTextures) { if (bigOne.textureNo >= 0) { Log.Info("TexturePacker: remove texture:{0}", bigOne.textureNo); DXNative.FontEngineRemoveTextureSync(bigOne.textureNo); if (Disposing != null) { Disposing(this, bigOne.textureNo); } } if (bigOne.texture != null) { if (!bigOne.texture.Disposed) { try { bigOne.texture.Disposing -= TextureDisposing; bigOne.texture.SafeDispose(); } catch (Exception ex) { Log.Error("TexturePacker: Dispose {0}", ex.Message); } } bigOne.texture = null; } } } }
private void TextureDisposing(object sender, EventArgs e) { if ((sender as Texture) == null) { return; } foreach (PackedTexture bigOne in _packedTextures) { if (bigOne.texture == (Texture)sender) { if (bigOne.textureNo >= 0) { Log.Info("TexturePacker: disposing texture:{0}", bigOne.textureNo); DXNative.FontEngineRemoveTextureSync(bigOne.textureNo); if (Disposing != null) { Disposing(this, bigOne.textureNo); } } bigOne.texture = null; bigOne.textureNo = -1; return; } } }