【发布时间】: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