QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5224|回复: 18

申请加入EGui

[复制链接]
发表于 2006-6-12 09:33:28 | 显示全部楼层 |阅读模式
最近正在看EGui source.
发现设计还是蛮有特色的.
由于以前也做过一个GUI, 积累了一些经验.
希望能和大家一起把EGui做好.
发表于 2006-6-12 11:06:24 | 显示全部楼层
好! 你可以下载新的代码,和以前的文档.
看看listbox 控件的写法.或者完善edit控件也可以.

你擅长的方面是什么?
我最近的任务是做窗口的裁减.

如果窗口的裁减的工作完成了.我将发布一个版本.目前EGui没有任何版本号.
呵呵!
回复

使用道具 举报

 楼主| 发表于 2006-6-12 12:53:08 | 显示全部楼层
什么时候上MSN和你讨论吧.
窗口裁减, 我以前做过. 不知道你现在的情况如何.
还有,我觉得EGui现在的构架可能值得仔细推敲.
回复

使用道具 举报

发表于 2006-6-12 13:37:28 | 显示全部楼层
msn,我只能晚上登陆.公司里不能使用.
回复

使用道具 举报

发表于 2006-6-12 13:38:29 | 显示全部楼层
关于框架,我们可以在论坛讨论.
回复

使用道具 举报

 楼主| 发表于 2006-6-14 19:20:26 | 显示全部楼层
为什么 window list 要再kernel 里做呢?
我觉得service应该是个daemon。kernel里来回切换的代价太高了。
回复

使用道具 举报

发表于 2006-6-15 09:05:09 | 显示全部楼层
S/C结构同样需要来回切.

我们看S/C流程
鼠标事件: kernel--->server--->(进程线程通讯)kernel--->client

EGui框架:kernel ---->client
回复

使用道具 举报

 楼主| 发表于 2006-6-15 15:43:32 | 显示全部楼层
线程间通讯不一定要kernel参与. 当然如果client 都是进程,那开销不算大.
问题是你把这些东西放kernel里既不太符合逻辑,又很危险.
逻辑上来讲kernel只应该负责把原始消息(按键,鼠标)传递上来; 分析窗口层次,消息包装应该server去搞定. EGui这种设计到是有点象我那个liteGUI, 但我是在uc/OS上做的,本来就没有kernel/app空间之分. 这边用linux的话, 我觉得kernel 该做什么, 不该做什么, 应该比较清楚.
不过我还是觉得你的设计蛮有创新的.
还有我目前还不清楚,EGui client之间的通讯准备采用什么方法, 如果没有server 都靠kernel, 似乎有些可怕.
回复

使用道具 举报

发表于 2006-6-15 16:15:23 | 显示全部楼层
>>线程间通讯不一定要kernel参与. 当然如果client 都是进程,那开销不算大.
C/S应该是进程,不是线程.
如果很多应用都用线程,那更危险.
进程间通讯,需要从kernel绕一圈.

>>问题是你把这些东西放kernel里既不太符合逻辑,又很危险.
网络的事件分配就在kernel实现,没有任何不符合逻辑,和危险所在.呵呵!
只要kernel部分程序写好了,不存在危险的.
EGui在kernel层,只有窗口管理的东西.内容不多.网络协议那么复杂都不存在问题.
所以你不必担心.

>>EGui client之间的通讯准备采用什么方法?
在图形这一块,client之间不需要通讯,
普通的两个程序之间的通讯,就和EGui机制没有任何关系了.
回复

使用道具 举报

发表于 2006-6-16 04:30:10 | 显示全部楼层
前段时间抽空看了看muddog的liteGUI,写得不错。
有这样的人加入EGui会是好事
回复

使用道具 举报

发表于 2006-6-16 08:24:14 | 显示全部楼层
是啊,难得的人才,muddog的加入让EGui有了更大的发展空间.
回复

使用道具 举报

 楼主| 发表于 2006-6-16 22:04:53 | 显示全部楼层
等我完整看完egui吧。
现在是不光自己有兴趣,公司现在也准备开发自己的桌面系统。基于Powerparts的。
目前还没开始。
还有哦,movewindow 你每次都要保存整个buffer?我没仔细看
回复

使用道具 举报

发表于 2006-6-16 22:38:26 | 显示全部楼层
当前movewindow操作不完善,没有rectangle clip部分。所以只能做保存的动作。
我正在解决这个问题。
回复

使用道具 举报

发表于 2006-6-20 14:09:57 | 显示全部楼层
很早就看过EGUI的代码,EGUI是保存整个窗口的Buf的。

如果不需要窗口透明的话,那就完全不需要Buf。
但如果需要窗口透明的话,那么有两种方法:
一是所以的窗口都保存Buf,不管该窗口需不需要透明支持。这样算法很简单,但太浪费内存。
二是只有需要透明支持的窗口才保存Buf,这样对内存的需求会下降,但会使算法复杂很多。

另外我有个问题就是,在窗口有Buf的情况下,窗口缩放时怎么办,重现分配Buf吗,会不会很慢,而且很容易出现内存不足的情况,尤其是在频繁改变窗口大小的情况下。
回复

使用道具 举报

发表于 2006-6-22 08:30:55 | 显示全部楼层
如果,你总频繁改变肯定需要重新分配. 消耗的内存不会太多.

5个1024 * 768 * 16 bpp的, 需要 7680k=7M.
但是一般不需要全屏.

关于窗口裁减的计算基本完成.

关于窗口的显示,和buf问题,我正在规划.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 12:25 , Processed in 0.038486 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表