fn wakeup_transition()

in src/platform_impl/ios/app_state.rs [249:309]


    fn wakeup_transition(&mut self) -> Option<EventWrapper> {
        // before `AppState::did_finish_launching` is called, pretend there is no running
        // event loop.
        if !self.has_launched() {
            return None;
        }

        let (event_handler, event) = match (self.control_flow, self.take_state()) {
            (
                ControlFlow::Poll,
                AppStateImpl::PollFinished {
                    waiting_event_handler,
                },
            ) => (
                waiting_event_handler,
                EventWrapper::StaticEvent(Event::NewEvents(StartCause::Poll)),
            ),
            (
                ControlFlow::Wait,
                AppStateImpl::Waiting {
                    waiting_event_handler,
                    start,
                },
            ) => (
                waiting_event_handler,
                EventWrapper::StaticEvent(Event::NewEvents(StartCause::WaitCancelled {
                    start,
                    requested_resume: None,
                })),
            ),
            (
                ControlFlow::WaitUntil(requested_resume),
                AppStateImpl::Waiting {
                    waiting_event_handler,
                    start,
                },
            ) => {
                let event = if Instant::now() >= requested_resume {
                    EventWrapper::StaticEvent(Event::NewEvents(StartCause::ResumeTimeReached {
                        start,
                        requested_resume,
                    }))
                } else {
                    EventWrapper::StaticEvent(Event::NewEvents(StartCause::WaitCancelled {
                        start,
                        requested_resume: Some(requested_resume),
                    }))
                };
                (waiting_event_handler, event)
            }
            (ControlFlow::Exit, _) => bug!("unexpected `ControlFlow` `Exit`"),
            s => bug!("`EventHandler` unexpectedly woke up {:?}", s),
        };

        self.set_state(AppStateImpl::ProcessingEvents {
            event_handler,
            queued_gpu_redraws: Default::default(),
            active_control_flow: self.control_flow,
        });
        Some(event)
    }