private SRDSessionHandler()
        {
            var isLinked = SRDCorePlugin.LinkXrLibraryWin64();

            if (!isLinked && _isLibraryLinked)
            {
                SRDHelper.PopupMessageAndForceToTerminate(SRDHelper.SRDMessages.DLLNotFoundError);
                _isLibraryLinked = false;
                return;
            }
            _isLibraryLinked = isLinked;

            _prevState = SrdXrSessionState.SESSION_STATE_MAX_ENUM;

            _srdSubsystems = new List <ISRDSubsystem>();
        }
        public void PollEvent()
        {
            SrdXrEventDataBuffer data;

            while (SRDCorePlugin.PollEvent(_sessionHandle, out data) == SrdXrResult.SUCCESS)
            {
                if ((_prevState == SrdXrSessionState.SESSION_STATE_MAX_ENUM) || (data.state != _prevState))
                {
                    if (OnSessionStateChangedEvent != null)
                    {
                        OnSessionStateChangedEvent.Invoke(_prevState, data.state);
                    }
                    _prevState = data.state;
                }

                if (data.state == SrdXrSessionState.SESSION_STATE_LOSS_PENDING)
                {
                    SrdXrDeviceState device_state;
                    var result = SRDCorePlugin.GetDeviceState(_sessionHandle, out device_state);
                    var msg    = "";
                    if (result != SrdXrResult.SUCCESS)
                    {
                        msg = string.Format("Fail to get DeviceInfo: {0}", result);
                    }
                    else
                    {
                        if (device_state.connection_state == SrdXrDeviceConnectionState.DEVICE_NOT_CONNECTED)
                        {
                            msg += SRDHelper.SRDMessages.DeviceInterruptionError + " ";
                        }
                        if (device_state.power_state == SrdXrDevicePowerState.DEVICE_POWER_OFF)
                        {
                            msg += SRDHelper.SRDMessages.DeviceNotFoundError;
                        }
                    }
                    SRDHelper.PopupMessageAndForceToTerminate(msg);
                }
            }
        }