uORBManager: allocate instance on first use

Previously _Instance was statically initialized. Now it is
allocated at first use.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
This commit is contained in:
Mark Charlebois 2015-07-01 21:26:00 -07:00
parent 02850e0d16
commit 0c72d66ece
4 changed files with 20 additions and 9 deletions

View File

@ -50,15 +50,18 @@ SRCS = uORBDevices_posix.cpp \
endif
ifeq ($(PX4_TARGET_OS),posix)
SRCS += uORBTest_UnitTest.cpp
SRCS += uORBTest_UnitTest.cpp
endif
ifeq ($(PX4_TARGET_OS),posix-arm)
SRCS += uORBTest_UnitTest.cpp
SRCS += uORBTest_UnitTest.cpp
endif
ifneq ($(PX4_TARGET_OS),qurt)
SRCS += Publication.cpp \
Subscription.cpp
endif
SRCS += objects_common.cpp \
Publication.cpp \
Subscription.cpp \
uORBUtils.cpp \
uORB.cpp \
uORBMain.cpp

View File

@ -346,7 +346,7 @@ private: // class methods
);
private: // data members
static Manager _Instance;
static Manager *_Instance;
// the communicator channel instance.
uORBCommunicator::IChannel *_comm_channel;
ORBSet _remote_subscriber_topics;

View File

@ -42,13 +42,17 @@
//========================= Static initializations =================
uORB::Manager uORB::Manager::_Instance;
uORB::Manager *uORB::Manager::_Instance = nullptr;
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
uORB::Manager *uORB::Manager::get_instance()
{
return &_Instance;
if (_Instance == nullptr) {
_Instance = new uORB::Manager();
}
return _Instance;
}
//-----------------------------------------------------------------------------

View File

@ -44,13 +44,17 @@
//========================= Static initializations =================
uORB::Manager uORB::Manager::_Instance;
uORB::Manager *uORB::Manager::_Instance = nullptr;
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
uORB::Manager *uORB::Manager::get_instance()
{
return &_Instance;
if (_Instance == nullptr) {
_Instance = new uORB::Manager();
}
return _Instance;
}
//-----------------------------------------------------------------------------