Bug 848423 - Change nearly all WebRTC instances of linked_ptr<> to nsRefPtr<> r=ehugg

This commit is contained in:
Adam Roach [:abr] 2013-03-06 12:40:48 -06:00
Родитель e6e9c81569
Коммит 10719559ea
36 изменённых файлов: 110 добавлений и 59 удалений

Просмотреть файл

@ -6,6 +6,7 @@
#include "CC_Common.h"
#include "ECC_Types.h"
#include "mozilla/RefPtr.h"
extern "C"
{
@ -16,6 +17,9 @@ namespace CSF
{
class ECC_API CC_Call
{
public:
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(CC_Call)
protected:
CC_Call () { }
@ -285,6 +289,7 @@ namespace CSF
virtual const std::string& getPeerConnection() const = 0;
virtual void addICECandidate(const std::string & candidate, const std::string & mid, unsigned short level) = 0;
};
}

Просмотреть файл

@ -20,6 +20,8 @@ namespace CSF
class ECC_API CC_CallInfo
{
public:
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(CC_CallInfo)
protected:
CC_CallInfo() { }

Просмотреть файл

@ -17,6 +17,8 @@ namespace CSF
{
class ECC_API CC_CallServerInfo
{
public:
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(CC_CallServerInfo)
protected:
CC_CallServerInfo() { }

Просмотреть файл

@ -18,17 +18,17 @@
namespace CSF
{
DECLARE_PTR(CallControlManager)
DECLARE_PTR_VECTOR(PhoneDetails)
DECLARE_PTR(CC_Service)
DECLARE_PTR(VideoControl)
DECLARE_PTR(AudioControl)
DECLARE_PTR_VECTOR(CC_Device)
DECLARE_PTR(CC_DeviceInfo)
DECLARE_PTR(CC_CallServerInfo)
DECLARE_PTR(CC_FeatureInfo)
DECLARE_PTR_VECTOR(CC_Line)
DECLARE_PTR(CC_LineInfo)
DECLARE_PTR_VECTOR(CC_Call)
DECLARE_PTR(CC_CallInfo)
DECLARE_NS_PTR(CallControlManager)
DECLARE_NS_PTR_VECTOR(PhoneDetails)
DECLARE_NS_PTR(CC_Service)
DECLARE_NS_PTR(VideoControl)
DECLARE_NS_PTR(AudioControl)
DECLARE_NS_PTR_VECTOR(CC_Device)
DECLARE_NS_PTR(CC_DeviceInfo)
DECLARE_NS_PTR(CC_CallServerInfo)
DECLARE_NS_PTR(CC_FeatureInfo)
DECLARE_NS_PTR_VECTOR(CC_Line)
DECLARE_NS_PTR(CC_LineInfo)
DECLARE_NS_PTR_VECTOR(CC_Call)
DECLARE_NS_PTR(CC_CallInfo)
}

Просмотреть файл

@ -16,6 +16,8 @@ namespace CSF
class ECC_API CC_Device
{
public:
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(CC_Device)
protected:
CC_Device() {}

Просмотреть файл

@ -17,6 +17,8 @@ namespace CSF
{
class ECC_API CC_DeviceInfo
{
public:
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(CC_DeviceInfo)
protected:
CC_DeviceInfo() { }

Просмотреть файл

@ -15,6 +15,8 @@ namespace CSF
{
class ECC_API CC_FeatureInfo
{
public:
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(CC_FeatureInfo)
protected:
CC_FeatureInfo() { }

Просмотреть файл

@ -15,6 +15,8 @@ namespace CSF
{
class ECC_API CC_Line
{
public:
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(CC_Line)
protected:
CC_Line () { }

Просмотреть файл

@ -18,6 +18,8 @@ namespace CSF
{
class ECC_API CC_LineInfo
{
public:
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(CC_LineInfo)
protected:
CC_LineInfo() { }

Просмотреть файл

@ -19,6 +19,8 @@ namespace CSF
{
class ECC_API CC_Service
{
public:
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(CC_Service)
protected:
CC_Service() {}
public:

Просмотреть файл

@ -8,10 +8,11 @@
namespace CSF
{
DECLARE_PTR(AudioControl);
DECLARE_NS_PTR(AudioControl)
class ECC_API AudioControl
{
public:
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(AudioControl)
// device names are in UTF-8 encoding
virtual std::vector<std::string> getRecordingDevices() = 0;

Просмотреть файл

@ -12,10 +12,11 @@
namespace CSF
{
DECLARE_PTR(VideoControl);
DECLARE_NS_PTR(VideoControl)
class ECC_API VideoControl
{
public:
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(VideoControl)
virtual ~VideoControl() {};
virtual void setVideoMode( bool enable ) = 0;

Просмотреть файл

@ -34,7 +34,7 @@
namespace CSF
{
DECLARE_PTR(CallControlManager)
DECLARE_NS_PTR(CallControlManager)
/**
* CallControlManager
*
@ -48,6 +48,7 @@ namespace CSF
class ECC_API CallControlManager
{
public:
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(CallControlManager)
/**
* Use create() to create a CallControlManager instance.
*

Просмотреть файл

@ -11,10 +11,11 @@
namespace CSF
{
DECLARE_PTR_VECTOR(PhoneDetails);
DECLARE_NS_PTR_VECTOR(PhoneDetails);
class ECC_API PhoneDetails
{
public:
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(PhoneDetails)
virtual ~PhoneDetails() {}
/**
* Get the device name (the CUCM device name) and the free text description.

Просмотреть файл

@ -6,6 +6,7 @@
#include <vector>
#include "base/linked_ptr.h"
#include "nsAutoPtr.h"
#ifndef DECLARE_PTR
#define DECLARE_PTR(className)\
@ -25,3 +26,19 @@
#ifndef NULL_PTR
#define NULL_PTR(className) linked_ptr<className>()
#endif
// NSPR Variations of the above, to help with migration
// from linked_ptr to nsRefPtr
#ifndef DECLARE_NS_PTR
#define DECLARE_NS_PTR(className)\
class className;\
typedef nsRefPtr<className> className##Ptr;
#endif
#ifndef DECLARE_NS_PTR_VECTOR
#define DECLARE_NS_PTR_VECTOR(className)\
DECLARE_NS_PTR(className)\
typedef std::vector<className##Ptr> className##Vtr;\
typedef linked_ptr<className##Vtr> className##Vtr##Ptr;
#endif

Просмотреть файл

@ -234,8 +234,8 @@ bool CallControlManagerImpl::disconnect()
phone->removeCCObserver(this);
phone->stop();
phone->destroy();
phone.reset();
softPhone.reset();
phone = nullptr;
softPhone = nullptr;
return true;
}
@ -275,7 +275,7 @@ PhoneDetailsVtrPtr CallControlManagerImpl::getAvailablePhoneDetails()
PhoneDetailsVtrPtr result = PhoneDetailsVtrPtr(new PhoneDetailsVtr());
for(PhoneDetailsMap::iterator it = phoneDetailsMap.begin(); it != phoneDetailsMap.end(); it++)
{
PhoneDetailsPtr details = it->second;
PhoneDetailsPtr details = it->second.get();
result->push_back(details);
}
return result;
@ -286,7 +286,7 @@ PhoneDetailsPtr CallControlManagerImpl::getAvailablePhoneDetails(const std::stri
PhoneDetailsMap::iterator it = phoneDetailsMap.find(deviceName);
if(it != phoneDetailsMap.end())
{
return it->second;
return it->second.get();
}
return PhoneDetailsPtr();
}

Просмотреть файл

@ -8,7 +8,7 @@
namespace CSF
{
DECLARE_PTR(PhoneDetailsImpl);
DECLARE_NS_PTR(PhoneDetailsImpl);
class PhoneDetailsImpl: public PhoneDetails
{
public:

Просмотреть файл

@ -9,7 +9,7 @@
namespace CSF
{
DECLARE_PTR(AudioControlWrapper);
DECLARE_NS_PTR(AudioControlWrapper)
class ECC_API AudioControlWrapper : public AudioControl
{
public:

Просмотреть файл

@ -15,9 +15,9 @@
namespace CSF
{
DECLARE_NS_PTR(VideoControlWrapper)
typedef void *VideoWindowHandle;
DECLARE_PTR(VideoControlWrapper);
class ECC_API VideoControlWrapper : public VideoControl
{
public:

Просмотреть файл

@ -10,8 +10,13 @@
#include "mozilla/Attributes.h"
#include "CallControlManager.h"
#include "CC_Device.h"
#include "CC_DeviceInfo.h"
#include "CC_Call.h"
#include "CC_CallInfo.h"
#include "CC_Line.h"
#include "CC_LineInfo.h"
#include "CC_Observer.h"
#include "CC_FeatureInfo.h"
#include "StaticPtr.h"
#include "PeerConnectionImpl.h"

Просмотреть файл

@ -126,7 +126,7 @@ CC_CallInfoPtr CC_SIPCCCall::getCallInfo ()
cc_callinfo_ref_t callInfo = CCAPI_Call_getCallInfo(callHandle);
CC_SIPCCCallInfoPtr callInfoPtr = CC_SIPCCCallInfo::wrap(callInfo);
callInfoPtr->setMediaData( pMediaData);
return callInfoPtr;
return callInfoPtr.get();
}

Просмотреть файл

@ -23,11 +23,12 @@ namespace CSF
};
typedef std::map<int, StreamInfo> StreamMapType;
DECLARE_PTR(CC_SIPCCCallMediaData);
DECLARE_NS_PTR(CC_SIPCCCallMediaData);
class CC_SIPCCCallMediaData
{
public:
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(CC_SipCCCAllMediaData)
CC_SIPCCCallMediaData():
remoteWindow(NULL),
streamMapMutex("CC_SIPCCCallMediaData"),
@ -54,7 +55,7 @@ namespace CSF
CC_SIPCCCallMediaData& operator=(const CC_SIPCCCallMediaData&);
};
DECLARE_PTR(CC_SIPCCCall);
DECLARE_NS_PTR(CC_SIPCCCall);
class CC_SIPCCCall : public CC_Call
{

Просмотреть файл

@ -286,7 +286,7 @@ string CC_SIPCCCallInfo::getAlternateNumber()
CC_LinePtr CC_SIPCCCallInfo::getline ()
{
cc_lineid_t lineId = CCAPI_CallInfo_getLine(callinfo_ref);
return CC_SIPCCLine::wrap(lineId);
return CC_SIPCCLine::wrap(lineId).get();
}
string CC_SIPCCCallInfo::getOriginalCalledPartyName()

Просмотреть файл

@ -18,7 +18,7 @@ extern "C" {
namespace CSF
{
DECLARE_PTR(CC_SIPCCCallInfo);
DECLARE_NS_PTR(CC_SIPCCCallInfo);
class CC_SIPCCCallInfo : public CC_CallInfo
{

Просмотреть файл

@ -11,7 +11,7 @@
namespace CSF
{
DECLARE_PTR(CC_SIPCCCallServerInfo);
DECLARE_NS_PTR(CC_SIPCCCallServerInfo);
class CC_SIPCCCallServerInfo : public CC_CallServerInfo
{
private:

Просмотреть файл

@ -31,7 +31,7 @@ CC_DevicePtr CC_SIPCCDevice::createDevice ()
CC_SIPCCDevicePtr pSIPCCDevice = CC_SIPCCDevice::wrap(deviceHandle);
return pSIPCCDevice;
return pSIPCCDevice.get();
}
CC_SIPCCDevice::CC_SIPCCDevice (cc_device_handle_t aDeviceHandle)
@ -44,7 +44,8 @@ CC_SIPCCDevice::CC_SIPCCDevice (cc_device_handle_t aDeviceHandle)
CC_DeviceInfoPtr CC_SIPCCDevice::getDeviceInfo ()
{
cc_deviceinfo_ref_t deviceInfoRef = CCAPI_Device_getDeviceInfo(deviceHandle);
CC_DeviceInfoPtr deviceInfoPtr = CC_SIPCCDeviceInfo::wrap(deviceInfoRef);
CC_DeviceInfoPtr deviceInfoPtr =
CC_SIPCCDeviceInfo::wrap(deviceInfoRef).get();
//A call to CCAPI_Device_getDeviceInfo() needs a matching call to CCAPI_Device_releaseDeviceInfo()
//However, the CC_SIPCCDeviceInfo() ctor/dtor does a retain/release internally, so I need to explicitly release
@ -73,7 +74,7 @@ CC_CallPtr CC_SIPCCDevice::createCall ()
{
cc_call_handle_t callHandle = CCAPI_Device_CreateCall(deviceHandle);
return CC_SIPCCCall::wrap(callHandle);
return CC_SIPCCCall::wrap(callHandle).get();
}
void CC_SIPCCDevice::enableVideo(bool enable)

Просмотреть файл

@ -11,7 +11,7 @@
namespace CSF
{
DECLARE_PTR(CC_SIPCCDevice);
DECLARE_NS_PTR(CC_SIPCCDevice);
class CC_SIPCCDevice : public CC_Device
{
private:

Просмотреть файл

@ -59,7 +59,7 @@ vector<CC_CallPtr> CC_SIPCCDeviceInfo::getCalls ()
for (int i=0; i<numHandles; i++)
{
CC_CallPtr callPtr = CC_SIPCCCall::wrap(handles[i]);
CC_CallPtr callPtr = CC_SIPCCCall::wrap(handles[i]).get();
callsVector.push_back(callPtr);
}
@ -77,7 +77,7 @@ vector<CC_LinePtr> CC_SIPCCDeviceInfo::getLines ()
for (int i=0; i<numLines; i++)
{
CC_LinePtr linePtr = CC_SIPCCLine::wrap(lines[i]);
CC_LinePtr linePtr = CC_SIPCCLine::wrap(lines[i]).get();
linesVector.push_back(linePtr);
}
@ -95,7 +95,8 @@ vector<CC_FeatureInfoPtr> CC_SIPCCDeviceInfo::getFeatures ()
for (int i=0; i<numFeatureInfos; i++)
{
CC_FeatureInfoPtr featurePtr = CC_SIPCCFeatureInfo::wrap(features[i]);
CC_FeatureInfoPtr featurePtr =
CC_SIPCCFeatureInfo::wrap(features[i]).get();
featuresVector.push_back(featurePtr);
}
@ -113,7 +114,8 @@ vector<CC_CallServerInfoPtr> CC_SIPCCDeviceInfo::getCallServers ()
for (int i=0; i<numCallServerInfos; i++)
{
CC_CallServerInfoPtr callServerPtr = CC_SIPCCCallServerInfo::wrap(callServers[i]);
CC_CallServerInfoPtr callServerPtr =
CC_SIPCCCallServerInfo::wrap(callServers[i]).get();
callServersVector.push_back(callServerPtr);
}

Просмотреть файл

@ -11,7 +11,7 @@
namespace CSF
{
DECLARE_PTR(CC_SIPCCDeviceInfo);
DECLARE_NS_PTR(CC_SIPCCDeviceInfo);
class CC_SIPCCDeviceInfo : public CC_DeviceInfo
{
private:

Просмотреть файл

@ -11,7 +11,7 @@
namespace CSF
{
DECLARE_PTR(CC_SIPCCFeatureInfo);
DECLARE_NS_PTR(CC_SIPCCFeatureInfo);
class CC_SIPCCFeatureInfo : public CC_FeatureInfo
{
private:

Просмотреть файл

@ -29,7 +29,7 @@ cc_lineid_t CC_SIPCCLine::getID()
CC_LineInfoPtr CC_SIPCCLine::getLineInfo ()
{
cc_lineinfo_ref_t lineInfoRef = CCAPI_Line_getLineInfo(lineId);
CC_LineInfoPtr lineInfoPtr = CC_SIPCCLineInfo::wrap(lineInfoRef);
CC_LineInfoPtr lineInfoPtr = CC_SIPCCLineInfo::wrap(lineInfoRef).get();
//A call to CCAPI_Line_getLineInfo() needs a matching call to CCAPI_Line_releaseLineInfo()
//However, the CC_SIPCCLineInfo() ctor/dtor does a retain/release internally, so I need to explicitly release
@ -49,7 +49,7 @@ CC_CallPtr CC_SIPCCLine::createCall ()
{
cc_call_handle_t callHandle = CCAPI_Line_CreateCall(lineId);
return CC_SIPCCCall::wrap(callHandle);
return CC_SIPCCCall::wrap(callHandle).get();
}

Просмотреть файл

@ -13,7 +13,7 @@
namespace CSF
{
DECLARE_PTR(CC_SIPCCLine);
DECLARE_NS_PTR(CC_SIPCCLine);
class CC_SIPCCLine : public CC_Line
{
private:

Просмотреть файл

@ -104,7 +104,7 @@ vector<CC_CallPtr> CC_SIPCCLineInfo::getCalls (CC_LinePtr linePtr)
for (int i=0; i<numCalls; i++)
{
CC_CallPtr callPtr = CC_SIPCCCall::wrap(handles[i]);
CC_CallPtr callPtr = CC_SIPCCCall::wrap(handles[i]).get();
callsVector.push_back(callPtr);
}
@ -122,7 +122,7 @@ vector<CC_CallPtr> CC_SIPCCLineInfo::getCallsByState (CC_LinePtr linePtr, cc_cal
for (int i=0; i<numCalls; i++)
{
CC_CallPtr callPtr = CC_SIPCCCall::wrap(handles[i]);
CC_CallPtr callPtr = CC_SIPCCCall::wrap(handles[i]).get();
callsVector.push_back(callPtr);
}

Просмотреть файл

@ -11,7 +11,7 @@
namespace CSF
{
DECLARE_PTR(CC_SIPCCLineInfo);
DECLARE_NS_PTR(CC_SIPCCLineInfo);
class CC_SIPCCLineInfo : public CC_LineInfo
{
public:

Просмотреть файл

@ -480,7 +480,7 @@ bool CC_SIPCCService::isStarted()
// method are not safe except from ccapp_thread.
CC_DevicePtr CC_SIPCCService::getActiveDevice()
{
return CC_SIPCCDevice::wrap(CCAPI_Device_getDeviceID());
return CC_SIPCCDevice::wrap(CCAPI_Device_getDeviceID()).get();
}
// !!! Note that accessing *Ptr instances from multiple threads can
@ -493,7 +493,7 @@ vector<CC_DevicePtr> CC_SIPCCService::getDevices()
CC_SIPCCDevicePtr pDevice = CC_SIPCCDevice::wrap(CCAPI_Device_getDeviceID());
if(pDevice != NULL)
{
devices.push_back(pDevice);
devices.push_back(pDevice.get());
}
return devices;
@ -506,12 +506,12 @@ AudioControlPtr CC_SIPCCService::getAudioControl ()
{
if(audioControlWrapper != NULL)
{
return audioControlWrapper;
return audioControlWrapper.get();
}
else
{
audioControlWrapper = AudioControlWrapperPtr(new AudioControlWrapper(VcmSIPCCBinding::getAudioControl()));
return audioControlWrapper;
return audioControlWrapper.get();
}
}
@ -522,12 +522,12 @@ VideoControlPtr CC_SIPCCService::getVideoControl ()
{
if(videoControlWrapper != NULL)
{
return videoControlWrapper;
return videoControlWrapper.get();
}
else
{
videoControlWrapper = VideoControlWrapperPtr(new VideoControlWrapper(VcmSIPCCBinding::getVideoControl()));
return videoControlWrapper;
return videoControlWrapper.get();
}
}
@ -626,7 +626,7 @@ void CC_SIPCCService::onDeviceEvent(ccapi_device_event_e type, cc_device_handle_
device_event_getname(type),
devicePtr->toString().c_str(),
infoPtr->getDeviceName().c_str());
_self->notifyDeviceEventObservers(type, devicePtr, infoPtr);
_self->notifyDeviceEventObservers(type, devicePtr.get(), infoPtr.get());
}
void CC_SIPCCService::onFeatureEvent(ccapi_device_event_e type, cc_deviceinfo_ref_t /* device_info */, cc_featureinfo_ref_t feature_info)
@ -641,14 +641,14 @@ void CC_SIPCCService::onFeatureEvent(ccapi_device_event_e type, cc_deviceinfo_re
mozilla::MutexAutoLock lock(_self->m_lock);
cc_device_handle_t hDevice = CCAPI_Device_getDeviceID();
CC_DevicePtr devicePtr = CC_SIPCCDevice::wrap(hDevice);
CC_DevicePtr devicePtr = CC_SIPCCDevice::wrap(hDevice).get();
if (devicePtr == NULL)
{
CSFLogError( logTag, "Unable to notify device observers for device handle (%u), as failed to create CC_DevicePtr", hDevice);
return;
}
CC_FeatureInfoPtr infoPtr = CC_SIPCCFeatureInfo::wrap(feature_info);
CC_FeatureInfoPtr infoPtr = CC_SIPCCFeatureInfo::wrap(feature_info).get();
if (infoPtr == NULL)
{
CSFLogError( logTag, "Unable to notify call observers for feature info handle (%u), as failed to create CC_FeatureInfoPtr", feature_info);
@ -672,14 +672,14 @@ void CC_SIPCCService::onLineEvent(ccapi_line_event_e eventType, cc_lineid_t line
mozilla::MutexAutoLock lock(_self->m_lock);
CC_LinePtr linePtr = CC_SIPCCLine::wrap(line);
CC_LinePtr linePtr = CC_SIPCCLine::wrap(line).get();
if (linePtr == NULL)
{
CSFLogError( logTag, "Unable to notify line observers for line lineId (%u), as failed to create CC_LinePtr", line);
return;
}
CC_LineInfoPtr infoPtr = CC_SIPCCLineInfo::wrap(info);
CC_LineInfoPtr infoPtr = CC_SIPCCLineInfo::wrap(info).get();
if (infoPtr == NULL)
{
CSFLogError( logTag, "Unable to notify line observers for line lineId (%u), as failed to create CC_LineInfoPtr", line);
@ -722,7 +722,7 @@ void CC_SIPCCService::onCallEvent(ccapi_call_event_e eventType, cc_call_handle_t
CSFLogInfo( logTag, "onCallEvent(%s, %s, [%s|%s]",
call_event_getname(eventType), callPtr->toString().c_str(),
call_state_getname(infoPtr->getCallState()), CC_CallCapabilityEnum::toString(capSet).c_str());
_self->notifyCallEventObservers(eventType, callPtr, infoPtr);
_self->notifyCallEventObservers(eventType, callPtr.get(), infoPtr.get());
}
void CC_SIPCCService::addCCObserver ( CC_Observer * observer )

Просмотреть файл

@ -33,7 +33,7 @@ extern "C" {
namespace CSF
{
class PhoneConfig;
DECLARE_PTR(CC_SIPCCService);
DECLARE_NS_PTR(CC_SIPCCService);
class CC_SIPCCService : public CC_Service, public StreamObserver, public MediaProviderObserver
{