public void SetGraphicsDevice(GraphicsDevice device)
        {
            // no change
            if (device == m_GraphicsDevice)
            {
                return;
            }

            if (m_GraphicsDevice != null)
            {
                m_GraphicsDevice.DeviceResetting -= m_GraphicsDevice_DeviceResetting;
                m_GraphicsDevice.DeviceLost      -= m_GraphicsDevice_DeviceLost;
                m_GraphicsDevice.DeviceReset     -= m_GraphicsDevice_DeviceReset;
            }

            m_GraphicsDevice = device;

            if (m_GraphicsDevice != null)
            {
                m_GraphicsDevice.DeviceResetting += m_GraphicsDevice_DeviceResetting;
                m_GraphicsDevice.DeviceLost      += m_GraphicsDevice_DeviceLost;
                m_GraphicsDevice.DeviceReset     += m_GraphicsDevice_DeviceReset;
            }

            // stop broadcasting if there is no device
            if (m_GraphicsDevice == null && this.IsBroadcasting)
            {
                m_XnaBroadcastApi.Stop(false);
                SetBroadcastState(BroadcastState.ReadyToBroadcast);
            }

            m_GraphicsDevice_DeviceReset(null, null);
        }