/// <summary>
        /// Requests new state from current LeiaStateFactory, switches backlight,
        /// updates texture. UpdateLeiaState triggers StateChanged() actions.
        /// </summary>
        private void RequestLeiaStateUpdate()
        {
            if (!Application.isPlaying)
            {
                return;
            }
            if (_leiaState != null)
            {
                _leiaState.Release();
            }

            // set interlacing state based on LeiaStateId
            _leiaState = _stateFactory.GetState(LeiaStateId);

            // Set backlight state based on LeiaStateId
            if (_leiaDevice != null && _leiaDevice.GetBacklightMode() == 3 && !LeiaStateId.Equals(HPO))
            {
                _leiaDevice.SetBacklightMode(_leiaState.GetBacklightMode());
            }
            if (_leiaDevice != null && _leiaDevice.GetBacklightMode() != 3 && LeiaStateId.Equals(HPO))
            {
                _leiaDevice.SetBacklightMode(_leiaState.GetBacklightMode());
            }

            if (_leiaDevice.GetBacklightMode() == 3)
            {
                latest3DFrame = Time.frameCount;
            }

            // private member RequestLeiaStateUpdate() calls public member UpdateLeiaState
            // UpdateLeiaState is called by LeiaConfigSettingsUI
            UpdateLeiaState();
        }
        private void OnResume()
        {
            if (_leiaDevice != null && _leiaDevice.GetBacklightMode() == 3)
            {
                // on resume, if the LeiaLights DisplaySDK state machine thinks this app was in 3D mode on last frame
                // then _getBacklightMode should be 3. Store in the latest3DFrame flag.
                // In BacklightModeChanged we will discard BacklightModeChanged(2D) callbacks which occur recently after
                // OnResume {GetBacklightMode == 3}
                latest3DFrame = Time.frameCount;
            }

            // on return to app, if desired state is HPO and forced state is not HPO,
            // we are allowed to return to HPO
            if (DesiredLeiaStateID.Equals(HPO) && !LeiaStateId.Equals(HPO))
            {
                DesiredLeiaStateID = HPO;
            }
            else
            {
                _isDirty = true;
            }
        }