/// <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);

				_renderTarget = new SwapChainRenderTarget(GraphicsDevice, 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();

				//Set the XNA mouse handing to use this window
				//Mouse.WindowHandle = Handle;

				return;
			}

			base.OnCreateControl();
		}
        /// <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>
		/// Disposes the control.
		/// </summary>
		protected override void Dispose(bool disposing)
		{
			if(_graphicsDeviceService != null)
			{
				_graphicsDeviceService.Release(disposing);
				_graphicsDeviceService = null;
			}

			if(_renderTarget != null)
			{
				_renderTarget.Dispose();
				_renderTarget = null;
			}


			base.Dispose(disposing);
		}