git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@4546 0c269be4-1314-0410-8aa9-9f06e86f4224tags/1.9.8
| @@ -214,7 +214,7 @@ extern "C" | |||
| jack_position_t *pos); | |||
| LIB_EXPORT jack_nframes_t jack_get_current_transport_frame(const jack_client_t *client); | |||
| LIB_EXPORT int jack_transport_reposition(jack_client_t *client, | |||
| jack_position_t *pos); | |||
| const jack_position_t *pos); | |||
| LIB_EXPORT void jack_transport_start(jack_client_t *client); | |||
| LIB_EXPORT void jack_transport_stop(jack_client_t *client); | |||
| LIB_EXPORT void jack_get_transport_info(jack_client_t *client, | |||
| @@ -1626,7 +1626,7 @@ LIB_EXPORT jack_nframes_t jack_get_current_transport_frame(const jack_client_t* | |||
| } | |||
| } | |||
| LIB_EXPORT int jack_transport_reposition(jack_client_t* ext_client, jack_position_t* pos) | |||
| LIB_EXPORT int jack_transport_reposition(jack_client_t* ext_client, const jack_position_t* pos) | |||
| { | |||
| #ifdef __CLIENTDEBUG__ | |||
| JackGlobals::CheckContext("jack_transport_reposition"); | |||
| @@ -848,14 +848,14 @@ void JackClient::TransportLocate(jack_nframes_t frame) | |||
| GetEngineControl()->fTransport.RequestNewPos(&pos); | |||
| } | |||
| int JackClient::TransportReposition(jack_position_t* pos) | |||
| int JackClient::TransportReposition(const jack_position_t* pos) | |||
| { | |||
| jack_position_t tmp = *pos; | |||
| jack_log("JackClient::TransportReposition pos = %ld", pos->frame); | |||
| if (tmp.valid & ~JACK_POSITION_MASK) { | |||
| return EINVAL; | |||
| } else { | |||
| GetEngineControl()->fTransport.RequestNewPos(pos); | |||
| GetEngineControl()->fTransport.RequestNewPos(&tmp); | |||
| return 0; | |||
| } | |||
| } | |||
| @@ -164,7 +164,7 @@ class SERVER_EXPORT JackClient : public JackClientInterface, public JackRunnable | |||
| virtual void TransportLocate(jack_nframes_t frame); | |||
| virtual jack_transport_state_t TransportQuery(jack_position_t* pos); | |||
| virtual jack_nframes_t GetCurrentTransportFrame(); | |||
| virtual int TransportReposition(jack_position_t* pos); | |||
| virtual int TransportReposition(const jack_position_t* pos); | |||
| virtual void TransportStart(); | |||
| virtual void TransportStop(); | |||
| @@ -30,10 +30,10 @@ extern "C" | |||
| { | |||
| #endif | |||
| LIB_EXPORT jack_nframes_t jack_midi_get_event_count(void* port_buffer); | |||
| LIB_EXPORT uint32_t jack_midi_get_event_count(void* port_buffer); | |||
| LIB_EXPORT int jack_midi_event_get(jack_midi_event_t* event, | |||
| void* port_buffer, jack_nframes_t event_index); | |||
| void* port_buffer, uint32_t event_index); | |||
| LIB_EXPORT void jack_midi_clear_buffer(void* port_buffer); | |||
| @@ -54,7 +54,7 @@ extern "C" | |||
| using namespace Jack; | |||
| LIB_EXPORT | |||
| jack_nframes_t jack_midi_get_event_count(void* port_buffer) | |||
| uint32_t jack_midi_get_event_count(void* port_buffer) | |||
| { | |||
| JackMidiBuffer *buf = (JackMidiBuffer*)port_buffer; | |||
| if (!buf || !buf->IsValid()) { | |||
| @@ -64,7 +64,7 @@ jack_nframes_t jack_midi_get_event_count(void* port_buffer) | |||
| } | |||
| LIB_EXPORT | |||
| int jack_midi_event_get(jack_midi_event_t *event, void* port_buffer, jack_nframes_t event_index) | |||
| int jack_midi_event_get(jack_midi_event_t *event, void* port_buffer, uint32_t event_index) | |||
| { | |||
| JackMidiBuffer *buf = (JackMidiBuffer*)port_buffer; | |||
| if (!buf || !buf->IsValid()) { | |||
| @@ -143,7 +143,7 @@ int jack_midi_event_write(void* port_buffer, | |||
| } | |||
| LIB_EXPORT | |||
| jack_nframes_t jack_midi_get_lost_event_count(void* port_buffer) | |||
| uint32_t jack_midi_get_lost_event_count(void* port_buffer) | |||
| { | |||
| JackMidiBuffer *buf = (JackMidiBuffer*)port_buffer; | |||
| if (buf && buf->IsValid()) | |||
| @@ -13,7 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| GNU Lesser General Public License for more details. | |||
| You should have received a copy of the GNU Lesser General Public License | |||
| along with this program; if not, write to the Free Software | |||
| along with this program; if not, write to the Free Software | |||
| Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
| */ | |||
| @@ -38,7 +38,7 @@ JackTransportEngine::JackTransportEngine(): JackAtomicArrayState<jack_position_t | |||
| { | |||
| fTransportState = JackTransportStopped; | |||
| fTransportCmd = fPreviousCmd = TransportCommandStop; | |||
| fSyncTimeout = 10000000; /* 10 seconds default... | |||
| fSyncTimeout = 10000000; /* 10 seconds default... | |||
| in case of big netjack1 roundtrip */ | |||
| fSyncTimeLeft = 0; | |||
| fTimeBaseMaster = -1; | |||
| @@ -112,8 +112,8 @@ void JackTransportEngine::MakeAllStartingLocating(JackClientInterface** table) | |||
| JackClientControl* control = client->GetClientControl(); | |||
| // Inactive clients don't have their process function called at all, so they must appear as already "rolling" for the transport.... | |||
| control->fTransportState = (control->fActive && control->fCallback[kRealTimeCallback]) ? JackTransportStarting : JackTransportRolling; | |||
| control->fTransportSync = true; | |||
| control->fTransportTimebase = true; | |||
| control->fTransportSync = true; | |||
| control->fTransportTimebase = true; | |||
| jack_log("MakeAllStartingLocating ref = %ld", i); | |||
| } | |||
| } | |||
| @@ -127,8 +127,8 @@ void JackTransportEngine::MakeAllStopping(JackClientInterface** table) | |||
| if (client) { | |||
| JackClientControl* control = client->GetClientControl(); | |||
| control->fTransportState = JackTransportStopped; | |||
| control->fTransportSync = false; | |||
| control->fTransportTimebase = false; | |||
| control->fTransportSync = false; | |||
| control->fTransportTimebase = false; | |||
| jack_log("MakeAllStopping ref = %ld", i); | |||
| } | |||
| } | |||
| @@ -142,8 +142,8 @@ void JackTransportEngine::MakeAllLocating(JackClientInterface** table) | |||
| if (client) { | |||
| JackClientControl* control = client->GetClientControl(); | |||
| control->fTransportState = JackTransportStopped; | |||
| control->fTransportSync = true; | |||
| control->fTransportTimebase = true; | |||
| control->fTransportSync = true; | |||
| control->fTransportTimebase = true; | |||
| jack_log("MakeAllLocating ref = %ld", i); | |||
| } | |||
| } | |||
| @@ -13,7 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| GNU Lesser General Public License for more details. | |||
| You should have received a copy of the GNU Lesser General Public License | |||
| along with this program; if not, write to the Free Software | |||
| along with this program; if not, write to the Free Software | |||
| Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
| */ | |||
| @@ -48,43 +48,43 @@ We have: | |||
| The current position can be read by clients. | |||
| We use a JackAtomicArrayState pattern that allows to manage several "next" states independantly. | |||
| In jack1 implementation, transport code (jack_transport_cycle_end) was not called if the graph could not be locked (see jack_run_one_cycle). | |||
| Here transport cycle (CycleBegin, CycleEnd) has to run in the RT thread concurrently with code executed from the "command" thread. | |||
| Each client maintains a state in it's shared memory area defined by: | |||
| - it's current transport state | |||
| - a boolean that is "true" when slow-sync cb has to be called | |||
| - a boolean that is "true" when timebase cb is called with new_pos on | |||
| Several operations set the "slow-sync cb" flag to true: | |||
| - setting a new cb (client) | |||
| - activate (client) | |||
| - transport start (server) | |||
| - new pos (server) | |||
| Slow-sync cb calls stops when: | |||
| - the cb return true (client) | |||
| - desactivate (client) | |||
| - transport stop (server) | |||
| Several operations set the "timebase cb" flag to true: | |||
| - setting a new cb (client) | |||
| - activate (client) | |||
| - transport start (server) ?? | |||
| - new pos (server) | |||
| Timebase cb "new_pos" argument calls stops when: | |||
| - after one cb call with "new_pos" argument true (client) | |||
| - desactivate (client) | |||
| - release (client) | |||
| - transport stop (server) | |||
| */ | |||
| class JackClientInterface; | |||
| @@ -109,7 +109,7 @@ class SERVER_EXPORT JackTransportEngine : public JackAtomicArrayState<jack_posit | |||
| void MakeAllStartingLocating(JackClientInterface** table); | |||
| void MakeAllStopping(JackClientInterface** table); | |||
| void MakeAllLocating(JackClientInterface** table); | |||
| void SyncTimeout(jack_nframes_t frame_rate, jack_nframes_t buffer_size); | |||
| public: | |||
| @@ -128,22 +128,22 @@ class SERVER_EXPORT JackTransportEngine : public JackAtomicArrayState<jack_posit | |||
| { | |||
| return fTransportState; | |||
| } | |||
| void SetState(jack_transport_state_t state) | |||
| { | |||
| fTransportState = state; | |||
| } | |||
| /* | |||
| \brief | |||
| \brief | |||
| */ | |||
| int ResetTimebase(int refnum); | |||
| /* | |||
| \brief | |||
| \brief | |||
| */ | |||
| int SetTimebaseMaster(int refnum, bool conditionnal); | |||
| void GetTimebaseMaster(int& refnum, bool& conditionnal) | |||
| { | |||
| refnum = fTimeBaseMaster; | |||
| @@ -151,17 +151,17 @@ class SERVER_EXPORT JackTransportEngine : public JackAtomicArrayState<jack_posit | |||
| } | |||
| /* | |||
| \brief | |||
| \brief | |||
| */ | |||
| void CycleBegin(jack_nframes_t frame_rate, jack_time_t time); | |||
| /* | |||
| \brief | |||
| \brief | |||
| */ | |||
| void CycleEnd(JackClientInterface** table, jack_nframes_t frame_rate, jack_nframes_t buffer_size); | |||
| /* | |||
| \brief | |||
| \brief | |||
| */ | |||
| void SetSyncTimeout(jack_time_t timeout) | |||
| { | |||
| @@ -174,20 +174,20 @@ class SERVER_EXPORT JackTransportEngine : public JackAtomicArrayState<jack_posit | |||
| { | |||
| return (jack_unique_t)INC_ATOMIC(&fWriteCounter); | |||
| } | |||
| void RequestNewPos(jack_position_t* pos); | |||
| jack_transport_state_t Query(jack_position_t* pos); | |||
| jack_nframes_t GetCurrentFrame(); | |||
| static void CopyPosition(jack_position_t* from, jack_position_t* to); | |||
| bool GetNetworkSync() const | |||
| { | |||
| return fNetworkSync; | |||
| } | |||
| void SetNetworkSync(bool sync) | |||
| { | |||
| fNetworkSync = sync; | |||
| @@ -53,7 +53,7 @@ typedef struct _jack_midi_event | |||
| * @param port_buffer Port buffer from which to retrieve event. | |||
| * @return number of events inside @a port_buffer | |||
| */ | |||
| jack_nframes_t | |||
| uint32_t | |||
| jack_midi_get_event_count(void* port_buffer) JACK_OPTIONAL_WEAK_EXPORT; | |||
| @@ -70,8 +70,8 @@ jack_midi_get_event_count(void* port_buffer) JACK_OPTIONAL_WEAK_EXPORT; | |||
| */ | |||
| int | |||
| jack_midi_event_get(jack_midi_event_t *event, | |||
| void *port_buffer, | |||
| jack_nframes_t event_index) JACK_OPTIONAL_WEAK_EXPORT; | |||
| void *port_buffer, | |||
| uint32_t event_index) JACK_OPTIONAL_WEAK_EXPORT; | |||
| /** Clear an event buffer. | |||
| @@ -158,7 +158,7 @@ jack_midi_event_write(void *port_buffer, | |||
| * @param port_buffer Port to receive count for. | |||
| * @returns Number of events that could not be written to @a port_buffer. | |||
| */ | |||
| jack_nframes_t | |||
| uint32_t | |||
| jack_midi_get_lost_event_count(void *port_buffer) JACK_OPTIONAL_WEAK_EXPORT; | |||
| /*@}*/ | |||
| @@ -1,19 +1,19 @@ | |||
| /* | |||
| Copyright (C) 2002 Paul Davis | |||
| Copyright (C) 2003 Jack O'Quin | |||
| This program is free software; you can redistribute it and/or modify | |||
| it under the terms of the GNU Lesser General Public License as published by | |||
| the Free Software Foundation; either version 2.1 of the License, or | |||
| (at your option) any later version. | |||
| This program is distributed in the hope that it will be useful, | |||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| GNU Lesser General Public License for more details. | |||
| You should have received a copy of the GNU Lesser General Public License | |||
| along with this program; if not, write to the Free Software | |||
| along with this program; if not, write to the Free Software | |||
| Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
| */ | |||
| @@ -135,7 +135,7 @@ int jack_set_timebase_callback (jack_client_t *client, | |||
| * sync_callbacks until ready. This function is realtime-safe. | |||
| * | |||
| * @see jack_transport_reposition, jack_set_sync_callback | |||
| * | |||
| * | |||
| * @param client the JACK client structure. | |||
| * @param frame frame number of new transport position. | |||
| * | |||
| @@ -170,7 +170,7 @@ jack_transport_state_t jack_transport_query (const jack_client_t *client, | |||
| * @param client the JACK client structure | |||
| */ | |||
| jack_nframes_t jack_get_current_transport_frame (const jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT; | |||
| /** | |||
| * Request a new transport position. | |||
| * | |||
| @@ -181,14 +181,14 @@ jack_nframes_t jack_get_current_transport_frame (const jack_client_t *client) JA | |||
| * sync_callbacks until ready. This function is realtime-safe. | |||
| * | |||
| * @see jack_transport_locate, jack_set_sync_callback | |||
| * | |||
| * | |||
| * @param client the JACK client structure. | |||
| * @param pos requested new transport position. | |||
| * | |||
| * @return 0 if valid request, EINVAL if position structure rejected. | |||
| */ | |||
| int jack_transport_reposition (jack_client_t *client, | |||
| jack_position_t *pos) JACK_OPTIONAL_WEAK_EXPORT; | |||
| const jack_position_t *pos) JACK_OPTIONAL_WEAK_EXPORT; | |||
| /** | |||
| * Start the JACK transport rolling. | |||
| @@ -239,7 +239,7 @@ void jack_set_transport_info (jack_client_t *client, | |||
| jack_transport_info_t *tinfo) JACK_OPTIONAL_WEAK_EXPORT; | |||
| /*@}*/ | |||
| #ifdef __cplusplus | |||
| } | |||
| #endif | |||
| @@ -6170,6 +6170,7 @@ | |||
| isa = PBXProject; | |||
| buildConfigurationList = 4B699DD5097D427F00A18468 /* Build configuration list for PBXProject "Jackdmp" */; | |||
| compatibilityVersion = "Xcode 2.4"; | |||
| developmentRegion = English; | |||
| hasScannedForEncodings = 1; | |||
| knownRegions = ( | |||
| English, | |||