From b01dd0798cccea7a45373cc4ab49d6ffbd252487 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Tue, 1 Jul 2008 06:13:09 +0000 Subject: [PATCH] clientprefs now uses the new dbi dependency shim --HG-- extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%402316 --- extensions/clientprefs/extension.cpp | 26 +++++++++++++++++++++++++- extensions/clientprefs/extension.h | 4 ++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/extensions/clientprefs/extension.cpp b/extensions/clientprefs/extension.cpp index 3f4d9315..303be504 100644 --- a/extensions/clientprefs/extension.cpp +++ b/extensions/clientprefs/extension.cpp @@ -87,6 +87,8 @@ bool ClientPrefs::SDK_OnLoad(char *error, size_t maxlength, bool late) return false; } + dbi->AddDependency(myself, Driver); + const char *identifier = Driver->GetIdentifier(); if (strcmp(identifier, "sqlite") == 0) @@ -202,6 +204,25 @@ void ClientPrefs::SDK_OnAllLoaded() playerhelpers->AddClientListener(&g_CookieManager); } +bool ClientPrefs::QueryInterfaceDrop(SMInterface *pInterface) +{ + if ((void *)pInterface == (void *)(Database->GetDriver())) + { + return false; + } + + return true; +} + +void ClientPrefs::NotifyInterfaceDrop(SMInterface *pInterface) +{ + if (Database != NULL && (void *)pInterface == (void *)(Database->GetDriver())) + { + Database->Close(); + Database = NULL; + } +} + void ClientPrefs::SDK_OnUnload() { handlesys->RemoveType(g_CookieType, myself->GetIdentity()); @@ -209,7 +230,10 @@ void ClientPrefs::SDK_OnUnload() g_CookieManager.Unload(); - Database->Close(); + if (Database != NULL) + { + Database->Close(); + } forwards->ReleaseForward(g_CookieManager.cookieDataLoadedForward); diff --git a/extensions/clientprefs/extension.h b/extensions/clientprefs/extension.h index 0cecc49f..c166cadb 100644 --- a/extensions/clientprefs/extension.h +++ b/extensions/clientprefs/extension.h @@ -75,6 +75,10 @@ public: */ virtual void SDK_OnAllLoaded(); + virtual bool QueryInterfaceDrop(SMInterface *pInterface); + + virtual void NotifyInterfaceDrop(SMInterface *pInterface); + /** * @brief Called when the pause state is changed. */