KJAVA虚拟机移植笔记-MIDP的SLAVE事件流程
来源:互联网 发布:sql true false 类型 编辑:程序博客网 时间:2024/06/06 08:30
KJAVA虚拟机Hack笔记-MIDP的SLAVE事件流程
转载时请注明出处和作者联系方式
文章出处:http://www.limodev.cn/blog
作者联系方式:李先静
KJAVA虚拟机Hack笔记-MIDP的SLAVE事件流程在SLAVE事件模型中,GUI事件由自己的主循环分发。为了把GUI事件转发给JAVA,需要做些处理才行。这里以Canvas的实现,介绍一下GTK+实现中的事件处理流程:
o 注册GTK窗口事件处理函数
void frame_hook_key_event(GtkWidget* widget){ g_signal_connect_swapped ((gpointer) widget, "key_press_event", G_CALLBACK (frame_on_key_press_event), GTK_OBJECT (widget)); g_signal_connect_swapped ((gpointer) widget, "key_release_event", G_CALLBACK (frame_on_key_release_event), GTK_OBJECT (widget)); return;}
o 在事件处理函数中转发事件
static gboolean frame_on_key_press_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data){ (void)widget; (void)user_data; handle_key_event(event->keyval, KEYMAP_STATE_PRESSED); return FALSE;} static void handle_key_event(int keyval, int action){ MidpEvent evt; MIDP_EVENT_INITIALIZE(evt); evt.type = MIDP_KEY_EVENT; evt.CHR = get_j2me_key(keyval); evt.ACTION = action; if (evt.type != MIDP_INVALID_EVENT) { midpStoreEventAndSignalForeground(evt); } return;}
midpStoreEventAndSignalForeground会把事件放到gForegroundIsolateId线程的native事件队列中。由于有多个线程同时操作事件队列,MIDP要求移植时实现midp_waitAndLockEventQueue和 midp_unlockEventQueue几个函数。这些函数放在midp/src/events/eventqueue_port /linux_gtk/native目录下。在JAVA这边,events/eventqueue/reference/classes/com/sun/midp/events /EventQueue.jpp中有一个线程一直挂在native消息队列上,当有事件产生时,就调用readNativeEvent把事件读出来,然后用eventQueue.post(nativeEvent)放到JAVA事件队列中。
- KJAVA虚拟机移植笔记-MIDP的SLAVE事件流程
- KJAVA虚拟机Hack笔记-实现MIDP的SLAVE事件模型
- KJAVA虚拟机Hack笔记-MIDP HighLevel GUI概述
- KJava虚拟机hack笔记-基于GTK的移植
- KJava虚拟机hack笔记-编译
- KJAVA虚拟机Hack笔记-实现immutableimage
- KJAVA虚拟机Hack笔记-实现mutable image
- KJAVA虚拟机Hack笔记-用GTK+实现绘图操作
- KJAVA虚拟机Hack笔记-用GTK+实现Form
- 分析MIDP的高级事件处理机制
- midp事件的存储和获取
- 第八章:使用Kjava事件处理的开发
- KJAVA MIDP 2.0: The Game API快速入门
- KJAVA MIDP 2.0: The Game API快速入门
- 基于ARM的KVM移植优化MIDP程序
- 根据J2ME(MIDP)虚拟机对程序编写的优化方式
- KJAVA
- KJAVA
- SQL:create table简介
- opengl 输出宽字符
- 求职的几点总结
- BELOG开业
- ActionFrom的验证
- KJAVA虚拟机移植笔记-MIDP的SLAVE事件流程
- 三十分钟掌握STL
- window.onload覆盖问题!
- Spring:使用JdbcTemplate的简单实例-基于注释
- 扩展CUDA SDK 2.3 の convolutionSeparable
- 心愿
- HDU 2845 Beans
- AtmelSAM9260/AtmelSAM9G20开发板提供!!并能提供技术支持!!
- 在windows下搭建学习PyQt4的环境