Gtk-minimo中的几个BUG

原创 2007年09月20日 21:06:00
Gtk-minimo中的几个BUG

转载时请注明出处和作者联系方式
作者联系方式:李先静 <xianjimli at hotmail dot com>

颜色不正常:背景颜色和字体颜色随机变化,一会儿蓝一会白,甚至有时全变白色了,什么都看不见。我怀疑是内存越界或者使用了没有初始化的变量。但是用valgrind运行时没有任何发现迹象。只好手工去调试了,先在draw_glyph中设置断点,发现gc的颜色值不正常,进行一步跟踪发现UpdateGC后颜色没有生效,最后发现是nsGCCache::ReuseGC出了问题。原来在ReuseGC里面对于GTK+/DirectFB的处理有误,导致entry->gc的内容没有正常更新。我看了一下,那些判断并不会提高性能,就直接调用了gdk_gc_set_values强制更新。之后颜色恢复正常。

void nsGCCache::ReuseGC(GCCacheEntry *entry, GdkGCValues *gcv, GdkGCValuesMask flags)

gdk_gc_set_values(entry
->gc, gcv, flags);


状态栏隐藏之后不消失。我们发现在gtk_moz_embed_size_allocate函数中的参数完全正常,gtk_moz_embed的大小已经调整过了,但它就是没有重绘界面。mozilla的排版有点复杂,决定先花了两天时间看view/layout/dom目录中的代码再说。在有了大致的了解之后,我断定是viewmanager处理paint事件有问题,后来证实是判断view可见性有误。根据注释的提示,去掉对ViewObserver可见性的判断,gtk_moz_embed就刷新正常了。

static PRBool IsViewVisible(nsView *aView)
...{
  
for (nsIView *view = aView; view; view = view->GetParent()) ...{
    
// We don't check widget visibility here because in the future (with
    
// the better approach to this that's in attachment 160801 on bug
    
// 227361), callers of the equivalent to this function should be able
    
// to rely on being notified when the result of this function changes.
    if (view->GetVisibility() == nsViewVisibility_kHide)
7      return PR_FALSE;
  }


  
return PR_TRUE;
 
  
// Find out if the root view is visible by asking the view observer
  
// (this won't be needed anymore if we link view trees across chrome /
  
// content boundaries in DocumentViewerImpl::MakeWindow).
  nsIViewObserver* vo = aView->GetViewManager()->GetViewObserver();
  
return vo && vo->IsVisible();
}

 ~~end~~
版权声明:本文为博主原创文章,未经博主允许不得转载。

bug生命周期的状态

从一个bug被发现到这个bug被关闭这一段时间,bug可能会有以下状态:new ,open Postpone,Pending Retest,Retest,Pending Reject,Reject,D...
  • guanning0109
  • guanning0109
  • 2014年08月27日 17:25
  • 4879

软件测试一般bug分类

测试用例首先来自于对于需求的分析,是否能为测试挑选最合适或最关键的需求,关系到项目的成败。思考方法1:正反面思考法为每个测试需求至少编制两个测试用例:正面测试用例& 负面测试用例正面测试用例:用于证明...
  • yelang_110
  • yelang_110
  • 2015年03月03日 09:50
  • 923

程序员永远不要再犯的5个编程bug

程序员永远不要再犯的5个编程bug   当你开始成为一个程序员的时候,在编程的时候很容易陷入下面所述的一些坏习惯。 作为一名程序员,犯错误不可避免,这是你学习编程课程中的...
  • nbxinjian
  • nbxinjian
  • 2016年07月11日 10:44
  • 2283

记录最近的几个bug

记录最近出的几个bugconnection reset by peer最近服务器经常性的出现connection reset by peer的错误,开始我们只是以为小概率的网络断开导致的,可是随着压力...
  • siddontang
  • siddontang
  • 2014年06月04日 16:55
  • 2031

几个BUG管理系统

以下简单介绍一下其功能优缺点和资源获取方式吧: 1.在线柠檬bug管理(www.lemonpm.com) 这是一个在线的BUG管理系统,不用配置,界面操作简单。以公司为单位进行注册,BUG...
  • gao_zhen_yu
  • gao_zhen_yu
  • 2015年02月27日 21:45
  • 439

bug生命周期的几个状态

BUG 生命周期中的各个状态 从一个bug被发现到这个bug被关闭这一段时间,bug可能会有以下状态:new ,open Postpone,Pending Retest,Retest,Pendin...
  • NitefullSand
  • NitefullSand
  • 2016年11月04日 07:00
  • 316

C语言strstr()函数常用示例详解[求一个字符串在另一个字符串中出现的次数]

1、使用do...while 循环示例程序如下:#include #include #include int main() { int ncount = 0; //初始化找到相同子串的次数...
  • y396397735
  • y396397735
  • 2015年09月13日 19:27
  • 3328

由于ndk引发的几个bug,以及解决方法

三个常见问题: 第一个:Set "android.useDeprecatedNdk=true" in gradle.properties to continue using the current N...
  • hansion3333
  • hansion3333
  • 2016年06月28日 11:28
  • 725

由于ndk引发的几个bug,以及解决方法

问题一: Error:(12, 0) Error: NDK integration is deprecated in the current plugin.   Consider trying the...
  • tyk9999tyk
  • tyk9999tyk
  • 2017年03月30日 17:03
  • 320

百度ueditor1.4.3几个bug修复

1.多图在线管理无法显示图片: 下载ueditor源码包,将jsp/src下的源码拷贝到web工程目录的src目录下,修改FileManger.java中的getPath(file)方法: pri...
  • mr_orange_klj
  • mr_orange_klj
  • 2017年01月03日 23:36
  • 1003
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Gtk-minimo中的几个BUG
举报原因:
原因补充:

(最多只允许输入30个字)