git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@2284 0c269be4-1314-0410-8aa9-9f06e86f4224tags/1.90
| @@ -33,13 +33,13 @@ namespace Jack | |||||
| /*! | /*! | ||||
| \brief Graph manager: contains the connection manager and the port array. | \brief Graph manager: contains the connection manager and the port array. | ||||
| */ | */ | ||||
| class JackGraphManager : public JackShmMem, public JackAtomicState<JackConnectionManager> | class JackGraphManager : public JackShmMem, public JackAtomicState<JackConnectionManager> | ||||
| { | { | ||||
| private: | private: | ||||
| JackPort fPortArray[PORT_NUM]; | |||||
| JackPort fPortArray[]; | |||||
| JackClientTiming fClientTiming[CLIENT_NUM]; | JackClientTiming fClientTiming[CLIENT_NUM]; | ||||
| jack_port_id_t AllocatePortAux(int refnum, const char* port_name, const char* port_type, JackPortFlags flags); | jack_port_id_t AllocatePortAux(int refnum, const char* port_name, const char* port_type, JackPortFlags flags); | ||||
| @@ -47,7 +47,11 @@ JackServer::JackServer(bool sync, bool temporary, long timeout, bool rt, long pr | |||||
| JackGlobals::InitServer(); | 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(); | |||||
| // Use "placement" new for graph manager | |||||
| void* shared_mem = JackShmMem::operator new(PORT_NUM * 1*sizeof(JackPort) + sizeof(JackGraphManager)); | |||||
| fGraphManager = new(shared_mem) JackGraphManager(); | |||||
| fEngineControl = new JackEngineControl(sync, temporary, timeout, rt, priority, verbose, server_name); | fEngineControl = new JackEngineControl(sync, temporary, timeout, rt, priority, verbose, server_name); | ||||
| fEngine = new JackLockedEngine(new JackEngine(fGraphManager, fSynchroTable, fEngineControl)); | fEngine = new JackLockedEngine(new JackEngine(fGraphManager, fSynchroTable, fEngineControl)); | ||||
| fFreewheelDriver = new JackThreadedDriver(new JackFreewheelDriver("freewheel", fEngine, fSynchroTable)); | fFreewheelDriver = new JackThreadedDriver(new JackFreewheelDriver("freewheel", fEngine, fSynchroTable)); | ||||
| @@ -28,6 +28,12 @@ namespace Jack | |||||
| unsigned int JackShmMem::fSegmentNum = 0; | unsigned int JackShmMem::fSegmentNum = 0; | ||||
| jack_shm_info_t JackShmMem::gInfo; | jack_shm_info_t JackShmMem::gInfo; | ||||
| size_t JackMem::gSize = 0; | size_t JackMem::gSize = 0; | ||||
| void* JackShmMem::operator new(size_t size, void* memory) | |||||
| { | |||||
| jack_log("JackShmMem::new placement size = %ld", size); | |||||
| return memory; | |||||
| } | |||||
| void* JackShmMem::operator new(size_t size) | void* JackShmMem::operator new(size_t size) | ||||
| { | { | ||||
| @@ -105,6 +105,7 @@ class JackShmMem | |||||
| public: | public: | ||||
| void* operator new(size_t size); | void* operator new(size_t size); | ||||
| void* operator new(size_t size, void* memory); | |||||
| void operator delete(void* p, size_t size); | void operator delete(void* p, size_t size); | ||||
| JackShmMem() | JackShmMem() | ||||