25#ifndef LMMS_REMOTE_PLUGIN_CLIENT_H
26#define LMMS_REMOTE_PLUGIN_CLIENT_H
32#ifndef LMMS_BUILD_WIN32
33# include <condition_variable>
54#ifdef SYNC_WITH_SHM_FIFO
141#ifndef LMMS_BUILD_WIN32
150 using namespace std::literals::chrono_literals;
151 auto lock = std::unique_lock{
m_mutex};
152 while (!
m_cv.wait_for(lock, 500ms, [
this] { return m_stop; }))
156 kill(getpid(), SIGHUP);
167 const auto lock = std::unique_lock{
m_mutex};
182#ifdef SYNC_WITH_SHM_FIFO
194#ifndef SYNC_WITH_SHM_FIFO
195 struct sockaddr_un sa;
196 sa.sun_family = AF_LOCAL;
198 size_t length = strlen( socketPath );
199 if (
length >=
sizeof sa.sun_path )
201 length =
sizeof sa.sun_path - 1;
202 fprintf( stderr,
"Socket path too long.\n" );
205 sa.sun_path[
length] =
'\0';
207 m_socket = socket( PF_LOCAL, SOCK_STREAM, 0 );
210 fprintf( stderr,
"Could not connect to local server.\n" );
212 if ( ::connect(
m_socket, (
struct sockaddr *) &sa,
sizeof sa ) == -1 )
214 fprintf( stderr,
"Could not connect to local server.\n" );
226#ifndef SYNC_WITH_SHM_FIFO
229 fprintf( stderr,
"Error freeing resources.\n" );
259 catch (
const std::runtime_error&
error)
314 std::snprintf(buf, 64,
"undefined message: %d\n", _m.
id);
336 catch (
const std::runtime_error&
error)
338 debugMessage(std::string{
"failed getting shared memory: "} +
error.what() +
'\n');
355 debugMessage(
"doProcessing(): have no shared memory!\n" );
static void message(int level, const char *fmt,...)
Definition adplugdb.cpp:120
void process(Alg_seq_ptr seq, bool tempo_flag, double tempo, bool flatten_flag)
Definition allegroconvert.cpp:42
Definition MidiEvent.h:37
bool m_stop
Definition RemotePluginClient.h:175
std::mutex m_mutex
Definition RemotePluginClient.h:176
PollParentThread()
Definition RemotePluginClient.h:145
std::thread m_thread
Definition RemotePluginClient.h:178
~PollParentThread()
Definition RemotePluginClient.h:164
std::condition_variable m_cv
Definition RemotePluginClient.h:177
Definition RemotePluginBase.h:355
int sendMessage(const message &_m)
int m_socket
Definition RemotePluginBase.h:568
void doProcessing()
Definition RemotePluginClient.h:345
void setInputCount(int _i)
Definition RemotePluginClient.h:90
virtual void processMidiEvent(const MidiEvent &, const f_cnt_t)
Definition RemotePluginClient.h:68
virtual int outputCount() const
Definition RemotePluginClient.h:116
~RemotePluginClient() override
Definition RemotePluginClient.h:222
virtual void updateSampleRate()
Definition RemotePluginClient.h:72
void debugMessage(const std::string &_s)
Definition RemotePluginClient.h:121
f_cnt_t m_bufferSize
Definition RemotePluginClient.h:138
bool processMessage(const message &_m) override
Definition RemotePluginClient.h:245
const VstSyncData * getVstSyncData()
Definition RemotePluginClient.h:237
void setInputOutputCount(int i, int o)
Definition RemotePluginClient.h:102
virtual int inputCount() const
Definition RemotePluginClient.h:111
RemotePluginClient(const char *socketPath)
Definition RemotePluginClient.h:186
sample_rate_t sampleRate() const
Definition RemotePluginClient.h:80
void setOutputCount(int _i)
Definition RemotePluginClient.h:96
virtual void process(const SampleFrame *_in_buf, SampleFrame *_out_buf)=0
SharedMemory< const VstSyncData > m_vstSyncData
Definition RemotePluginClient.h:132
sample_rate_t m_sampleRate
Definition RemotePluginClient.h:137
f_cnt_t bufferSize() const
Definition RemotePluginClient.h:85
void setShmKey(const std::string &key)
Definition RemotePluginClient.h:330
int m_inputCount
Definition RemotePluginClient.h:134
int m_outputCount
Definition RemotePluginClient.h:135
virtual void updateBufferSize()
Definition RemotePluginClient.h:76
SharedMemory< float[]> m_audioBuffer
Definition RemotePluginClient.h:131
Definition SampleFrame.h:41
Definition SharedMemory.h:147
register unsigned i
Definition inflate.c:1575
#define EXIT_FAILURE
Definition jerror.c:32
Definition AudioAlsa.cpp:35
std::uint32_t sample_rate_t
Definition LmmsTypes.h:42
std::uint64_t f_cnt_t
Definition LmmsTypes.h:43
MidiEventTypes
Definition Midi.h:34
@ IdDebugMessage
Definition RemotePluginBase.h:347
@ IdSyncKey
Definition RemotePluginBase.h:326
@ IdMidiEvent
Definition RemotePluginBase.h:330
@ IdBufferSizeInformation
Definition RemotePluginBase.h:328
@ IdChangeInputOutputCount
Definition RemotePluginBase.h:336
@ IdStartProcessing
Definition RemotePluginBase.h:331
@ IdChangeSharedMemoryKey
Definition RemotePluginBase.h:333
@ IdProcessingDone
Definition RemotePluginBase.h:332
@ IdInitDone
Definition RemotePluginBase.h:324
@ IdUndefined
Definition RemotePluginBase.h:322
@ IdHostInfoGotten
Definition RemotePluginBase.h:323
@ IdChangeOutputCount
Definition RemotePluginBase.h:335
@ IdQuit
Definition RemotePluginBase.h:325
@ IdInformationUpdated
Definition RemotePluginBase.h:329
@ IdSampleRateInformation
Definition RemotePluginBase.h:327
@ IdChangeInputCount
Definition RemotePluginBase.h:334
#define false
Definition ordinals.h:83
png_uint_32 length
Definition png.c:2247
Definition RemotePluginBase.h:358
std::string getString(int _p=0) const
Definition RemotePluginBase.h:395
int getInt(int _p=0) const
Definition RemotePluginBase.h:407
int id
Definition RemotePluginBase.h:422
Definition VstSyncData.h:43
memcpy(hh, h, RAND_HEAD_LEN)
ZCONST char * key
Definition crypt.c:587
else
Definition fileio.c:764
#define const
Definition zconf.h:137