2012-09-11 6 views
0

우분투 12.04에서 Mono + GTK # + Cairo + Pango를 사용 중이므로 Pango.Layout 개체를 사용할 때 메모리 누수가 발생했습니다.GTK # + Cairo + Pango의 메모리 누수

약 30fps의 프레임 속도로 일부 애니메이션을 그려 내 메모리가 증가합니다. 나는 많은 코드를 제거하고 여기에 남아있는 것입니다 : 메모리가 안정적으로 유지하지만, 약 10,000 초당에 대한 증가 명확하게 받아 들일되는 Pango.CairoHelper.CreateLayout 호출하지 않고

void OnDraw(DrawingArea area) 
{ 
    Cairo.Context context = Gdk.CairoHelper.Create(area.GdkWindow); 

    using (var lay = Pango.CairoHelper.CreateLayout(context)) 
    { 
     // Nothing. 
    } 

    ((IDisposable) context.Target).Dispose(); 
    ((IDisposable) context).Dispose(); 
} 

.

내가 잘못하고있는 것이 있습니까? 모노 + GTK # + 카이로 + 판고 제작 준비가 되었습니까?

Mono version : 2.10.8.1-1ubuntu2.2 
GTK# version : 2.12.10-2ubuntu4 
Pango version : 1.30.0-0ubuntu3.1 
uname : Linux ######-VirtualBox 3.2.0-29-generic-pae #46-Ubuntu SMP Fri Jul 27 17:25:43 UTC 2012 i686 i686 i386 GNU/Linux 

답변

0

AFAIK에는 아직 발표되지 않은 Gtk # 바인딩의 일부 수정 사항이 있습니다. 예 : this memory leak fix.

그래서 내가 너라면, 나는 먼저 the gtk-sharp upstream version of the 2.12 branch을 시도 할 것이다. 그래도 작동하지 않는다면 메모리 누수를 직접 발견하고 수정 사항을 제안 할 수 있습니까? 감사.

+0

'Pango.CairoHelper.CreateLayout'을 한 번만 호출하고 내 장면을 그릴 때마다'Pango.CairoHelper.UpdateLayout'을 호출하여 문제를 해결했습니다. – gburri