50.GTK+/DirectFB
李先静
Only those who attempt the absurd can achieve the impossible.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
DirectFB压力测试工具
DirectFB压力测试工具转载时请注明出处和作者联系方式作者联系方式:李先静 GUI应用程序自动测试一直是个难题,通常的做法就是先把人工测试过程录制下来,然后去重放这个测试过程。这种方法的主要缺点是很难自动检测运行结果的正确性,所以很多人都不屑去使用它。其实工具总是有它的局限性,它能不能发挥它应有的作用,还依赖于人的灵活运用。即不能过分依赖于工具,也不能盲目排斥工具。在质量保证的过程中,人无疑是原创 2008-04-20 13:09:00 · 5063 阅读 · 0 评论 -
g_object_weak_ref的意义和用途
g_object_weak_ref的意义和用途 转载时请注明出处和作者联系方式:http://blog.youkuaiyun.com/absurd作者联系方式:Li XianJing 更新时间:2007-1-17 引用计数是控制对象生命周期常用的手法,对象初始引用计数为一,引用一次计数加一,反引用一次计数减一,直到计数降为零时,对象被销毁。GObject也实现了引用计数机制,g_obj原创 2007-01-17 20:32:00 · 5126 阅读 · 3 评论 -
SCIM架构的缺陷
SCIM架构的缺陷 转载时请注明出处和作者联系方式:http://blog.youkuaiyun.com/absurd作者联系方式:Li XianJing 更新时间:2007-1-25 在做输入法的过程中,手写输入法倒是出人意料的简单。相反,开始认为最简单的字母输入法,反而给我们出了难题。SCIM的架构毫无疑问是优良的,只是移植到手机平台上,外界条件变化太大,导致一些问题无法处理。不管原创 2007-01-25 21:50:00 · 6051 阅读 · 4 评论 -
GTK+主循环(main loop)的工作原理
GTK+主循环(main loop)的工作原理 转载时请注明出处和作者联系方式:http://blog.youkuaiyun.com/absurd作者联系方式:Li XianJing 更新时间:2007-3-17 我们知道GUI应用程序都是事件驱动的。这些事件大部分都来自于用户,比如键盘事件、鼠标事件或笔点事件。还有一些事件来自于系统内部,比如定时事件、socket事件和其它文件事件等原创 2007-03-17 10:15:00 · 17801 阅读 · 2 评论 -
两则glib使用技巧
两则glib使用技巧 转载时请注明出处和作者联系方式:http://blog.youkuaiyun.com/absurd作者联系方式:李先静 更新时间:2007-7-2 glib是我们平台的基石,几乎任何函数库,任何应用程序,以及任何daemon服务进程,都大量使用glib提供的函数。glib在我们平台中的地位有如STL在C++中的地位一样,熟练使用glib,对于提高开发效率有特别的意原创 2007-07-02 21:39:00 · 7003 阅读 · 3 评论 -
TinyMail研究—类型系统
TinyMail研究—类型系统 转载时请注明出处和作者联系方式:http://blog.youkuaiyun.com/absurd作者联系方式:李先静更新时间:2007-4-11 TinyMail是一套针对移动设备设计的邮件系统框架,为了达到最大的灵活性,它采用了很多设计模式和先进的编程技术,让框架的每一部分都可以定制和配置。TinyMail流行的趋势非常明显,Nokia770/原创 2007-04-11 21:22:00 · 5182 阅读 · 1 评论 -
让基于DirectFB的GTK+ 支持全局剪切板
让基于DirectFB的GTK+ 支持全局剪切板 转载时请注明出处和作者联系方式:http://blog.youkuaiyun.com/absurd作者联系方式:李先静 更新时间:2007-7-17 最近发现基于DirectFB的GTK+不支持全局剪切板,在一个进程中放到剪切板中的内容,在当前进程内粘贴没有问题,但在另外一个进程中就不行了。GTK+的剪切板虽然功能强大,但使用稍嫌麻烦,原创 2007-07-17 21:10:00 · 4041 阅读 · 0 评论 -
让GtkTextView支持undo/redo操作
让GtkTextView支持undo/redo操作 转载时请注明出处和作者联系方式:http://blog.youkuaiyun.com/absurd作者联系方式:李先静 更新时间:2007-7-18 Gtk的TextView是一个功能强大的编辑控件,也是GTK+中最为复杂的控件之一。它基于MVC模型设计,GtkTextView是处理用户界面的视图部分,GtkTextBuffer是负责原创 2007-07-18 20:20:00 · 4219 阅读 · 0 评论 -
探讨GTK+应用程序的优化方法
探讨GTK+应用程序的优化方法转载时请注明出处和作者联系方式作者联系方式:李先静 随着应用程序功能的完善,时间和空间性能的优化已经成为我们目前工作的重心了。坦白的说,我并不擅长软件优化,甚至可以说我从心里不愿去做优化的工作,因为优化往往伴随破坏软件架构的副作用。但是到了目前这个阶段,整个系统在性能上的表现仍然不尽人意,已经不能再回避了。这里总结一下我所想到的基于GTK+应用程序的优化技巧,原创 2007-09-17 20:20:00 · 8950 阅读 · 2 评论 -
编译基于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 · 5796 阅读 · 4 评论 -
测试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 · 5178 阅读 · 2 评论 -
GTK+/DirectFB PC模拟运行环境
GTK+/DirectFB PC模拟运行环境转载时请注明出处和作者联系方式作者联系方式:李先静 GTK+/DirectFB不但可以运行在frambebuffer上,而且可以运行在其它GUI之上,比如像SDL和X11等等,因此在PC上建立模拟运行环境是非常简单的。不过有一个小小麻烦一直困扰着我们,直到最近才解决这个问题,这里做个笔记供大家参考。基于SDL/X11等其它GUI这个很简单,只要修改一原创 2007-11-12 20:54:00 · 7784 阅读 · 2 评论 -
gtk_object_sink的妙处
gtk_object_sink的妙处 转载时请注明出处和作者联系方式:http://blog.youkuaiyun.com/absurd作者联系方式:Li XianJing 更新时间:2006-1-15 在很长一段时间内,我一直不太明白gtk_object_sink这个函数的意义,它的实现也很简单:原创 2007-01-15 22:09:00 · 3691 阅读 · 2 评论 -
DirectFB几个辅助工具
DirectFB几个辅助工具转载时请注明出处和作者联系方式作者联系方式:李先静 uwmdump: 显示所有窗口的信息。我修改之后可以显示在栈中的位置,进程ID,标题和左右操作栏的文本。如:-------[ Contexts ]-------Reference . Refs Windows--------------------------0x0000000d : 43 15原创 2008-04-25 20:52:00 · 4904 阅读 · 0 评论 -
让语言选择即时生效
让语言选择即时生效转载时请注明出处和作者联系方式作者联系方式:李先静 在用户选择不同语言之后,如何让系统中的应用程序使用新选择的语言显示界面呢?在feature phone中这只是小菜一碟,几乎所有feature phone都支持这个功能。主要原因可能是其以单进程单窗口的方式工作吧。而在linux智能手机里,这个问题我想了很久,至今没有较好的答案。主要困难如下:通知其它应用程序当前语言变化了。原创 2008-04-27 21:25:00 · 3858 阅读 · 2 评论 -
在Win32下建立GTK开发环境
在Win32下建立GTK开发环境 转载时请注明出处和作者联系方式 作者联系方式:李先静 这几天在写一个生产下载工具,产线上的工人习惯用Win32下的图形用户界面工具,自然要满足这个要求才行。但我也不想再去回忆N年没有用过的 MFC了,所以决定用GTK开发,然后移植到Windows下。安装完整cygwin有点大,我只想建立一个最小开发/运行环境,这还真有点麻烦,特别是 国际化的处理原创 2008-07-04 21:56:00 · 8476 阅读 · 5 评论 -
GTK+/DFB优化
GTK+/DFB优化(续)转载时请注明出处和作者联系方式作者联系方式:李先静 在前一篇GTK优化的BLOG中,我介绍我当时知道的优化方法,这段时间又有一些新的体会,写出来和大家分享吧:1) 固化DirectFB的配置。由于DirectFB的配置基本上都是固定的,通常没有必要使用配置文件,直接把配置固化到代码里好了,即省了配置文件的解析,又省了某些插件目录的扫描。2) 去掉DirectFB中不必要的原创 2008-07-16 21:36:00 · 5019 阅读 · 11 评论 -
GTK/DFB中的WaitCursor
GTK/DFB中的WaitCursor转载时请注明出处和作者联系方式作者联系方式:李先静 虽然我们实现了单实例应用程序,即在应用程序第二次运行时自动激活第一个实例,并将参数传递给第一个运行实例。但如果在桌面连续点击应用程序的起动图标,会让应用程序起动过过程变得更慢,为了避免这种情况出现,有必要实现类似WaitCursor机制。GTK+-2.6/DFB中没有实现WaitCursor,新版本中好像也没原创 2008-07-18 20:56:00 · 3946 阅读 · 0 评论 -
gobject对象不宜作为动态加载的插件
转载时请注明出处和作者联系方式作者联系方式:李先静 前段时间对 syncmanager进行重构,为了减少不必要的开销,我决定在需要时才加SyncSource插件,不需要时就卸载它们。在测试时发现第一次运行时正 常,第二次运行时创建DbPersistance对象时失败了。仔细看了下调试信息,里面告诉我说注册DbPersistance类型失败,因为已经 DbPersistance类型注册了。原创 2008-05-11 18:40:00 · 3257 阅读 · 3 评论 -
多进程DirectFB用X11显示的死锁问题
多进程DirectFB用X11显示的死锁问题转载时请注明出处和作者联系方式作者联系方式:李先静 多进程的DirectFB用X11或SDL显示时,有一个固有的死锁问题,其原理如下:SLAVE进程调用dfb_layer_region_flip_update去刷新屏幕,这个函数最后会调用虚函数UpdateRegion。对于X11或SDL显示的情况下,SLAVE只能通过MASTER才能刷新原创 2008-05-25 16:34:00 · 4149 阅读 · 0 评论 -
DirectFB同时显示到X11和VNC上
DirectFB同时显示到X11和VNC上转载时请注明出处和作者联系方式作者联系方式:李先静 DirectFB可以使用多种后端作为输入输出设备,典型的有VNC、X11、SDL和fbdev等等,这种设计可以说非常巧妙了。但美中不足的是它在任意时刻只能使用一种后端,更换成其它后端需要重新起动DirectFB应用程序。大多数情况下,这也没有问题,但我想broncho手机在正常使用的情况下,还能通过VNC原创 2008-06-09 14:48:00 · 7300 阅读 · 0 评论 -
DirectFB运行机制介绍
DirectFB运行机制介绍转载时请注明出处和作者联系方式作者联系方式:李先静 事实上我对DirectFB的理解是比较肤浅的,几年前的确花了一些时间研究去DirectFB的实现,但只是集中在一部分功能的代码上。后来GUI(DirectFB/GTK)由一位同事接手了,我就没有花太多时间在上面了。可能是因为前面写过几篇关于DirectFB的文章,结果还真有不少网友把我原创 2008-06-29 18:26:00 · 20672 阅读 · 4 评论 -
通过XML构建TreeView
通过XML构建TreeView 转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静 GtkTreeView功能强大,使用起来也很复杂,不参考示例代码,我很难独立实现GtkTreeView的构建。前几天写了一个程序,通过XML构建TreeView,使用起来简单多了。放在这里给有需要的朋友参考:XML结点有几个属性:原创 2009-02-28 08:36:00 · 3762 阅读 · 0 评论 -
GTK+剪贴板使用实例
GTK+剪贴板使用实例 转载时请注明出处:http://blog.youkuaiyun.com/absurd GtkClipboard功能强大,但其风格与Win32上剪贴板相差极大,对于刚接触GTK+编程的程序员来说,特别是已经习惯于Win32剪贴板用法的程序员来说,易用性不是太好。这方面的文档也比较少,最近学习使用GTK+的剪贴板,竟花了好几个小时才学会,这里做个笔记,供大家参考。原创 2006-09-21 22:25:00 · 4811 阅读 · 1 评论 -
glib: 恶梦终结者
gnome是基于gtk+开发的一套桌面环境,gnome和KDE作为两大最流行的桌面环境,在全世界广泛使用。只要是在Linux下工作的开发人员,对于gtk+一定不陌生。而对于glib,这个gtk+下的无名英雄,其功能强大却鲜为人知。今天,在这里简要介绍一下,如果你是开发人员,看完本文,相信你会爱上它的。 glib不是gllibc,尽管两者都是基于(L)GPL的开源软件。但这一字之差却误原创 2006-02-08 21:58:00 · 11094 阅读 · 7 评论 -
让gtk+应用程序的主题风格即时生效
主题风格似乎已是GUI应用程序必不可少的元素了,不同用户有不同的审美观,为用户提供多种的主题风格,或者让用户自己定制,都是比较好的选择。记得win95刚出来时,很多人总会把它弄出不同的外观,以显示的自己的水平和与众不同。 在gtk+应用程序中,用户可以定制主题风格:设置窗口/控件在不同状态下的颜色,背景图片等等。用户在修改完成后,如何让这些设置即时生效呢?让用户重起所有gtk+应用程序,未原创 2006-02-10 21:47:00 · 3982 阅读 · 8 评论 -
在GTK+中实现嵌入式窗口
Windows下的托盘(tray)是不是很酷呢?利用这种机制,你可以方便的把自己的应用程序嵌入到任务栏里。大多数时候,应用程序在后台工作,不会干扰用户,当用户想查看某些信息时,只点一下这个小图标就行了。应用程序在响应点击事件时,可以把应用程序提到前台来,可以弹出一个对话框,可以显示一个菜单,或者做其它任何事情,这完全是应用程序自己的事,与任务栏一点关系都没有。 在Linux下的桌面环境里,原创 2006-02-16 20:10:00 · 9044 阅读 · 4 评论 -
基于fusion的DirectFB消息流
在传统的DirectFB应用中,所有的应用程序都在一个进程中,在性能上,有一些优势,然而一个应用程序不稳定会造成整个系统的不稳定。若采用C/S模型,无疑是重蹈X Widnow的覆辙,会丧失性能上的优势。 所以DirectFB采用了另外一种方式,与C/S相区别,称之为主从模型(Master/Slave)。它加了一个称之为fusion的内核模块。Fusion是熔化的意思,多个应用程序在不的进程原创 2006-03-08 22:01:00 · 12393 阅读 · 2 评论 -
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 · 8423 阅读 · 8 评论 -
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 · 5508 阅读 · 3 评论 -
SCIM输入法架构分析(上)
SCIM输入法架构分析(上) 转载时请注明出处:http://blog.youkuaiyun.com/absurd/ 文档格式与术语说明 1. 概述SCIM是Smart Common Input Method的简称,它是一个输入法框架,由苏哲领导开发的。作为新一代输入法框架,其架构设计精良,具有很好的扩充性和灵性性,代码质量也非常高,称得上是国内经典的开源项目了原创 2006-08-31 20:51:00 · 18896 阅读 · 7 评论 -
SCIM输入法架构分析(下)
SCIM输入法架构分析(下) 转载时请注明出处:http://blog.youkuaiyun.com/absurd/ 1. 概述SCIM是Smart Common Input Method的简称,它是一个输入法框架,由苏哲领导开发的。作为新一代输入法框架,其架构设计精良,具有很好的扩充性和灵性性,代码质量也非常高,称得上是国内经典的开源项目了。本文试图对SCIM的架构进行分原创 2006-08-31 21:16:00 · 10895 阅读 · 1 评论 -
用GtkTreeView实现ListBox的示例
用GtkTreeView实现ListBox示例 转载时请注明出处:http://blog.youkuaiyun.com/absurd/ 前段时间花了不少时间去研究GTK+的架构,但没有怎么关注具体控件的使用。大部控件都有示例代码,相信使用不会很难。今天要测试一下用GtkTreeView实现ListBox,发现没有GtkTreeView的示例代码,GTK+的tutorial里也没有讲解。只好自己原创 2006-09-07 21:17:00 · 6149 阅读 · 2 评论 -
让GtkListStore支持数据延迟加载的构想
让GtkListStore支持数据延迟加载的构想 转载时请注明出处:http://blog.youkuaiyun.com/absurd/ 最近遇到一个问题,在名片列表中要显示全部名片,我们最大名片条数限制是5000条,一下子全部检索过来会非常慢。为了解决这类问题,我们在数据库封装层做了优化,即使全部检索了,但它只从数据库中取前30条,其余数据直到应用程序使用时才从数据库中获取,这种延迟加载的方原创 2006-09-07 21:19:00 · 3779 阅读 · 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 · 7487 阅读 · 1 评论 -
GObject的对象属性
GObject的对象属性 在glib对象系统中,一般的类都是从Gobject类继承过来的。尽管glib是用C语言开发的,它却几乎支持所有的面向对象的特性。这里不谈glib的面向对象机制,只是说说关于GObject对象属性的一些问题。 在OOP中,对象的属性一般用成员变量来表示。编程高手常常告诫我们,把对象的属性隐藏起来,用成员函数去访问,可以减少与使用者之间的耦合,同时可以提高程序原创 2006-03-21 20:42:00 · 6077 阅读 · 0 评论 -
DirectFB窗口管理器(unique)研究笔记
DirectFB窗口管理器(unique)研究笔记 DirectFB自带有两个窗口管理器:default和unique,可以在配置文件中用wm=xxx来选择用哪一个作为当前的窗口管理器。 两个窗口管理器的功能都很简单,与桌面环境流行的窗口管理器几乎没有可比性。尤其是前者,提供的功能更是简陋,仅仅是管理一下窗口栈而已。后者虽然简陋,但其架构设计还算不错,很容易在上面扩展自己需要的功能原创 2006-05-13 23:06:00 · 10447 阅读 · 5 评论 -
几个关于Gobject signal的BUG
几个关于Gobject signal的BUG 转载时请注明出处和作者联系方式:http://blog.youkuaiyun.com/absurd作者联系方式:Li XianJing 更新时间:2006-12-19 signal是GObject的重要特色,也是GTK+的基本支柱。它的原理其实很简单,基于订阅/发布模式,用于解耦消息的发送者和接受者。在D-BUS的帮助下,signal还原创 2006-10-19 21:24:00 · 3835 阅读 · 0 评论 -
Freetype学习笔记
Freetype学习笔记 转载时请注明出处和作者联系方式:http://blog.youkuaiyun.com/absurd作者联系方式:Li XianJing 更新时间:2006-12-19 GTK+(基于DirectFB)的字体绘制是通过pango+freetype+fontconfig三者协作来完成的,其中,fontconfig负责字体的管理和配置,freetype负责单个字原创 2006-10-28 16:53:00 · 16248 阅读 · 11 评论 -
GTK+(基于DirectFB)的字体处理
GTK+(基于DirectFB)的字体处理 转载时请注明出处和作者联系方式:http://blog.youkuaiyun.com/absurd作者联系方式:Li XianJing 更新时间:2006-12-19 GTK+(基于DirectFB)的字体绘制是通过pango+freetype+fontconfig三者协作来完成的,其中,fontconfig负责字体的管理和配置,free原创 2006-11-01 21:53:00 · 6451 阅读 · 9 评论
分享