Updated stop function
This commit is contained in:
parent
30973d8640
commit
779a05a5cb
3 changed files with 46 additions and 14 deletions
45
SConstruct
45
SConstruct
|
|
@ -11,6 +11,7 @@ opts.Add(EnumVariable('target', "Compilation target", 'debug', ['d', 'debug', 'r
|
||||||
opts.Add(EnumVariable('platform', "Compilation platform", '', ['', 'windows', 'x11', 'linux', 'osx']))
|
opts.Add(EnumVariable('platform', "Compilation platform", '', ['', 'windows', 'x11', 'linux', 'osx']))
|
||||||
opts.Add(EnumVariable('p', "Compilation target, alias for 'platform'", '', ['', 'windows', 'x11', 'linux', 'osx']))
|
opts.Add(EnumVariable('p', "Compilation target, alias for 'platform'", '', ['', 'windows', 'x11', 'linux', 'osx']))
|
||||||
opts.Add(BoolVariable('use_llvm', "Use the LLVM / Clang compiler", 'no'))
|
opts.Add(BoolVariable('use_llvm', "Use the LLVM / Clang compiler", 'no'))
|
||||||
|
opts.Add(BoolVariable('use_mingw', "Use the MingW for cross-compiling", 'no'))
|
||||||
opts.Add(PathVariable('target_path', 'The path where the lib is installed.', 'bin/'))
|
opts.Add(PathVariable('target_path', 'The path where the lib is installed.', 'bin/'))
|
||||||
opts.Add(PathVariable('target_name', 'The library name.', 'libgdpd', PathVariable.PathAccept))
|
opts.Add(PathVariable('target_name', 'The library name.', 'libgdpd', PathVariable.PathAccept))
|
||||||
|
|
||||||
|
|
@ -30,6 +31,7 @@ if env['use_llvm']:
|
||||||
env['CC'] = 'clang'
|
env['CC'] = 'clang'
|
||||||
env['CXX'] = 'clang++'
|
env['CXX'] = 'clang++'
|
||||||
|
|
||||||
|
|
||||||
if env['p'] != '':
|
if env['p'] != '':
|
||||||
env['platform'] = env['p']
|
env['platform'] = env['p']
|
||||||
|
|
||||||
|
|
@ -75,19 +77,40 @@ elif env['platform'] in ('x11', 'linux'):
|
||||||
elif env['platform'] == "windows":
|
elif env['platform'] == "windows":
|
||||||
env['target_path'] += 'win64/'
|
env['target_path'] += 'win64/'
|
||||||
cpp_library += '.windows'
|
cpp_library += '.windows'
|
||||||
# This makes sure to keep the session environment variables on windows,
|
|
||||||
# that way you can run scons in a vs 2017 prompt and it will find all the required tools
|
|
||||||
env.Append(ENV=os.environ)
|
env.Append(ENV=os.environ)
|
||||||
|
|
||||||
env.Append(CPPDEFINES=['WIN32', '_WIN32', '_WINDOWS', '_CRT_SECURE_NO_WARNINGS'])
|
if not env['use_mingw']:
|
||||||
env.Append(CCFLAGS=['-W3', '-GR'])
|
# MSVC
|
||||||
if env['target'] in ('debug', 'd'):
|
env.Append(LINKFLAGS=['/WX'])
|
||||||
env.Append(CPPDEFINES=['_DEBUG'])
|
if env['target'] == 'debug':
|
||||||
env.Append(CCFLAGS=['-EHsc', '-MDd', '-ZI'])
|
env.Append(CCFLAGS=['/EHsc', '/D_DEBUG', '/MDd'])
|
||||||
env.Append(LINKFLAGS=['-DEBUG'])
|
elif env['target'] == 'release':
|
||||||
|
env.Append(CCFLAGS=['/O2', '/EHsc', '/DNDEBUG', '/MD'])
|
||||||
else:
|
else:
|
||||||
env.Append(CPPDEFINES=['NDEBUG'])
|
# MinGW
|
||||||
env.Append(CCFLAGS=['-O2', '-EHsc', '-MD'])
|
env['CXX'] = 'x86_64-w64-mingw32-g++-win32'
|
||||||
|
env['CC'] = 'x86_64-w64-mingw32-gcc-win32'
|
||||||
|
env.Append(CCFLAGS=['-g', '-O3', '-std=c++14', '-Wwrite-strings', '-fpermissive'])
|
||||||
|
env.Append(LINKFLAGS=['--static', '-Wl,--no-undefined', '-static-libgcc', '-static-libstdc++'])
|
||||||
|
env.Append(CPPDEFINES=['WIN32', '_WIN32', '_MSC_VER', '_WINDOWS', '_CRT_SECURE_NO_WARNINGS'])
|
||||||
|
#env.Append(CPPDEFINES=['__WINDOWS_DS__', 'LIBPD_EXTRA'])
|
||||||
|
env.Append(CPPDEFINES=['__RTAUDIO_DUMMY__', 'LIBPD_EXTRA'])
|
||||||
|
env.Append(CFLAGS=['-DUSEAPI_DUMMY', '-DPD', '-DHAVE_UNISTD_H', '-D_GNU_SOURCE'])
|
||||||
|
|
||||||
|
|
||||||
|
#env.Append(CPPDEFINES=['WINVER=0x502'])
|
||||||
|
#env.Append(CCFLAGS=['-W3', '-GR'])
|
||||||
|
env.Append(LINKFLAGS=['-pthread'])
|
||||||
|
#if env['use_mingw']:
|
||||||
|
#env['CC'] = 'x86_64-w64-mingw32-gcc'
|
||||||
|
#env['CXX'] = 'x86_64-w64-mingw32-g++'
|
||||||
|
#env['AR'] = "x86_64-w64-mingw32-ar"
|
||||||
|
#env['RANLIB'] = "x86_64-w64-mingw32-ranlib"
|
||||||
|
#env['LINK'] = "x86_64-w64-mingw32-g++"
|
||||||
|
# env.Append(CFLAGS=['-std=c11'])
|
||||||
|
# env.Append(CXXFLAGS=['-fpermissive'])
|
||||||
|
# env.Append(LIBS=['ws2_32', 'kernel32'])
|
||||||
|
# env.Append(LINKFLAGS=['-shared', '-Wl,--export-all-symbols','-mwindows','-Wl,-enable-stdcall-fixup'])
|
||||||
|
|
||||||
if env['target'] in ('debug', 'd'):
|
if env['target'] in ('debug', 'd'):
|
||||||
cpp_library += '.debug'
|
cpp_library += '.debug'
|
||||||
|
|
@ -96,7 +119,7 @@ else:
|
||||||
|
|
||||||
cpp_library += '.' + str(bits)
|
cpp_library += '.' + str(bits)
|
||||||
|
|
||||||
# make sure our binding library is properly includes
|
# make sure our binding library is properly included
|
||||||
env.Append(CPPPATH=['.', godot_headers_path, cpp_bindings_path + 'include/', cpp_bindings_path + 'include/core/', cpp_bindings_path + 'include/gen/', 'src/libpd/cpp','src/libpd/pure-data/src', 'src/libpd/libpd_wrapper', 'src/libpd/libpd_wrapper/util', 'src/rtaudio'])
|
env.Append(CPPPATH=['.', godot_headers_path, cpp_bindings_path + 'include/', cpp_bindings_path + 'include/core/', cpp_bindings_path + 'include/gen/', 'src/libpd/cpp','src/libpd/pure-data/src', 'src/libpd/libpd_wrapper', 'src/libpd/libpd_wrapper/util', 'src/rtaudio'])
|
||||||
env.Append(LIBPATH=[cpp_bindings_path + 'bin/'])
|
env.Append(LIBPATH=[cpp_bindings_path + 'bin/'])
|
||||||
env.Append(LIBS=[cpp_library])
|
env.Append(LIBS=[cpp_library])
|
||||||
|
|
|
||||||
14
src/gdpd.cpp
14
src/gdpd.cpp
|
|
@ -9,6 +9,7 @@ void Gdpd::_register_methods() {
|
||||||
&Gdpd::get_available_output_devices);
|
&Gdpd::get_available_output_devices);
|
||||||
register_method("init_devices", &Gdpd::init_devices);
|
register_method("init_devices", &Gdpd::init_devices);
|
||||||
register_method("init", &Gdpd::init);
|
register_method("init", &Gdpd::init);
|
||||||
|
register_method("stop", &Gdpd::stop);
|
||||||
register_method("openfile", &Gdpd::openfile);
|
register_method("openfile", &Gdpd::openfile);
|
||||||
register_method("closefile", &Gdpd::closefile);
|
register_method("closefile", &Gdpd::closefile);
|
||||||
register_method("subscribe", &Gdpd::subscribe);
|
register_method("subscribe", &Gdpd::subscribe);
|
||||||
|
|
@ -130,8 +131,6 @@ int Gdpd::start() {
|
||||||
Godot::print("There are no available sound devices.");
|
Godot::print("There are no available sound devices.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
RtAudio::StreamOptions options;
|
RtAudio::StreamOptions options;
|
||||||
options.streamName = "gdpd";
|
options.streamName = "gdpd";
|
||||||
options.flags = RTAUDIO_SCHEDULE_REALTIME;
|
options.flags = RTAUDIO_SCHEDULE_REALTIME;
|
||||||
|
|
@ -154,6 +153,14 @@ int Gdpd::start() {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Gdpd::stop() {
|
||||||
|
m_audio.stopStream();
|
||||||
|
m_audio.closeStream();
|
||||||
|
m_pd.closePatch(m_patch);
|
||||||
|
m_pd.computeAudio(false);
|
||||||
|
print("Stopped");
|
||||||
|
}
|
||||||
|
|
||||||
void Gdpd::processAudio(void *outputBuffer, void *inputBuffer,
|
void Gdpd::processAudio(void *outputBuffer, void *inputBuffer,
|
||||||
unsigned int nBufferFrames, double streamTime,
|
unsigned int nBufferFrames, double streamTime,
|
||||||
RtAudioStreamStatus status, void *userData) {
|
RtAudioStreamStatus status, void *userData) {
|
||||||
|
|
@ -173,7 +180,8 @@ void Gdpd::openfile(godot::String baseStr, godot::String dirStr) {
|
||||||
std::wstring dirWs = dirStr.unicode_str();
|
std::wstring dirWs = dirStr.unicode_str();
|
||||||
std::string dirS(dirWs.begin(), dirWs.end());
|
std::string dirS(dirWs.begin(), dirWs.end());
|
||||||
|
|
||||||
libpd_openfile(baseS.c_str(), dirS.c_str());
|
//libpd_openfile(baseS.c_str(), dirS.c_str());
|
||||||
|
m_patch = m_pd.openPatch(baseS.c_str(), dirS.c_str());
|
||||||
|
|
||||||
print("Opened patch");
|
print("Opened patch");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,7 @@ public:
|
||||||
int init_devices(String inputDevice, String outputDevice);
|
int init_devices(String inputDevice, String outputDevice);
|
||||||
int init(int nbInputs, int nbOutputs, int sampleRate, int bufferSize);
|
int init(int nbInputs, int nbOutputs, int sampleRate, int bufferSize);
|
||||||
int start();
|
int start();
|
||||||
|
void stop();
|
||||||
void openfile(String basename, String dirname);
|
void openfile(String basename, String dirname);
|
||||||
void closefile();
|
void closefile();
|
||||||
bool has_message();
|
bool has_message();
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue