[Webkit-unassigned] [Bug 34912] audio engine: add ReverbConvolver class

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Mar 24 04:50:01 PDT 2010


https://bugs.webkit.org/show_bug.cgi?id=34912





--- Comment #26 from Jeremy Orlow <jorlow at chromium.org>  2010-03-24 04:50:01 PST ---
(In reply to comment #23)
> (In reply to comment #21)
> > (In reply to comment #19)
> > > Hi Jeremy, I've addressed most of your comments.  Here are my comments about
> > > the others:
> > > 
> > > >Always use ___Ptr's as member and automatic/local variables.  Use Pass___Ptr's
> > > >as method parameters and return values.  You might want to re-read the
> > > >PassRefPtr doc (just google that word) if you don't understand why.
> > > 
> > > I've found that this can work with RefPtr, but not with OwnPtr (won't compile).
> > >  It looks like in the case of OwnPtr, it's not reference counted and you can't
> > > assign from one OwnPtr to another.  The current code does the right thing, but
> > > another option is to just forget the PassOwnPtr and use a straight pointer as
> > > the local variable.  It gets appended to a Vector<OwnPtr<> > so the memory
> > > management is handled.
> > 
> > The point of the OwnPtr is that it'll get deleted if you go out of scope.  I
> > don't know what you're doing wrong here, but there are a LOT of examples in the
> > code of how to do this properly.  Make sure you have PassOwnPtr.h included in
> > the file.  It should know how to convert stuff from an OwnPtr to a PassOwnPtr.
> 
> I had Dimitri take a look and he's pretty sure it's not possible to do this in
> this particular case.  I've created a simple test case to illustrate how this
> won't compile:
> 
> //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> class Test {
> public:
>     Test() { printf("%p: Test::Test()\n", this); }
>     ~Test() { printf("%p: Test::~Test()\n", this); }
> };
> 
> Vector<OwnPtr<Test> > testList;
> 
> void test()
> {
>     OwnPtr<Test> p(new Test());  // <------------ WON'T COMPILE
>     testList.append(p);
> }
> 
> //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> If you change the test() function to be:
> 
> void test()
> {
>     Test* p = new Test(); // < ---- WILL COMPILE
>     testList.append(p);
> }
> 
> Then it *will* compile.  The issue is that you cannot assign from one OwnPtr to
> another OwnPtr, and this is what is happening when you call the append()
> method.  Please have a close look at the exact usage in my code - thanks.

I see.  I guess you'd have to convert to a PassOwnPtr in the middle.

Ok, well I guess the original way you did it is good then.  Sorry for sending
you on a run-around like this.

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list