Axiom.RenderSystems.Xna.XnaRenderWindow.dispose C# (CSharp) Method

dispose() protected method

protected dispose ( bool disposeManagedResources ) : void
disposeManagedResources bool
return void
		protected override void dispose( bool disposeManagedResources )
		{
			if ( !IsDisposed )
			{
				if ( disposeManagedResources )
				{
					// Dispose managed resources.
					// dispose of our back buffer if need be
					if ( this._renderSurface != null )
					{
						if ( !this._renderSurface.IsDisposed )
							this._renderSurface.Dispose();

						this._renderSurface = null;
					}

					// dispose of our stencil buffer if need be
					//if ( this._stencilBuffer != null )
					//{
					//    if ( !this._stencilBuffer.IsDisposed )
					//        this._stencilBuffer.Dispose();

					//    this._stencilBuffer = null;
					//}

#if !(XBOX || XBOX360 || SILVERLIGHT)
					WindowEventMonitor.Instance.UnregisterWindow( this );
					DefaultForm winForm = (DefaultForm)SWF.Control.FromHandle( _windowHandle );

					if ( !winForm.IsDisposed )
						winForm.Dispose();
#endif

					this._windowHandle = IntPtr.Zero;

					// Dispose Other resources
#if !(XBOX || XBOX360)
                    if ( _windowHandle != IntPtr.Zero && !_isExternal && SWF.Control.FromHandle( _windowHandle ) != null )
#else
                    if (_windowHandle != IntPtr.Zero && !_isExternal )
#endif
					{
						WindowEventMonitor.Instance.UnregisterWindow( this );
#if !(XBOX || XBOX360)
						SWF.Control.FromHandle( _windowHandle ).Dispose();
#endif
					}

				}
				// make sure this window is no longer active
				_windowHandle = IntPtr.Zero;
				IsActive = false;
				_isClosed = true;

				// There are no unmanaged resources to release, but
				// if we add them, they need to be released here.
			}

			// If it is available, make the call to the
			// base class's Dispose(Boolean) method
			base.dispose( disposeManagedResources );
		}