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:
dbaron%fas.harvard.edu
2001-01-10 02:49:45 +00:00
parent 73d33434d9
commit b4a357b94d
16 changed files with 153 additions and 115 deletions

View File

@@ -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;

View File

@@ -37,6 +37,7 @@ public:
static void ProcessTimeouts(nsVoidArray *array);
nsTimerXlib();
virtual ~nsTimerXlib();
static void Shutdown();
virtual nsresult Init(nsTimerCallbackFunc aFunc,
void *aClosure,

View File

@@ -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)