50.GTK+/DirectFB
李先静
Only those who attempt the absurd can achieve the impossible.
展开
-
通过XML构建TreeView
通过XML构建TreeView 转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静 GtkTreeView功能强大,使用起来也很复杂,不参考示例代码,我很难独立实现GtkTreeView的构建。前几天写了一个程序,通过XML构建TreeView,使用起来简单多了。放在这里给有需要的朋友参考:XML结点有几个属性:原创 2009-02-28 08:36:00 · 3699 阅读 · 0 评论 -
编译基于DirectFB的Phoneme(Advance)
<!-- @page { size: 21cm 29.7cm; margin: 2cm } TD P { margin-bottom: 0cm } PRE { font-family: "文鼎PL细上海宋Uni", monospace } P { margin-bottom: 0.21cm } --> 编原创 2007-09-27 20:09:00 · 5635 阅读 · 4 评论 -
探讨GTK+应用程序的优化方法
探讨GTK+应用程序的优化方法转载时请注明出处和作者联系方式作者联系方式:李先静 随着应用程序功能的完善,时间和空间性能的优化已经成为我们目前工作的重心了。坦白的说,我并不擅长软件优化,甚至可以说我从心里不愿去做优化的工作,因为优化往往伴随破坏软件架构的副作用。但是到了目前这个阶段,整个系统在性能上的表现仍然不尽人意,已经不能再回避了。这里总结一下我所想到的基于GTK+应用程序的优化技巧,原创 2007-09-17 20:20:00 · 8750 阅读 · 2 评论 -
让GtkTextView支持undo/redo操作
让GtkTextView支持undo/redo操作 转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd作者联系方式:李先静 更新时间:2007-7-18 Gtk的TextView是一个功能强大的编辑控件,也是GTK+中最为复杂的控件之一。它基于MVC模型设计,GtkTextView是处理用户界面的视图部分,GtkTextBuffer是负责原创 2007-07-18 20:20:00 · 4131 阅读 · 0 评论 -
让基于DirectFB的GTK+ 支持全局剪切板
让基于DirectFB的GTK+ 支持全局剪切板 转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd作者联系方式:李先静 更新时间:2007-7-17 最近发现基于DirectFB的GTK+不支持全局剪切板,在一个进程中放到剪切板中的内容,在当前进程内粘贴没有问题,但在另外一个进程中就不行了。GTK+的剪切板虽然功能强大,但使用稍嫌麻烦,原创 2007-07-17 21:10:00 · 3966 阅读 · 0 评论 -
TinyMail研究—类型系统
TinyMail研究—类型系统 转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd作者联系方式:李先静更新时间:2007-4-11 TinyMail是一套针对移动设备设计的邮件系统框架,为了达到最大的灵活性,它采用了很多设计模式和先进的编程技术,让框架的每一部分都可以定制和配置。TinyMail流行的趋势非常明显,Nokia770/原创 2007-04-11 21:22:00 · 5117 阅读 · 1 评论 -
两则glib使用技巧
两则glib使用技巧 转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd作者联系方式:李先静 更新时间:2007-7-2 glib是我们平台的基石,几乎任何函数库,任何应用程序,以及任何daemon服务进程,都大量使用glib提供的函数。glib在我们平台中的地位有如STL在C++中的地位一样,熟练使用glib,对于提高开发效率有特别的意原创 2007-07-02 21:39:00 · 6874 阅读 · 3 评论 -
GTK+主循环(main loop)的工作原理
GTK+主循环(main loop)的工作原理 转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd作者联系方式:Li XianJing 更新时间:2007-3-17 我们知道GUI应用程序都是事件驱动的。这些事件大部分都来自于用户,比如键盘事件、鼠标事件或笔点事件。还有一些事件来自于系统内部,比如定时事件、socket事件和其它文件事件等原创 2007-03-17 10:15:00 · 17599 阅读 · 2 评论 -
SCIM架构的缺陷
SCIM架构的缺陷 转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd作者联系方式:Li XianJing 更新时间:2007-1-25 在做输入法的过程中,手写输入法倒是出人意料的简单。相反,开始认为最简单的字母输入法,反而给我们出了难题。SCIM的架构毫无疑问是优良的,只是移植到手机平台上,外界条件变化太大,导致一些问题无法处理。不管原创 2007-01-25 21:50:00 · 5969 阅读 · 4 评论 -
g_object_weak_ref的意义和用途
g_object_weak_ref的意义和用途 转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd作者联系方式:Li XianJing 更新时间:2007-1-17 引用计数是控制对象生命周期常用的手法,对象初始引用计数为一,引用一次计数加一,反引用一次计数减一,直到计数降为零时,对象被销毁。GObject也实现了引用计数机制,g_obj原创 2007-01-17 20:32:00 · 5017 阅读 · 3 评论 -
测试phoneme advance(DirectFB)运行环境
<!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } PRE { font-family: "文鼎PL细上海宋Uni", monospace } TD P { margin-bottom: 0cm } --> 测试pho原创 2007-09-27 20:46:00 · 5050 阅读 · 2 评论 -
GTK+/DirectFB PC模拟运行环境
GTK+/DirectFB PC模拟运行环境转载时请注明出处和作者联系方式作者联系方式:李先静 GTK+/DirectFB不但可以运行在frambebuffer上,而且可以运行在其它GUI之上,比如像SDL和X11等等,因此在PC上建立模拟运行环境是非常简单的。不过有一个小小麻烦一直困扰着我们,直到最近才解决这个问题,这里做个笔记供大家参考。基于SDL/X11等其它GUI这个很简单,只要修改一原创 2007-11-12 20:54:00 · 7674 阅读 · 2 评论 -
DirectFB压力测试工具
DirectFB压力测试工具转载时请注明出处和作者联系方式作者联系方式:李先静 GUI应用程序自动测试一直是个难题,通常的做法就是先把人工测试过程录制下来,然后去重放这个测试过程。这种方法的主要缺点是很难自动检测运行结果的正确性,所以很多人都不屑去使用它。其实工具总是有它的局限性,它能不能发挥它应有的作用,还依赖于人的灵活运用。即不能过分依赖于工具,也不能盲目排斥工具。在质量保证的过程中,人无疑是原创 2008-04-20 13:09:00 · 4968 阅读 · 0 评论 -
DirectFB运行机制介绍
DirectFB运行机制介绍转载时请注明出处和作者联系方式作者联系方式:李先静 事实上我对DirectFB的理解是比较肤浅的,几年前的确花了一些时间研究去DirectFB的实现,但只是集中在一部分功能的代码上。后来GUI(DirectFB/GTK)由一位同事接手了,我就没有花太多时间在上面了。可能是因为前面写过几篇关于DirectFB的文章,结果还真有不少网友把我原创 2008-06-29 18:26:00 · 20449 阅读 · 4 评论 -
DirectFB同时显示到X11和VNC上
DirectFB同时显示到X11和VNC上转载时请注明出处和作者联系方式作者联系方式:李先静 DirectFB可以使用多种后端作为输入输出设备,典型的有VNC、X11、SDL和fbdev等等,这种设计可以说非常巧妙了。但美中不足的是它在任意时刻只能使用一种后端,更换成其它后端需要重新起动DirectFB应用程序。大多数情况下,这也没有问题,但我想broncho手机在正常使用的情况下,还能通过VNC原创 2008-06-09 14:48:00 · 7170 阅读 · 0 评论 -
多进程DirectFB用X11显示的死锁问题
多进程DirectFB用X11显示的死锁问题转载时请注明出处和作者联系方式作者联系方式:李先静 多进程的DirectFB用X11或SDL显示时,有一个固有的死锁问题,其原理如下:SLAVE进程调用dfb_layer_region_flip_update去刷新屏幕,这个函数最后会调用虚函数UpdateRegion。对于X11或SDL显示的情况下,SLAVE只能通过MASTER才能刷新原创 2008-05-25 16:34:00 · 4030 阅读 · 0 评论 -
gobject对象不宜作为动态加载的插件
转载时请注明出处和作者联系方式作者联系方式:李先静 前段时间对 syncmanager进行重构,为了减少不必要的开销,我决定在需要时才加SyncSource插件,不需要时就卸载它们。在测试时发现第一次运行时正 常,第二次运行时创建DbPersistance对象时失败了。仔细看了下调试信息,里面告诉我说注册DbPersistance类型失败,因为已经 DbPersistance类型注册了。原创 2008-05-11 18:40:00 · 3199 阅读 · 3 评论 -
GTK/DFB中的WaitCursor
GTK/DFB中的WaitCursor转载时请注明出处和作者联系方式作者联系方式:李先静 虽然我们实现了单实例应用程序,即在应用程序第二次运行时自动激活第一个实例,并将参数传递给第一个运行实例。但如果在桌面连续点击应用程序的起动图标,会让应用程序起动过过程变得更慢,为了避免这种情况出现,有必要实现类似WaitCursor机制。GTK+-2.6/DFB中没有实现WaitCursor,新版本中好像也没原创 2008-07-18 20:56:00 · 3846 阅读 · 0 评论 -
GTK+/DFB优化
GTK+/DFB优化(续)转载时请注明出处和作者联系方式作者联系方式:李先静 在前一篇GTK优化的BLOG中,我介绍我当时知道的优化方法,这段时间又有一些新的体会,写出来和大家分享吧:1) 固化DirectFB的配置。由于DirectFB的配置基本上都是固定的,通常没有必要使用配置文件,直接把配置固化到代码里好了,即省了配置文件的解析,又省了某些插件目录的扫描。2) 去掉DirectFB中不必要的原创 2008-07-16 21:36:00 · 4928 阅读 · 11 评论 -
在Win32下建立GTK开发环境
在Win32下建立GTK开发环境 转载时请注明出处和作者联系方式 作者联系方式:李先静 这几天在写一个生产下载工具,产线上的工人习惯用Win32下的图形用户界面工具,自然要满足这个要求才行。但我也不想再去回忆N年没有用过的 MFC了,所以决定用GTK开发,然后移植到Windows下。安装完整cygwin有点大,我只想建立一个最小开发/运行环境,这还真有点麻烦,特别是 国际化的处理原创 2008-07-04 21:56:00 · 8399 阅读 · 5 评论 -
让语言选择即时生效
让语言选择即时生效转载时请注明出处和作者联系方式作者联系方式:李先静 在用户选择不同语言之后,如何让系统中的应用程序使用新选择的语言显示界面呢?在feature phone中这只是小菜一碟,几乎所有feature phone都支持这个功能。主要原因可能是其以单进程单窗口的方式工作吧。而在linux智能手机里,这个问题我想了很久,至今没有较好的答案。主要困难如下:通知其它应用程序当前语言变化了。原创 2008-04-27 21:25:00 · 3775 阅读 · 2 评论 -
DirectFB几个辅助工具
DirectFB几个辅助工具转载时请注明出处和作者联系方式作者联系方式:李先静 uwmdump: 显示所有窗口的信息。我修改之后可以显示在栈中的位置,进程ID,标题和左右操作栏的文本。如:-------[ Contexts ]-------Reference . Refs Windows--------------------------0x0000000d : 43 15原创 2008-04-25 20:52:00 · 4826 阅读 · 0 评论 -
gtk_object_sink的妙处
gtk_object_sink的妙处 转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd作者联系方式:Li XianJing 更新时间:2006-1-15 在很长一段时间内,我一直不太明白gtk_object_sink这个函数的意义,它的实现也很简单:原创 2007-01-15 22:09:00 · 3613 阅读 · 2 评论 -
gcc profiling的工作原理
gcc profiling的工作原理 转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd作者联系方式:Li XianJing 更新时间:2006-1-8 gcc profiling是一个常用的功能,本来没有什么好说的。不过最近想知道GTK+ + DirectFB应用程序起动缓慢的原因,打算让gcc profiling帮帮忙,结果却遇到一个原创 2007-01-08 21:35:00 · 7947 阅读 · 4 评论 -
用GtkTreeView实现ListBox的示例
用GtkTreeView实现ListBox示例 转载时请注明出处:http://blog.csdn.net/absurd/ 前段时间花了不少时间去研究GTK+的架构,但没有怎么关注具体控件的使用。大部控件都有示例代码,相信使用不会很难。今天要测试一下用GtkTreeView实现ListBox,发现没有GtkTreeView的示例代码,GTK+的tutorial里也没有讲解。只好自己原创 2006-09-07 21:17:00 · 6010 阅读 · 2 评论 -
SCIM输入法架构分析(下)
SCIM输入法架构分析(下) 转载时请注明出处:http://blog.csdn.net/absurd/ 1. 概述SCIM是Smart Common Input Method的简称,它是一个输入法框架,由苏哲领导开发的。作为新一代输入法框架,其架构设计精良,具有很好的扩充性和灵性性,代码质量也非常高,称得上是国内经典的开源项目了。本文试图对SCIM的架构进行分原创 2006-08-31 21:16:00 · 10705 阅读 · 1 评论 -
SCIM输入法架构分析(上)
SCIM输入法架构分析(上) 转载时请注明出处:http://blog.csdn.net/absurd/ 文档格式与术语说明 1. 概述SCIM是Smart Common Input Method的简称,它是一个输入法框架,由苏哲领导开发的。作为新一代输入法框架,其架构设计精良,具有很好的扩充性和灵性性,代码质量也非常高,称得上是国内经典的开源项目了原创 2006-08-31 20:51:00 · 18621 阅读 · 7 评论 -
GTK的消息流说明(X Window做后端的情况)
1. 初始化时,GDK向mainloop注册一个事件源(gdkevents-x11.c:gdk_events_init),让mainloop挂到X Window的socket上。 2. GTK调用GDK的gdk_event_handler_set函数设置事件处理函数(gtkmain.c: do_pre_parse_initialization)gtk_mai原创 2006-03-08 20:44:00 · 5388 阅读 · 3 评论 -
GTK+2.6 + DirectFB的几个问题
GTK+2.6 + DirectFB的几个问题 经过几番周折,终于确定采用GTK+2.6 + DirectFB方案。之所以不选择GTK+2.8 + TinyX主要是出于硬件成本上的考虑,TinyX(包括Xlib等库文件)要占4M Flash空间,加上窗口管理器还要耗好几M的RAM,同时进程间通信过于频繁,性能上的开销也不容小觑。 为什么不选择GTK+2.8 + DirectFB呢?原创 2006-03-28 20:55:00 · 8329 阅读 · 8 评论 -
基于fusion的DirectFB消息流
在传统的DirectFB应用中,所有的应用程序都在一个进程中,在性能上,有一些优势,然而一个应用程序不稳定会造成整个系统的不稳定。若采用C/S模型,无疑是重蹈X Widnow的覆辙,会丧失性能上的优势。 所以DirectFB采用了另外一种方式,与C/S相区别,称之为主从模型(Master/Slave)。它加了一个称之为fusion的内核模块。Fusion是熔化的意思,多个应用程序在不的进程原创 2006-03-08 22:01:00 · 12268 阅读 · 2 评论 -
在GTK+中实现嵌入式窗口
Windows下的托盘(tray)是不是很酷呢?利用这种机制,你可以方便的把自己的应用程序嵌入到任务栏里。大多数时候,应用程序在后台工作,不会干扰用户,当用户想查看某些信息时,只点一下这个小图标就行了。应用程序在响应点击事件时,可以把应用程序提到前台来,可以弹出一个对话框,可以显示一个菜单,或者做其它任何事情,这完全是应用程序自己的事,与任务栏一点关系都没有。 在Linux下的桌面环境里,原创 2006-02-16 20:10:00 · 8903 阅读 · 4 评论 -
让gtk+应用程序的主题风格即时生效
主题风格似乎已是GUI应用程序必不可少的元素了,不同用户有不同的审美观,为用户提供多种的主题风格,或者让用户自己定制,都是比较好的选择。记得win95刚出来时,很多人总会把它弄出不同的外观,以显示的自己的水平和与众不同。 在gtk+应用程序中,用户可以定制主题风格:设置窗口/控件在不同状态下的颜色,背景图片等等。用户在修改完成后,如何让这些设置即时生效呢?让用户重起所有gtk+应用程序,未原创 2006-02-10 21:47:00 · 3887 阅读 · 8 评论 -
glib: 恶梦终结者
gnome是基于gtk+开发的一套桌面环境,gnome和KDE作为两大最流行的桌面环境,在全世界广泛使用。只要是在Linux下工作的开发人员,对于gtk+一定不陌生。而对于glib,这个gtk+下的无名英雄,其功能强大却鲜为人知。今天,在这里简要介绍一下,如果你是开发人员,看完本文,相信你会爱上它的。 glib不是gllibc,尽管两者都是基于(L)GPL的开源软件。但这一字之差却误原创 2006-02-08 21:58:00 · 10945 阅读 · 7 评论 -
让GtkListStore支持数据延迟加载的构想
让GtkListStore支持数据延迟加载的构想 转载时请注明出处:http://blog.csdn.net/absurd/ 最近遇到一个问题,在名片列表中要显示全部名片,我们最大名片条数限制是5000条,一下子全部检索过来会非常慢。为了解决这类问题,我们在数据库封装层做了优化,即使全部检索了,但它只从数据库中取前30条,其余数据直到应用程序使用时才从数据库中获取,这种延迟加载的方原创 2006-09-07 21:19:00 · 3688 阅读 · 10 评论 -
由GdkPixmap得到透明的GdkPixbuf
由GdkPixmap得到透明的GdkPixbuf GdkPixmap是GdkDrawable的子类。GdkDrawable和Win32下的DC(DeviceContext)有点类似,你可以在上面画直线、画圆或者在上面贴图片。DC有很多不同的子类,最常见的有内存DC,打印机DC,屏幕DC。同样,GdkDrawable也有很多子类,非要和Win32对应起来的话,GdkPixmap的地位和内存D原创 2006-05-09 20:08:00 · 7328 阅读 · 1 评论 -
GTK+剪贴板使用实例
GTK+剪贴板使用实例 转载时请注明出处:http://blog.csdn.net/absurd GtkClipboard功能强大,但其风格与Win32上剪贴板相差极大,对于刚接触GTK+编程的程序员来说,特别是已经习惯于Win32剪贴板用法的程序员来说,易用性不是太好。这方面的文档也比较少,最近学习使用GTK+的剪贴板,竟花了好几个小时才学会,这里做个笔记,供大家参考。原创 2006-09-21 22:25:00 · 4714 阅读 · 1 评论 -
GTK+与MFC不完全对比
GTK+与MFC不完全对比 转载时请注明出处:http://blog.csdn.net/absurd/ MFC已经江河日下,日渐式微,而GTK+可谓欣欣向荣,如日中天。这里无意于落井下石,痛打落水狗,贬MFC而尊GTK+。自己即在使用MFC也在使用GTK+,不会偏袒其中之任何一方。这个对比完全出于个人对两者的理解,说它是不完全对比,一方面只是一时兴起想做个笔记而已,另外一方面我对两原创 2006-08-18 07:32:00 · 12463 阅读 · 44 评论 -
Idle函数的三大用途
Idle函数的三大用途 转载时请注明出处:http://blog.csdn.net/absurd/ 我们知道glib提供了一个名为g_idle_add的函数,这个函数的功能很容易理解:增加一个空闲任务,让应用程序在空闲时执行指定的函数。这种机制非常有用,如果没有这种机制,很多事情将非常麻烦。它的功能虽然简单,但并不是所有人都知道如何充分发挥它的潜力,这里说说它的几个主要用途吧。原创 2006-08-17 20:00:00 · 5843 阅读 · 4 评论 -
DirectFB代码导读
DirectFB代码导读 转载时请注明出处和作者联系方式作者联系方式:李先静 DirectFB是一个庞大的系统,对它进行彻底分析要花不少时间。幸好多数情况下,只要弄清楚它的基本架构,再重点读一些关键的代码,也就差不多了。前几个月为了完善DFB的窗口管理器,我花了一些时间去研究DFB的架构。把其中一些经验写到这里,供有兴趣的朋友参考。 总的说来,DFB由以下几部分组成:原创 2006-07-30 16:22:00 · 21274 阅读 · 60 评论 -
几则GTK+开发技巧
几则GTK+开发技巧 转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd作者联系方式:Li XianJing 更新时间:2006-12-19 这两周在开发SMS应用程序,这是第一次用GTK+开发完整的应用程序。在这个过程中,学到一些小技巧,感觉挺有用的,这里做个笔记。 1. 使用g_object_set_data保原创 2006-11-27 20:57:00 · 4510 阅读 · 2 评论