cairo draw_text и висячий указатель на размеченных строках?

Я пытаюсь использовать cairo для draw_text на экране, но инструмент Mac Os X говорит мне, что у меня есть повисшая причина указателя из-за pango_layout_get_pixel_size или pango_layout_get_baseline .. фактически первая функция, которая должна иметь PangoLines и сохранять их в переменной Layout. В каждом коде, показанном в документации и примере, вы просто должны g_object_unref(layout) в конце... но все же... эти указатели, выделенные itemized_state_init (внутри pango_layout_get_pixel_size для ex), не освобождаются.

Я делаю что-то неправильно?

double posX = somevalue;
double posY = somevalue;
cairo_save (CurCairoState);
PangoLayout *layout = pango_cairo_create_layout (CurCairoState);
pango_layout_set_text (layout, text, -1);
pango_layout_set_font_description (layout, curCairoContext->font);
int width, height;

pango_layout_get_pixel_size (layout, &width, &height);

int b = (int)(pango_layout_get_baseline (layout) / PANGO_SCALE);

/* applying alignment attribute */
switch (curCairoContext->textAnchor) {
case GMiddle:
   posX = posX - (width / 2.0);
   break;
case GEnd:
   posX = posX - width;
   break;
}

cairo_move_to (CurCairoState, posX, posY - b);
pango_cairo_show_layout (CurCairoState, layout);

g_object_unref (layout);
cairo_restore (CurCairoState);

и результат выделения в инструменте

Спасибо за любой ответ!

РЕДАКТИРОВАТЬ: вот новый скриншот после использования G_SLICE= всегда-malloc G_DEBUG=gc-friendly. То, что висячие указатели стали утечками для "инструмента"

РЕДАКТИРОВАТЬ (решение не найдено):

Я скачал исходники pango-1.40.3, скомпилировал его и установил его с моими собственными маркерами, и я не понимаю, почему у меня есть эти висячие указатели на MacOS, потому что я прохожу: pango_layout_finalize и pango_layout_clear_lines и layout- > ref_count = 0, когда я вызываю g_obejct_unref (layout)

0 ответов

Другие вопросы по тегам