diff --git a/src/copy/pvArrayPlugin.cpp b/src/copy/pvArrayPlugin.cpp index cdae0e9..e4240ee 100644 --- a/src/copy/pvArrayPlugin.cpp +++ b/src/copy/pvArrayPlugin.cpp @@ -34,8 +34,12 @@ PVArrayPlugin::~PVArrayPlugin() void PVArrayPlugin::create() { - PVArrayPluginPtr pvPlugin = PVArrayPluginPtr(new PVArrayPlugin()); - PVPluginRegistry::registerPlugin(name,pvPlugin); + static bool firstTime = true; + if(firstTime) { + firstTime = false; + PVArrayPluginPtr pvPlugin = PVArrayPluginPtr(new PVArrayPlugin()); + PVPluginRegistry::registerPlugin(name,pvPlugin); + } } PVFilterPtr PVArrayPlugin::create( diff --git a/src/copy/pvCopy.cpp b/src/copy/pvCopy.cpp index 4988517..02fd5bd 100644 --- a/src/copy/pvCopy.cpp +++ b/src/copy/pvCopy.cpp @@ -16,9 +16,9 @@ #include #include +#include #define epicsExportSharedSymbols #include -#include using std::tr1::static_pointer_cast; using std::tr1::dynamic_pointer_cast; diff --git a/src/copy/pvDeadbandPlugin.cpp b/src/copy/pvDeadbandPlugin.cpp index 8b6b63b..54bdbbc 100644 --- a/src/copy/pvDeadbandPlugin.cpp +++ b/src/copy/pvDeadbandPlugin.cpp @@ -34,8 +34,12 @@ PVDeadbandPlugin::~PVDeadbandPlugin() void PVDeadbandPlugin::create() { - PVDeadbandPluginPtr pvPlugin = PVDeadbandPluginPtr(new PVDeadbandPlugin()); - PVPluginRegistry::registerPlugin(name,pvPlugin); + static bool firstTime = true; + if(firstTime) { + firstTime = false; + PVDeadbandPluginPtr pvPlugin = PVDeadbandPluginPtr(new PVDeadbandPlugin()); + PVPluginRegistry::registerPlugin(name,pvPlugin); + } } PVFilterPtr PVDeadbandPlugin::create( diff --git a/src/copy/pvTimestampPlugin.cpp b/src/copy/pvTimestampPlugin.cpp index b05a3de..5043002 100644 --- a/src/copy/pvTimestampPlugin.cpp +++ b/src/copy/pvTimestampPlugin.cpp @@ -34,8 +34,12 @@ PVTimestampPlugin::~PVTimestampPlugin() void PVTimestampPlugin::create() { - PVTimestampPluginPtr pvPlugin = PVTimestampPluginPtr(new PVTimestampPlugin()); - PVPluginRegistry::registerPlugin(name,pvPlugin); + static bool firstTime = true; + if(firstTime) { + firstTime = false; + PVTimestampPluginPtr pvPlugin = PVTimestampPluginPtr(new PVTimestampPlugin()); + PVPluginRegistry::registerPlugin(name,pvPlugin); + } } PVFilterPtr PVTimestampPlugin::create( diff --git a/src/database/pvDatabase.cpp b/src/database/pvDatabase.cpp index 0ce5b36..39b6e7c 100644 --- a/src/database/pvDatabase.cpp +++ b/src/database/pvDatabase.cpp @@ -31,15 +31,15 @@ namespace epics { namespace pvDatabase { static PVDatabasePtr pvDatabaseMaster; -bool PVDatabase::getMasterFirstCall = true; - PVDatabasePtr PVDatabase::getMaster() { - if(getMasterFirstCall) { - getMasterFirstCall = false; + static bool firstTime = true; + if(firstTime) { + firstTime = false; pvDatabaseMaster = PVDatabasePtr(new PVDatabase()); PVArrayPlugin::create(); PVTimestampPlugin::create(); + PVDeadbandPlugin::create(); } return pvDatabaseMaster; } diff --git a/test/src/testPlugin.cpp b/test/src/testPlugin.cpp index 55c4e5e..f0cbd59 100644 --- a/test/src/testPlugin.cpp +++ b/test/src/testPlugin.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #define epicsExportSharedSymbols #include "powerSupply.h" @@ -267,6 +268,7 @@ static void ignoreTest() MAIN(testPlugin) { testPlan(22); + PVDatabasePtr pvDatabase(PVDatabase::getMaster()); deadbandTest(); arrayTest(); timeStampTest();