QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 824|回复: 3

Linux 的窗口系统为什么这么慢?

[复制链接]
发表于 2003-6-27 16:14:44 | 显示全部楼层 |阅读模式
相信大家都有感觉吧?Linux的窗口系统比Windows慢了很多很多。那么,有没有人考虑过这是为什么的?希望大家探讨一下。
发表于 2003-6-27 18:21:10 | 显示全部楼层
没研究过qt,只说说gtk
从系统上来说gtk的窗口其实并不慢,但窗口里有滚动条时,滚动的操作是很慢的,原因是gtk默认使用doublebuffer,是用来防止在同一位置画多张图片时屏幕闪烁的,对于要做动画是很方便的。但影响速度,对于只画一张图片时,没有作用,因此编程时可以尝试关闭它。
一般的程序使用gtk默认的设置,滚动时只产生要新画部分的event,gtk自己处理图片向上移动的操作,估计也使用了doublebuffer,导致速度降低。
回复

使用道具 举报

发表于 2003-6-27 22:29:36 | 显示全部楼层
那怎么紧止??
回复

使用道具 举报

发表于 2003-6-28 22:05:17 | 显示全部楼层
gtk_widget_set_double_buffered ()
void        gtk_widget_set_double_buffered  (GtkWidget *widget,
                                             gboolean double_buffered);


Widgets are double buffered by default; you can use this function to turn off the buffering. "Double buffered" simply means that gdk_window_begin_paint_region() and gdk_window_end_paint() are called automatically around expose events sent to the widget. gdk_window_begin_paint() diverts all drawing to a widget's window to an offscreen buffer, and gdk_window_end_paint() draws the buffer to the screen. The result is that users see the window update in one smooth step, and don't see individual graphics primitives being rendered.

In very simple terms, double buffered widgets don't flicker, so you would only use this function to turn off double buffering if you had special needs and really knew what you were doing.



widget? a GtkWidget  
double_buffered? TRUE to double-buffer a widget
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-15 13:23 , Processed in 0.069674 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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