On Oct 1, 2013, at 2:48 AM, Benjamin Dupont (bedupont) <[email protected]> 
wrote:

> Hi all,
>  
> I am currently working on the InbandTextTracks in webkit and I am trying to 
> understand how the memory is released.
>  
> When we launch the track-in-band.html layout test, two in-band text tracks 
> have been created and added, the corresponding RefPtr has a refCount equals 
> to three.
> 1. Why are there 3 owners for each in-band text track? Is there an hidden 
> cache mechanism?

The tracks are being referenced by the JavaScript running in the test page.

> After this test, if we load another page, the player is destroyed and the 
> clearTextTracks method is called.
> In my understanding, the player should be the only owner of in-band text 
> tracks and thus after the clearTextTracks method is called, the ref count 
> should be decreased to 0 and the in-band text track object should be deleted.

Your understanding is incorrect.  Each track is also referenced by the 
JSTextTrack wrapper created when referencing videoElement.textTracks[].  
Furthermore, those wrappers are stored off as variables inbandTrack{1,2,3,4} in 
the global context, so they won't be destroyed by GC until the window object is 
destroyed

> In fact, after the clearTextTracks method the ref count isn’t equals to 0 
> thus the in-band text track object isn’t deleted.
> This text track object is deleted when the clear memory cache is called.
>  
> 2. Is it a normal behavior? If yes, what is the interest to use smart pointer?

Yes.

> 3. How does the clear memory cache know that this ref pointer (with a ref 
> count != 0) can be released? 

This is precisely the point of using a smart pointer; since the track is still 
being referenced, it won't be deleted until that refcount drops to 0.

-Jer

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
webkit-dev mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-dev

Reply via email to