gdk drawing clip issue with directfb backend

I am happy to fix one bug today, and it is caused by gdk drawing with directfb backend.

The issue is that there is one pixel width line on the right and bottom edge. Here is one screen shot(http://hi.csdn.net/space-2464555-do-album-picid-483016.html).

I was not sure about it, and I doubted first that I make the wrong clip region. But it was proved that clip was right. After more study, I found the issue was caused by gdk drawing. When it clears the area which to be redraw, it invokes IDirectFBSurface::SetClip() with one DFBRegion. But the region size is larger one pixel both in width and in height.

in gdk/directfb/gdkdrawable-directfb.c, gtk+-2.13.0 (there is same issue in latest version 2.18)
gdk_directfb_draw_rectangle (GdkDrawable *drawable,
        GdkGC       *gc,
        gint         filled,
        gint         x,
        gint         y,
        gint         width,
        gint         height)
{

    ..........
          for (i = 0; i < clip.numRects; i++)
          {
              DFBRegion reg = { clip.rects[i].x1,     clip.rects[i].y1,
                  clip.rects[i].x2 , clip.rects[i].y2 };                /// this is not right in size

              impl->surface->SetClip (impl->surface, &reg);
              impl->surface->TileBlit (impl->surface, surface, NULL, x, y);
          }
    .............
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值