zxc3489
zxc3489
dialog之前也遇到过,给你个建议,不要用系统的diakog,它本身应该是独立于主ui的管理的(或者是阻塞的?忘了),可能会导致焦点异常等情况,我们都是自己写了个dialog界面方便管理,也可以在需要的界面上自己写一组组合控件,不需要dialog的时候就隐藏起来,需要的时候就显示
就是写一个普通界面,显示效果和系统的dialog一致,背景色设置为透明。
越界的情况比较复杂,不好编写demo,给你一段test代码,你应该能明白我代码中恢复上下文的目的了。 `#include "tkc/emitter.h" #define EVT_TEST_1 0x2000 #define EVT_TEST_2 0x2001 emitter_t test_emitter; uint32_t event1 = 0; uint32_t event2 = 0; static ret_t __global_user_emitter_event_handler1(void *ctx, event_t *event) { printf("%p,%d\n",test_emitter.curr_iter,test_emitter.remove_curr_iter); emitter_off(&test_emitter,event1); printf("%p,%d\n",test_emitter.curr_iter,test_emitter.remove_curr_iter); emitter_dispatch_simple_event(&test_emitter,...
调换下顺序就有越界了 `#include "tkc/emitter.h" #define EVT_TEST_1 0x2000 #define EVT_TEST_2 0x2001 emitter_t test_emitter; uint32_t event1 = 0; uint32_t event2 = 0; static ret_t __global_user_emitter_event_handler1(void *ctx, event_t *event) { printf("%p,%d\n",test_emitter.curr_iter,test_emitter.remove_curr_iter); emitter_dispatch_simple_event(&test_emitter, EVT_TEST_2); printf("%p,%d\n",test_emitter.curr_iter,test_emitter.remove_curr_iter);...
是的,下面的代码会越界
你用valgrind跑一下就知道了。本来emitter_off的时候不应该删除的,而是应该在本次emitter_dispatch的单次循环结束后删除的。emitter_off删除之后,emitter_dispatch里的iter就是野指针了,iter->next就是一个未知值了
主屏和副屏的方式,两个屏幕相互独立,内容各不相同
对了,我这边做了个关于awtk的补丁,应该对完善awtk的功能有帮助,该如何提供给你们呢
linux-fb版本可以编译出动态库吗,按照https://github.com/zlgopen/awtk/blob/master/docs/shared_static.md 提供的方式修改,awtk和awtk-linux-fb都还是生成的.a库呢
还有我们做的是主副屏,两个屏幕互相独立,可以用同一个ui进程吗