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

            base.Dispose( disposing );
        }
        /// <summary>
        /// Gets a reference to the singleton instance.
        /// </summary>
        public static GraphicsDeviceService AddRef( IntPtr windowHandle, int width, int height )
        {
            // Increment the "how many controls sharing the device" reference count.
            if ( Interlocked.Increment( ref referenceCount ) == 1 )
            {
                // If this is the first control to start using the
                // device, we must create the singleton instance.
                singletonInstance = new GraphicsDeviceService( windowHandle,
                                                              width, height );
            }

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

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

                // 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)
            {
                graphicsDeviceService = GraphicsDeviceService.AddRef(Handle,
                                                                     ClientSize.Width,
                                                                     ClientSize.Height);

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

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

            base.OnCreateControl( );
        }