git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@2334 0c269be4-1314-0410-8aa9-9f06e86f4224tags/1.90
| @@ -20,6 +20,10 @@ Fernando Lopez-Lezcano | |||||
| Jackdmp changes log | Jackdmp changes log | ||||
| --------------------------- | --------------------------- | ||||
| 2008-05-24 Stephane Letz <letz@grame.fr> | |||||
| * Tim Blechmann RAII idiom patch for JackServer ressource initialization. | |||||
| 2008-05-23 Stephane Letz <letz@grame.fr> | 2008-05-23 Stephane Letz <letz@grame.fr> | ||||
| * Use StartSync to start the client notification thread, otherwise initial notifications from the server may be lost. | * Use StartSync to start the client notification thread, otherwise initial notifications from the server may be lost. | ||||
| @@ -280,13 +280,29 @@ class JackGlobals | |||||
| }; | }; | ||||
| namespace detail | |||||
| { | |||||
| struct JackGlobalsServerInitializer | |||||
| { | |||||
| JackGlobalsServerInitializer(void) | |||||
| { | |||||
| JackGlobals::InitServer(); | |||||
| } | |||||
| ~JackGlobalsServerInitializer(void) | |||||
| { | |||||
| JackGlobals::Destroy(); | |||||
| } | |||||
| }; | |||||
| } | |||||
| } // end of namespace | } // end of namespace | ||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||
| extern "C" | extern "C" | ||||
| { | { | ||||
| #endif | #endif | ||||
| extern jack_tls_key gRealTime; | extern jack_tls_key gRealTime; | ||||
| #ifdef WIN32 | #ifdef WIN32 | ||||
| @@ -295,7 +311,7 @@ EXPORT void jack_init(); | |||||
| EXPORT void jack_uninit(); | EXPORT void jack_uninit(); | ||||
| #else | #else | ||||
| void __attribute__ ((constructor)) jack_init(); | void __attribute__ ((constructor)) jack_init(); | ||||
| void __attribute__ ((destructor)) jack_uninit(); | void __attribute__ ((destructor)) jack_uninit(); | ||||
| @@ -44,7 +44,6 @@ JackServer* JackServer::fInstance = NULL; | |||||
| JackServer::JackServer(bool sync, bool temporary, long timeout, bool rt, long priority, long loopback, bool verbose, const char* server_name) | JackServer::JackServer(bool sync, bool temporary, long timeout, bool rt, long priority, long loopback, bool verbose, const char* server_name) | ||||
| { | { | ||||
| JackGlobals::InitServer(); | |||||
| for (int i = 0; i < CLIENT_NUM; i++) | for (int i = 0; i < CLIENT_NUM; i++) | ||||
| fSynchroTable[i] = JackGlobals::MakeSynchro(); | fSynchroTable[i] = JackGlobals::MakeSynchro(); | ||||
| fGraphManager = new JackGraphManager(); | fGraphManager = new JackGraphManager(); | ||||
| @@ -76,7 +75,6 @@ JackServer::~JackServer() | |||||
| UnloadDriverModule(fDriverInfo->handle); | UnloadDriverModule(fDriverInfo->handle); | ||||
| free(fDriverInfo); | free(fDriverInfo); | ||||
| } | } | ||||
| JackGlobals::Destroy(); | |||||
| } | } | ||||
| // TODO : better handling of intermediate failing cases... | // TODO : better handling of intermediate failing cases... | ||||
| @@ -27,6 +27,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
| #include "JackConnectionManager.h" | #include "JackConnectionManager.h" | ||||
| #include "jslist.h" | #include "jslist.h" | ||||
| #include "JackGlobals.h" | |||||
| namespace Jack | namespace Jack | ||||
| { | { | ||||
| @@ -41,7 +43,7 @@ class JackEngineInterface; | |||||
| \brief The Jack server. | \brief The Jack server. | ||||
| */ | */ | ||||
| class EXPORT JackServer | |||||
| class EXPORT JackServer : private detail::JackGlobalsServerInitializer | |||||
| { | { | ||||
| private: | private: | ||||