【问题标题】:SDL2 Event Loop on Android - cannot push any new events into the queueAndroid 上的 SDL2 事件循环 - 无法将任何新事件推送到队列中
【发布时间】:2012-05-07 03:35:15
【问题描述】:

我正在尝试在我的新 Android 应用程序中使用 SDL2,它应该可以正常工作:

http://wilbefast.com/2011/11/11/recent-sdl-android-goodies/

它编译没有任何问题,并且有一个示例项目,因此很容易开始使用它。我编译了库并从我的应用程序开始,创建了一个事件循环 - 就像在 SDL 1.2 中一样,并尝试通过函数将一些事件推送到其中:

int SDL_PushEvent(SDL_Event * event);

但是,它总是以错误值 -1 失败。我刚刚为这个源文件定义了 SDL_main 函数:

http://hg.libsdl.org/SDL/file/6bb657898f55/src/main/android/SDL_android_main.cpp

我的 SDL_main 函数包含简单的事件循环:

SDL_Event event;

for (;;)
{
    SDL_WaitEvent(&event);
    switch (event.type)
    {
case SDL_QUIT:
    return;
    case SOME_EVENT:
        break;
    default:
        break;
    }
}

就是这样,没有线程,没有互斥体,没有等待,只是一个简单的主函数。我注意到我的事件循环处理了一些事件,它们的 event.type 等于 2151293988,看起来它们的源是 SDLSurface 实例,它是在 Java 代码中创建的:http://hg.libsdl.org/SDL/file/6bb657898f55/android-project/src/org/libsdl/app/SDLActivity.java

为什么SDL_PushEvent 函数不起作用?有人知道可能出了什么问题吗?

【问题讨论】:

  • 看来我找到了原因。队列还没有开始!我虽然在初始化时队列会自动运行 SDL2...我已将 SDL_StartEventLoop(); 调用添加到 main 函数中,它现在可以工作了 - 我的生命中几乎五个小时的时间已经过去了,只是有这么一点遗漏......

标签: android android-ndk sdl


【解决方案1】:

SDL 队列在初始化后不会自动启动,必须​​通过调用 SDL_StartEventLoop(); 显式启动

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-16
    • 2021-04-03
    • 1970-01-01
    相关资源
    最近更新 更多