I think I understand your description, but I'm surprised that each skin
instance doesn't have its own ScrollableStageText.  I would think only the
StageText instances are pooled.  It seems ok to use removeFromStage to cut
any references between the StageText and the ScrollableStageText since a
Skin not on the display list has no need for a StageText.

I think you also have the option of making the back referencing pool a
weak reference dictionary.

-Alex

On 4/22/14 10:31 AM, "Maurice Amsellem" <maurice.amsel...@systar.com>
wrote:

>>When I look at SkinnableTextBase.partAdded it looks like it is adding a
>>listener to the 'textDisplay'.  I assume that 'textDisplay' isn't a
>>StageText in a pool.  If that's true, >the SkinnableTextBase.as is
>>correct.
> >I would expect that 'textDisplay' is a StageTextInputSkin and
>internally it should be adding weak reference listeners to the actual
>StageText's in the pool.  Or are those >bad assumptions?
>
>It's a little trickier than that, because StageText itself is wrapped in
>a ScrollableStageText (or StyleableStageText depending on the skin)
>
>So SkinnableTextBase.textDisplay is the ScrollableStageText which is a
>(pooled) wrapper around StageText.
>
>And the pool has two static dictionaries ( SST => ST and ST => SST).
>
>So seeting the listeners on the SST locks the TI, because the SST are
>also referenced in the pool dictionary.
>
>Makes sense to you?
>
>Maurice 
>
>-----Message d'origine-----
>De : Alex Harui [mailto:aha...@adobe.com]
>Envoyé : mardi 22 avril 2014 19:20
>À : dev@flex.apache.org
>Objet : Re: Question about mobile StageText pool
>
>
>
>On 4/22/14 10:07 AM, "Maurice Amsellem" <maurice.amsel...@systar.com>
>wrote:
>
>>>so detaching skins does not have to be part of the lifecycle.
>>I agree with that, that's why I was asking about removing listeners,
>>rather than detaching skins.  Is that the same ?
>>IOW, do you mean that explicitly removing listeners from the skin to
>>the component shouldn't be part of the component lifecycle, and all
>>rely on GC ?
>Either way, there is no good event/trigger to use to know when to remove
>listeners or detach skins so I would not make it part of the lifecycle.
>
>>
>>> Isn't the solution as simple as using weak reference listeners to the
>>>stagetext events?
>>Yes, it's probably that simple ( I have to check yet).
>>But the events are not set in the skins, they are set in the component
>>(SkinnableTextBase.partAdded / partRemoved).
>>So doing it that way bothers me because the component is not supposed
>>to know about the internals of the skins (pooling , or whatever).
>>So setting weak listeners in the component because we KNOW that the
>>skin is using a pool defeats that principle.
>>
>>But maybe I am too "purist" ;-)
>When I look at SkinnableTextBase.partAdded it looks like it is adding a
>listener to the 'textDisplay'.  I assume that 'textDisplay' isn't a
>StageText in a pool.  If that's true, the SkinnableTextBase.as is correct.
> I would expect that 'textDisplay' is a StageTextInputSkin and internally
>it should be adding weak reference listeners to the actual StageText's in
>the pool.  Or are those bad assumptions?
>
>-Alex
>>
>

Reply via email to