summaryrefslogtreecommitdiffstats
path: root/WebCore/storage/DatabaseThread.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/storage/DatabaseThread.cpp')
-rw-r--r--WebCore/storage/DatabaseThread.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/WebCore/storage/DatabaseThread.cpp b/WebCore/storage/DatabaseThread.cpp
index 7eeed9b..191a476 100644
--- a/WebCore/storage/DatabaseThread.cpp
+++ b/WebCore/storage/DatabaseThread.cpp
@@ -25,6 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
#include "config.h"
#include "DatabaseThread.h"
@@ -35,7 +36,7 @@
namespace WebCore {
-DatabaseThread::DatabaseThread(Document* document)
+DatabaseThread::DatabaseThread()
: m_threadID(0)
{
m_selfRef = this;
@@ -48,6 +49,8 @@ DatabaseThread::~DatabaseThread()
bool DatabaseThread::start()
{
+ MutexLocker lock(m_threadCreationMutex);
+
if (m_threadID)
return true;
@@ -75,7 +78,11 @@ void* DatabaseThread::databaseThreadStart(void* vDatabaseThread)
void* DatabaseThread::databaseThread()
{
- LOG(StorageAPI, "Starting DatabaseThread %p", this);
+ {
+ // Wait for DatabaseThread::start() to complete.
+ MutexLocker lock(m_threadCreationMutex);
+ LOG(StorageAPI, "Started DatabaseThread %p", this);
+ }
AutodrainedPool pool;
while (true) {