Skip to content

ohos: use SDL app lifecycle callbacks - #2

Closed
bytemain wants to merge 1 commit into
OpenMinecraft-Dev:mainfrom
bytemain:fix/ohos-lifecycle-events
Closed

bytemain wants to merge 1 commit into
OpenMinecraft-Dev:mainfrom
bytemain:fix/ohos-lifecycle-events

Conversation

@bytemain

@bytemain bytemain commented May 18, 2026 •

Copy link
Copy Markdown
  • 背景

    • OHOS 侧当前在 sdlOnBackground / sdlOnForeground 中只直接发送了 SDL_EVENT_* app event。
    • 这种做法不会走 SDL 标准的应用生命周期入口,因此缺少完整的窗口/焦点状态更新。
  • 问题

    • 切后台时没有通过 SDL 统一生命周期流程处理。
    • 上层依赖窗口焦点或恢复状态的逻辑,可能收不到完整事件链。
    • 对 LÖVE 这类依赖 focus / visible 行为的上层来说,容易表现为后台切换后状态不一致。
  • 修改

    • 在 OHOS bridge 中引入 SDL_system.h
    • 将:
      • sdlOnBackground
      • sdlOnForeground
    • 从直接 SDL_SendAppEvent(...)
    • 改为调用 SDL 标准生命周期 API:
      • SDL_OnApplicationWillEnterBackground()
      • SDL_OnApplicationDidEnterBackground()
      • SDL_OnApplicationWillEnterForeground()
      • SDL_OnApplicationDidEnterForeground()
  • 效果

    • 后台切换现在走 SDL 标准生命周期路径。
    • SDL 可以正确处理最小化、焦点清理、前台恢复等附带行为。
    • 上层更容易收到完整且一致的前后台相关事件。
  • 影响范围

    • 仅修改 OHOS 平台实现。
    • 不改变现有 ArkTS 调用接口名,兼容当前 EntryAbility 侧代码。

@bytemain bytemain closed this May 18, 2026
@bytemain

Copy link
Copy Markdown
Author

在 love2d 这个框架下,必须要触发 keyboard focus 事件才行。
但是我发现现在 main 分支的 SDL love2d 接入后无法渲染,这个 pr 就先关了吧,我没法测了

TRAE 2026-05-20 01 54 32

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant