Fix leaks in the xlib port (and some problems exposed by fixing those leaks). b=64534, 64767 r=blizzard@mozilla.org (Not part of the build.)
git-svn-id: svn://10.0.0.236/trunk@84694 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -79,7 +79,27 @@ nsTimerXlib::~nsTimerXlib()
|
||||
NS_IF_RELEASE(mCallback);
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS(nsTimerXlib, kITimerIID)
|
||||
/*static*/ void nsTimerXlib::Shutdown()
|
||||
{
|
||||
delete nsTimerXlib::gHighestList;
|
||||
nsTimerXlib::gHighestList = nsnull;
|
||||
|
||||
delete nsTimerXlib::gHighList;
|
||||
nsTimerXlib::gHighList = nsnull;
|
||||
|
||||
delete nsTimerXlib::gNormalList;
|
||||
nsTimerXlib::gNormalList = nsnull;
|
||||
|
||||
delete nsTimerXlib::gLowList;
|
||||
nsTimerXlib::gLowList = nsnull;
|
||||
|
||||
delete nsTimerXlib::gLowestList;
|
||||
nsTimerXlib::gLowestList = nsnull;
|
||||
|
||||
nsTimerXlib::gTimeoutAdded = PR_FALSE;
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS1(nsTimerXlib, nsITimer)
|
||||
|
||||
nsresult
|
||||
nsTimerXlib::Init(nsTimerCallbackFunc aFunc,
|
||||
@@ -90,7 +110,6 @@ nsTimerXlib::Init(nsTimerCallbackFunc aFunc,
|
||||
{
|
||||
mFunc = aFunc;
|
||||
mClosure = aClosure;
|
||||
mPriority = aPriority;
|
||||
mType = aType;
|
||||
return Init(aDelay, aPriority);
|
||||
}
|
||||
@@ -116,6 +135,7 @@ nsTimerXlib::Init(PRUint32 aDelay, PRUint32 aPriority)
|
||||
#endif
|
||||
|
||||
mDelay = aDelay;
|
||||
mPriority = aPriority;
|
||||
// get the cuurent time
|
||||
|
||||
gettimeofday(&Now, NULL);
|
||||
@@ -162,9 +182,6 @@ nsTimerXlib::Init(PRUint32 aDelay, PRUint32 aPriority)
|
||||
break;
|
||||
}
|
||||
|
||||
//FIXME Do we need this????
|
||||
NS_ADDREF(this);
|
||||
|
||||
EnsureWindowService();
|
||||
|
||||
return NS_OK;
|
||||
|
||||
@@ -37,6 +37,7 @@ public:
|
||||
static void ProcessTimeouts(nsVoidArray *array);
|
||||
nsTimerXlib();
|
||||
virtual ~nsTimerXlib();
|
||||
static void Shutdown();
|
||||
|
||||
virtual nsresult Init(nsTimerCallbackFunc aFunc,
|
||||
void *aClosure,
|
||||
|
||||
@@ -48,4 +48,12 @@ static nsModuleComponentInfo components[] =
|
||||
nsTimerXlibConstructor }
|
||||
};
|
||||
|
||||
NS_IMPL_NSGETMODULE("nsXlibTimerModule", components)
|
||||
PR_STATIC_CALLBACK(void)
|
||||
nsXlibTimerModuleDtor(nsIModule *self)
|
||||
{
|
||||
nsTimerXlib::Shutdown();
|
||||
}
|
||||
|
||||
NS_IMPL_NSGETMODULE_WITH_DTOR("nsXlibTimerModule",
|
||||
components,
|
||||
nsXlibTimerModuleDtor)
|
||||
|
||||
Reference in New Issue
Block a user