PangAttrShape destroy func firing unexepctedly
- From: Travis Griggs <travisgriggs gmail com>
- To: pango maillist <gtk-i18n-list gnome org>
- Subject: PangAttrShape destroy func firing unexepctedly
- Date: Tue, 7 Sep 2010 22:50:38 -0700
On Sep 7, 2010, at 6:23 PM, Travis Griggs wrote:
What My Binding Ended up Looking Like (for now)
With Behdad's and Tony's direction, I established a single shape
renderer for any Context I create a binding for in Smalltalk. When
I'm creating the attribute, I do it with the two rectangles, and
with a Block Closure. Block Closures are Smalltalk arbitrary
functions, that close over any current values needed for the
function. So I get both data and behavior all in one, a lot, or a
little. I keep a table on the Smalltalk side, which maps Smalltalk
blocks, to an arbitrary incrementing counter. The index, is what I
stuff in the data of the attribute. So when I get the callback, I
fetch the Smalltalk block associated with the particular attribute's
data key, execute the block with the mapped arguments. Works pretty
well.
Or maybe it doesn't work so well. It works well as long as I don't try
to clean out said table.
If I do the following pseudo code:
attList = pango_attr_list_new();
attribute = pango_attr_shape_new_with_data( rect1, rect2, aNumber,
null, aDestoryFunc );
pango_attr_list_insert( attList, attribute );
layout = pango_layout_new(context);
pango_layout_set_attributes( layout, attList );
pango_cairo_show_layout( cr, layout );
Something weird happens. aDestroyFunc happens sometime after I do the
show_layout. Which is weird (and currently undesirable) to me. I've
been grousing around the pango source, haven't seen where it's
happening yet. I know that after the show, the attList still has a ref
count of 2 (one from me creating it, and the other from the layout),
so it's not destroying it there. I must be missing part of the memory
management model here, any help much appreciated, trying to get this
stuff figured out so I can give glowing reports when talking about
binding to it next week at ESUG.
TIA
--
Travis Griggs
tgriggs cincom com
"The dissenter is every human being at those moments of his life when
he resigns momentarily from the herd and thinks for himself." -
Archibald MacLeish, poet and librarian
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]