Doug Turner wrote:

> I think I take this statement back. I found a nice workaround.  I have 
> tested Sun's JRE against my changes and it seams to work fine.  (I am 
> using them because they use the service manager built against xpcom 
> around the time of netscape 6.0/6.1.  I could have just as easily used 
> another plugin).


I suspect you're just getting lucky.  If you want to preserve backwards 
compatibility you have to maintain the old names of the interfaces as 
part of the calls into the service manager since the names of the types 
are used in the name mangling in C++.  I would suggest just using 
nsIServiceManager and sticking big-ass warnings all over the header 
files that suggest using nsIServiceManager2.

( btw, I prefer numbers as opposed to Ex unless you expect the interface 
to never, ever change again. )

--Chris


> 
> 
> 
> Doug Turner wrote:
> 
>> I think that the only way to create a new interface while preserving 
>> backwards compatiblity is to not rename the existing class.  I just 
>> banged up against the problem that nsServiceManager has two functions 
>> which take nsIServiceManager interfaces.  I was planning to just 
>> rename these bests to nsIServiceManagerObsolete, but of course that 
>> would break everything.
>>
>> So, nsIServiceManger2 seams like the best thing to do.  After all it 
>> is only a name. :-)
>>
>> comments?
>>
>> Doug Turner wrote:
>>
>>> Okay, I have started on a new nsIServiceManager.
>>>
>>> The old stuff will still work, but it will be named 
>>> nsIServiceManagerObsolete.  The static class nsServiceManager will 
>>> still be supported, but it will call through to the new stuff.
>>>
>>> I will attach patches later this week.
>>
>>
>>
> 



-- 
------------
Christopher Blizzard
http://people.redhat.com/blizzard/
Mozilla.org - we're on a mission from God.  Still.
------------


Reply via email to