Android上的SDL2事件循环 - 无法将任何新事件推入队列

时间:2012-03-07 23:07:37

标签: android android-ndk sdl

我正在尝试在我的新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功能不起作用?有谁知道什么可能是错的?

1 个答案:

答案 0 :(得分:3)

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

显式启动它