/// <summary>
		/// Disposes the control.
		/// </summary>
		protected override void Dispose( bool disposing ) {
			if( mGraphicsDeviceService != null ) {
				mGraphicsDeviceService.Release( disposing );
				mGraphicsDeviceService = null;
			}

			base.Dispose( disposing );
		}
		/// <summary>
		/// Initializes the control.
		/// </summary>
		protected override void OnCreateControl() {
			// Don't initialize the graphics device if we are running in the designer.
			if( !DesignMode ) {
				mGraphicsDeviceService = GraphicsDeviceService.AddRef( Handle, ClientSize.Width, ClientSize.Height );

				// Register the service, so components like ContentManager can find it.
				mServices.AddService<IGraphicsDeviceService>( mGraphicsDeviceService );

				// Give derived classes a chance to initialize themselves.
				Initialize();
			}

			base.OnCreateControl();
		}
        /// <summary>
        /// Initializes the control.
        /// </summary>
        protected override void OnCreateControl()
        {
            // Don't initialize the graphics device if we are running in the designer.
            if (!DesignMode)
            {
                mGraphicsDeviceService = GraphicsDeviceService.AddRef(Handle, ClientSize.Width, ClientSize.Height);

                // Register the service, so components like ContentManager can find it.
                mServices.AddService <IGraphicsDeviceService>(mGraphicsDeviceService);

                // Give derived classes a chance to initialize themselves.
                Initialize();
            }

            base.OnCreateControl();
        }
		/// <summary>
		/// Gets a reference to the singleton instance.
		/// </summary>
		public static GraphicsDeviceService AddRef( IntPtr windowHandle, int width, int height ) {
			if( Interlocked.Increment( ref referenceCount ) == 1 )
				singletonInstance = new GraphicsDeviceService( windowHandle, width, height );

			return singletonInstance;
		}