From b0a497d27b9e507bb1664a1efac892d87ba63466 Mon Sep 17 00:00:00 2001 From: "darin%meer.net" Date: Wed, 10 May 2006 21:45:05 +0000 Subject: [PATCH] Attempt fix for extensions/sql git-svn-id: svn://10.0.0.236/trunk@196277 18797224-902f-48f8-a5cc-f745e15eee43 --- .../sql/base/src/mozSqlConnection.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/mozilla/extensions/sql/base/src/mozSqlConnection.cpp b/mozilla/extensions/sql/base/src/mozSqlConnection.cpp index 9e7ea7f30bc..0b8a414e56e 100644 --- a/mozilla/extensions/sql/base/src/mozSqlConnection.cpp +++ b/mozilla/extensions/sql/base/src/mozSqlConnection.cpp @@ -36,6 +36,7 @@ #include "nsIProxyObjectManager.h" #include "mozSqlRequest.h" #include "mozSqlConnection.h" +#include "nsThreadUtils.h" mozSqlConnection::mozSqlConnection() : mLock(nsnull), @@ -144,7 +145,7 @@ mozSqlConnection::AsyncExecuteQuery(const nsAString& aQuery, nsISupports* aCtxt, if (!mThread) { mLock = PR_NewLock(); mCondVar = PR_NewCondVar(mLock); - NS_NewThread(getter_AddRefs(mThread), this, 0, PR_UNJOINABLE_THREAD); + NS_NewThread(getter_AddRefs(mThread), this); } mozSqlRequest* request = new mozSqlRequest(this); @@ -155,10 +156,10 @@ mozSqlConnection::AsyncExecuteQuery(const nsAString& aQuery, nsISupports* aCtxt, request->mQuery = aQuery; request->mCtxt = aCtxt; - nsresult rv = NS_GetProxyForObject(NS_CURRENT_EVENTQ, + nsresult rv = NS_GetProxyForObject(NS_PROXY_TO_CURRENT_THREAD, NS_GET_IID(mozISqlRequestObserver), aObserver, - PROXY_SYNC | PROXY_ALWAYS, + NS_PROXY_SYNC | NS_PROXY_ALWAYS, getter_AddRefs(request->mObserver)); if (NS_FAILED(rv)) return rv; @@ -256,6 +257,18 @@ mozSqlConnection::Run() } PR_Unlock(mLock); + // Shutdown self from main thread (cannot shutdown directly) + nsCOMPtr proxy; + NS_GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, + NS_GET_IID(nsIThread), + NS_GetCurrentThread(), + NS_PROXY_ASYNC, + getter_AddRefs(proxy)); + if (proxy) { + proxy->Shutdown(); + } else { + NS_WARNING("leaking thread"); + } return NS_OK; }