SDL系列讲解(十一) SDL_QUIT流程

明天会将自己的很早的一部小说发出,一次发出写的所有的六章,如果时间,或者某天突然觉得可以续写了,那么就是它又一次起航了。

工作期间,码了一个记录工作的小说,有兴趣的可以阅读。当然,文采上面,确实逊色了许多,不过能看完,你能发现一些惊喜,因为很多人物是真实存在的。
移步:

http://blog.csdn.net/a332324956/article/category/1886055

近期写的小说,不出意外,会先更新出来,前面的章节,可以温习了。具体点击:

校园江湖(一)厕所被揍
校园江湖(二)表哥出狱

代码GG,不一样的编程人生。

太多散文发在别处,这里摘录下公众号的几篇,可以阅读了。

梦想太远,现实太近(一)
梦想太远,现实太近(二)
梦想太远,现实太近(终结篇)

下来,继续我们 的SDL系列讲解

SDL系列讲解(一)  简介
SDL系列讲解(二) 环境搭建
SDL系列讲解(三) 工具安装
SDL是什么,能干什么,为什么我们要学习它?
SDL系列讲解(四) demo讲解
SDL系列讲解(五) 调试c代码
SDL系列讲解(六) SDL_Activity流程
SDL系列讲解(七) SDL_image教程SDL系列讲解(八) SDL_ttf教程
SDL系列讲解(九) 异常退出分析

SDL系列讲解(十) 按键处理流程

项目合作

SDL_QUIT时序图
   

看下创建窗口的流程图,我们简单说下过程。
原理剖析
   
应用上层调用 this.finish();关闭Activity的时候,走入onDestroy方法,此方法会去调用        SDLActivity.nativeQuit();进入到C代码里面Java_org_libsdl_app_SDLActivity_nativeQuit,这里向系统发出一个退出消息SDL_SendQuit();,以及一个 SDL_SendAppEvent(SDL_APP_TERMINATING)
;消息,让我们去接收,处理退出事件。发送消息,最后走入的是SDL_PushEvent方法,这个是SDL向消息队列扔入一个事件的方法。我们处理的思路是:

使用SDL_PollEvent获取到事件,通过类型过滤出来,如果是SDL_QUIT, 则退出主循环。这里我们看到onDestroy方法,在处理SDLActivity.nativeQuit();后,进行了一个动作:

这个便是等待我们的SDLMain线程退出,起到同步等待的作用。

看完这条线路,我们再看下,如果我们在c代码main运行完毕,应用的退出流程:

SDL_QUIT主动退出时序图

SDL_QUIT主动退出代码剖析

SDLSurface在创建的时候,就会走到surfaceChanged,然后这里创建了我们的SDLMain线程,进行调用我们写的c代码,同时这里使用 sdlThread.join();等待结束,当结束的时候,调用   SDLActivity.handleNativeExit();来完成退出,然后便走到上面的那个流程了,退出SDL。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员入门进阶(免费辅导开题报告)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值