// wait for announce reply from nsm server
for ( i = 0; i < 5000; ++i) {
nsm->check ();
- usleep (i);
- if (nsm->is_active()) {
++
+ Glib::usleep (i);
+ if (nsm->is_active())
break;
+ }
+ }
+ if (i == 5000) {
+ error << _("NSM server did not announce itself") << endmsg;
+ return -1;
}
// wait for open command from nsm server
for ( i = 0; i < 5000; ++i) {
nsm->check ();
- usleep (1000);
- if (nsm->client_id ()) {
++
+ Glib::usleep (1000);
+ if (nsm->client_id ())
break;
+ }
+ }
+
+ if (i == 5000) {
+ error << _("NSM: no client ID provided") << endmsg;
+ return -1;
}
if (_session && nsm) {
#include "ardour_dialog.h"
#include "ardour_window.h"
#include "editing.h"
+ #include "engine_dialog.h"
#include "meterbridge.h"
-#include "nsm.h"
#include "ui_config.h"
#include "enums.h"
#include "visibility_group.h"
class SessionOptionEditor;
class ShuttleControl;
class Splash;
- class SpeakerDialog;
- class ThemeManager;
class TimeInfoBox;
class MidiTracer;
+class NSM_Client;
class LevelMeterHBox;
- class GlobalPortMatrixWindow;
class GUIObjectState;
namespace Gtkmm2ext {
uint32_t npoints = std::min (gdk_screen_width(), (int) pwidth);
double effective_height;
- float curve[npoints];
+ std::vector<float> curve(npoints);
- audio_region()->fade_in()->curve().get_vector (0, audio_region()->fade_in()->back()->when, curve, npoints);
+ audio_region()->fade_in()->curve().get_vector (0, audio_region()->fade_in()->back()->when, &curve[0], npoints);
if (_height >= NAME_HIGHLIGHT_THRESH) {
- effective_height = _height - NAME_HIGHLIGHT_SIZE - 2;
+ effective_height = _height - NAME_HIGHLIGHT_SIZE - 1;
} else {
effective_height = _height - 2;
}
uint32_t npoints = std::min (gdk_screen_width(), (int) pwidth);
double effective_height;
- float curve[npoints];
+ std::vector<float> curve(npoints);
- audio_region()->fade_out()->curve().get_vector (0, audio_region()->fade_out()->back()->when, curve, npoints);
+ audio_region()->fade_out()->curve().get_vector (0, audio_region()->fade_out()->back()->when, &curve[0], npoints);
if (_height >= NAME_HIGHLIGHT_THRESH) {
- effective_height = _height - NAME_HIGHLIGHT_SIZE - 2;
+ effective_height = _height - (NAME_HIGHLIGHT_SIZE + 1); /* skip the top pixel that shows the frame of this regionview */
} else {
- effective_height = _height - 2;
+ effective_height = _height - 2; /* skip the top and bottom pixel that are the frame of this regionview */
}
/* points *MUST* be in anti-clockwise order */
}
import_status.all_done = true;
- unlink(path.c_str());
-#endif
+ ::g_unlink(path.c_str());
}
void
'LOCALEDIR="' + os.path.join(os.path.normpath(bld.env['DATADIR']), 'locale') + '"',
'PROGRAM_NAME="' + bld.env['PROGRAM_NAME'] + '"'
]
+ obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
+ obj.uselib = 'UUID FLAC FONTCONFIG GLIBMM GTHREAD GTK OGG CURL DL'
+ obj.uselib += ' GTKMM CANVAS FFTW3F'
+ obj.uselib += ' AUDIOUNITS OSX GTKOSX LO '
+
+ if bld.is_defined('USE_EXTERNAL_LIBS'):
+ obj.uselib += ' TAGLIB'
+ else:
+ obj.use += ('libtaglib')
+ if sys.platform == 'darwin':
+ obj.uselib += ' AUDIOUNITS OSX GTKOSX'
+ obj.use += ' libappleutility'
obj.includes += ['../libs']
++ if bld.env['build_target'] == 'mingw':
++ if bld.env['DEBUG'] == False:
++ obj.linkflags = ['-mwindows']
++
if bld.is_defined('HAVE_SUIL'):
obj.source += [ 'lv2_plugin_ui.cc' ]
obj.use += [ 'SUIL' ]
* @return the search path to be used when looking for per-system
* configuration files. This may include user configuration files.
*/
-- LIBARDOUR_API PBD::SearchPath ardour_config_search_path ();
++ LIBARDOUR_API PBD::Searchpath ardour_config_search_path ();
/**
* @return the search path to be used when looking for data files
* that could be shared by systems (h/w and configuration independent
* files, such as icons, XML files, etc)
*/
-- LIBARDOUR_API PBD::SearchPath ardour_data_search_path ();
++ LIBARDOUR_API PBD::Searchpath ardour_data_search_path ();
} // namespace ARDOUR
#include "ardour/types.h"
#include "ardour/automation_control.h"
#include "ardour/automatable.h"
-#include "ardour/visibility.h"
-#ifdef ARDOURPANNER_DLL_EXPORTS // defined if we are building the ARDOUR Panners DLLs (instead of using them)
- #define ARDOURPANNER_API LIBARDOUR_HELPER_DLL_EXPORT
-#else
- #define ARDOURPANNER_API LIBARDOUR_HELPER_DLL_IMPORT
-#endif
-#define ARDOURPANNER_LOCAL LIBARDOUR_HELPER_DLL_LOCAL
++
++/* This section is for actual panners to use. They will include this file,
++ * declare ARDOURPANNER_DLL_EXPORTS during compilation, and ... voila.
++ */
++
++#ifdef ARDOURPANNER_DLL_EXPORTS // defined if we are building a panner implementation
++ #define ARDOURPANNER_API LIBARDOUR_DLL_EXPORT
++ #else
++ #define ARDOURPANNER_API LIBARDOUR_DLL_IMPORT
++ #endif
++#define ARDOURPANNER_LOCAL LIBARDOUR_DLL_LOCAL
+
namespace ARDOUR {
class Session;
return *_instance;
}
- return str[0] != '.' && (str.length() > 3 && str.find (".so") == (str.length() - 3));
+static bool panner_filter (const string& str, void */*arg*/)
+{
+#ifdef __APPLE__
+ return str[0] != '.' && (str.length() > 6 && str.find (".dylib") == (str.length() - 6));
+#else
++ return str[0] != '.' && (str.length() > 3 && (str.find (".so") == (str.length() - 3) || str.find (".dll") == (str.length() - 4)));
+#endif
+}
+
void
PannerManager::discover_panners ()
{
- vector<std::string> panner_modules;
-
- Glib::PatternSpec so_extension_pattern("*.so");
- Glib::PatternSpec dylib_extension_pattern("*.dylib");
- Glib::PatternSpec dll_extension_pattern("*.dll");
-
- find_matching_files_in_search_path (panner_search_path (),
- so_extension_pattern, panner_modules);
+ PathScanner scanner;
+ std::vector<std::string *> *panner_modules;
+ std::string search_path = panner_search_path().to_string();
- find_matching_files_in_search_path (panner_search_path (),
- dylib_extension_pattern, panner_modules);
+ DEBUG_TRACE (DEBUG::Panning, string_compose (_("looking for panners in %1\n"), search_path));
- find_matching_files_in_search_path (panner_search_path (),
- dll_extension_pattern, panner_modules);
+ panner_modules = scanner (search_path, panner_filter, 0, false, true, 1, true);
- DEBUG_TRACE (DEBUG::Panning, string_compose (_("looking for panners in %1"), panner_search_path().to_string()));
-
- for (vector<std::string>::iterator i = panner_modules.begin(); i != panner_modules.end(); ++i) {
- panner_discover (*i);
+ for (vector<std::string *>::iterator i = panner_modules->begin(); i != panner_modules->end(); ++i) {
+ panner_discover (**i);
}
++
+ vector_delete (panner_modules);
}
int
namespace ARDOUR {
- SearchPath
+ Searchpath
panner_search_path ()
{
- SearchPath spath(user_config_directory ());
+ Searchpath spath(user_config_directory ());
spath += ardour_dll_directory ();
spath.add_subdirectory_to_paths(panner_dir_name);
++<<<<<<< HEAD
+ spath += SearchPath(Glib::getenv(panner_env_variable_name));
++=======
+
+ spath += Searchpath(Glib::getenv(panner_env_variable_name));
++>>>>>>> windows+cc
return spath;
}
'libardour3', conf.env['MAJOR'], conf.env['MINOR'], 0,
'LIBARDOUR_API', 'ardour/libardour_visibility.h')
autowaf.configure(conf)
- if Options.options.dist_target == 'auto':
- if re.search ("linux", sys.platform) != None:
- autowaf.check_pkg(conf, 'alsa', uselib_store='ALSA')
+ autowaf.check_pkg(conf, 'aubio', uselib_store='AUBIO',
+ exact_version='0.3.2')
autowaf.check_pkg(conf, 'libxml-2.0', uselib_store='XML')
- autowaf.check_pkg(conf, 'lrdf', uselib_store='LRDF',
- atleast_version='0.4.0')
+ if Options.options.dist_target != 'mingw':
+ autowaf.check_pkg(conf, 'lrdf', uselib_store='LRDF',
+ atleast_version='0.4.0')
+ autowaf.check_pkg(conf, 'aubio', uselib_store='AUBIO',
+ atleast_version='0.3.2')
autowaf.check_pkg(conf, 'samplerate', uselib_store='SAMPLERATE',
atleast_version='0.1.0')
autowaf.check_pkg(conf, 'sigc++-2.0', uselib_store='SIGCPP',
static guint
clearlooks_gtk2_rc_parse_dummy (GtkSettings *settings,
GScanner *scanner,
- gchar *name)
+ const gchar *name)
{
- (void) settings;
-
guint token;
+ (void) settings;
+
/* Skip option */
token = g_scanner_get_next_token (scanner);
#include <string>
#include <iostream>
-#include <jack/types.h>
+#include <jack/types.h> /* XXX ... desirable to get rid of this but needed for
+ * now due to use of JackPortIsXXXX
+ */
+ #include <pthread.h>
+
#include "pbd/xml++.h"
+ #ifndef PLATFORM_WINDOWS
#include "pbd/crossthread.h"
+ #endif
#include "pbd/signals.h"
#include "pbd/ringbuffer.h"
obj = bld(features = 'cxx cxxshlib')
obj.source = [ 'panner_1in2out.cc' ]
obj.export_includes = ['.']
-- obj.defines = [ 'PACKAGE="libardour_pan1in2out"' ]
- if bld.is_defined ('INTERNAL_SHARED_LIBS'):
- obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBPBD_DLL=1', 'LIBEVORAL_DLL=1' ]
- obj.defines = [ 'ARDOURPANNER_DLL_EXPORTS' ]
++ obj.defines = [ 'PACKAGE="libardour_pan1in2out"' ]
++ obj.defines += [ 'ARDOURPANNER_DLL_EXPORTS' ]
obj.includes = ['.']
obj.name = 'libardour_pan1in2out'
obj.target = 'pan1in2out'
obj = bld(features = 'cxx cxxshlib')
obj.source = [ 'panner_2in2out.cc' ]
obj.export_includes = ['.']
-- obj.defines = [ 'PACKAGE="libardour_pan2in2out"' ]
- if bld.is_defined ('INTERNAL_SHARED_LIBS'):
- obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBPBD_DLL=1', 'LIBEVORAL_DLL=1' ]
- obj.defines = [ 'ARDOURPANNER_DLL_EXPORTS' ]
++ obj.defines = [ 'PACKAGE="libardour_pan2in2out"' ]
++ obj.defines += [ 'ARDOURPANNER_DLL_EXPORTS' ]
obj.includes = ['.']
obj.name = 'libardour_pan2in2out'
obj.target = 'pan2in2out'
--- /dev/null
- obj.cxxflags = '-DPACKAGE="libardour_panbalance"'
+#!/usr/bin/env python
+from waflib.extras import autowaf as autowaf
+import os
+
+# Library version (UNIX style major, minor, micro)
+# major increment <=> incompatible changes
+# minor increment <=> compatible changes (additions)
+# micro increment <=> no interface changes
+LIBARDOUR_PAN2IN2OUT_LIB_VERSION = '1.0.0'
+
+# Mandatory variables
+top = '.'
+out = 'build'
+
+def options(opt):
+ autowaf.set_options(opt)
+
+def configure(conf):
+ autowaf.configure(conf)
+
+def build(bld):
+ obj = bld(features = 'cxx cxxshlib')
+ obj.source = [ 'panner_balance.cc' ]
+ obj.export_includes = ['.']
++ obj.defines = ['PACKAGE="libardour_panbalance"']
++ obj.defines += ['ARDOURPANNER_DLL_EXPORTS']
+ obj.includes = ['.']
+ obj.name = 'libardour_panbalance'
+ obj.target = 'panbalance'
+ obj.use = 'libardour libardour_cp libpbd'
+ obj.vnum = LIBARDOUR_PAN2IN2OUT_LIB_VERSION
+ obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3', 'panners')
+
+def shutdown():
+ autowaf.shutdown()
obj = bld(features = 'cxx cxxshlib')
obj.source = [ 'vbap_speakers.cc', 'vbap.cc' ]
obj.export_includes = ['.']
-- obj.defines = [ 'PACKAGE="libardour_panvbap"' ]
- if bld.is_defined ('INTERNAL_SHARED_LIBS'):
- obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBCONTROLCP_DLL_=1', 'LIBPBD_DLL=1', 'LIBEVORAL_DLL=1' ]
- obj.defines = [ 'ARDOURPANNER_DLL_EXPORTS' ]
++ obj.defines = ['PACKAGE="libardour_panvbap"']
++ obj.defines += ['ARDOURPANNER_DLL_EXPORTS']
obj.includes = ['.']
obj.name = 'libardour_panvbap'
obj.target = 'panvbap'
*/
--#ifndef PBD_SEARCH_PATH_INCLUDED
--#define PBD_SEARCH_PATH_INCLUDED
++#ifndef __libpbd_search_path_h__
++#define __libpbd_search_path_h__
#include <string>
#include <vector>
} // namespace PBD
--#endif
++#endif /* __libpbd_search_path_h__ */
namespace PBD {
+
LIBPBD_API void stacktrace (std::ostream& out, int levels = 0);
LIBPBD_API void trace_twb();
-/* JE - !!!! Declaration might possibly get removed (except it's still used in 'libs/canvas/item.cc') */ std::string demangle (const std::string&);
+ LIBPBD_API std::string demangle (const std::string&);
template<typename T>
- class LIBPBD_API thing_with_backtrace
+ class /*LIBPBD_API*/ thing_with_backtrace
{
public:
thing_with_backtrace () {
#else
std::string
- PBD::demangle (std::string const & l)
-/* JE - !!!! 'PBD' namespace might possibly get removed (except it's still used in 'libs/canvas/item.cc') */PBD::demangle (std::string const & l)
++PBD::demangle (std::string const & l) /* JE - !!!! 'PBD' namespace might possibly get removed (except it's still used in 'libs/canvas/item.cc') */
{
return std::string();
}
void prev_track (uint32_t initial_id);
private:
- ControlProtocol (const ControlProtocol&); /* noncopyable */
- ARDOURSURFACE_LOCAL ControlProtocol (const ControlProtocol&); /* noncopyable */
++ LIBCONTROLCP_LOCAL ControlProtocol (const ControlProtocol&); /* noncopyable */
+ bool _active;
};
extern "C" {
if bld.is_defined ('INTERNAL_SHARED_LIBS'):
obj = bld.shlib(features = 'c cxx cshlib cxxshlib', source=controlcp_sources)
# defines for this library
- obj.defines = [ 'LIBCONTROLCP_DLL_EXPORTS=1' ]
- obj.defines = [ 'LIBCONTROLCP_DLL=1', 'LIBCONTROLCP_DLL_EXPORTS=1' ]
- # internal shared libs that we use
- obj.defines += [ 'LIBPBD_DLL=1', 'LIBARDOUR_DLL=1', 'LIBEVORAL_DLL=1' ]
++ obj.defines = [ 'LIBCONTROLCP_DLL_EXPORTS' ]
obj.cxxflags = [ '-fvisibility=hidden' ]
obj.cflags = [ '-fvisibility=hidden' ]
else:
};
- extern "C" {
-
- ControlProtocolDescriptor*
- protocol_descriptor () {
- return &mackie_descriptor;
- }
-
- }
-extern "C" ARDOURSURFACE_API ControlProtocolDescriptor* protocol_descriptor () { return &mackie_descriptor; }
++extern "C" LIBCONTROLCP_API ControlProtocolDescriptor* protocol_descriptor () { return &mackie_descriptor; }
# need ../libs because some GTK2 header files require stuff there
obj.includes = ['.', '../libs']
obj.name = 'libardour_mcp'
- obj.defines = [ 'ARDOURSURFACE_DLL_EXPORTS' ]
++ obj.defines = [ 'LIBCONTROLCP_EXPORTS' ]
++ obj.defines += [ 'PACKAGE="libardour_mcp"' ]
obj.target = 'ardour_mcp'
obj.uselib = 'GTKMM'
obj.use = 'libardour libardour_cp libgtkmm2ext'
destroy : delete_osc_protocol
};
- extern "C" {
- ControlProtocolDescriptor*
- protocol_descriptor () {
- return &osc_descriptor;
- }
- }
-extern "C" ARDOURSURFACE_API ControlProtocolDescriptor* protocol_descriptor () { return &osc_descriptor; }
++extern "C" LIBCONTROLCP_API ControlProtocolDescriptor* protocol_descriptor () { return &osc_descriptor; }
#include <unistd.h>
#include <fcntl.h>
+ #include <glib/gstdio.h>
#include <glibmm/miscutils.h>
+#include <pbd/convert.h>
#include <pbd/pthread_utils.h>
#include <pbd/file_utils.h>
#include <pbd/failed_constructor.h>
'''
obj.export_includes = ['.']
obj.defines = [ 'PACKAGE="ardour_osc"' ]
- if bld.is_defined ('INTERNAL_SHARED_LIBS'):
- obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBCONTROLCP_DLL=1', 'LIBPBD_DLL=1', 'LIBEVORAL_DLL=1' ]
obj.includes = ['.', './osc']
obj.name = 'libardour_osc'
+ obj.defines = [ 'ARDOURSURFACE_DLL_EXPORTS' ]
obj.target = 'ardour_osc'
obj.uselib = ' LO '
obj.use = 'libardour libardour_cp libpbd'
'''
obj.export_includes = ['./tranzport']
obj.defines = [ 'PACKAGE="ardour_tranzport"' ]
- if bld.is_defined ('INTERNAL_SHARED_LIBS'):
- obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBCONTROLCP_DLL=1', 'LIBPBD_DLL=1', 'LIBGTKMM2EXT_DLL=1' ]
obj.includes = ['.', './tranzport']
obj.name = 'libardour_tranzport'
+ obj.defines = [ 'ARDOURSURFACE_DLL_EXPORTS' ]
obj.target = 'ardour_tranzport'
obj.use = 'libardour libardour_cp'
obj.vnum = LIBARDOUR_TRANZPORT_LIB_VERSION
destroy : delete_wiimote_protocol
};
-
- extern "C" {
-
- ControlProtocolDescriptor*
- protocol_descriptor () {
- return &wiimote_descriptor;
- }
-
- }
-extern "C" ARDOURSURFACE_API ControlProtocolDescriptor* protocol_descriptor () { return &wiimote_descriptor; }
++extern "C" LIBCONTROLCP_API ControlProtocolDescriptor* protocol_descriptor () { return &wiimote_descriptor; }
'''
obj.export_includes = ['./wiimote']
obj.defines = [ 'PACKAGE="ardour_wiimote"' ]
- if bld.is_defined ('INTERNAL_SHARED_LIBS'):
- obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBCONTROLCP_DLL=1', 'LIBPBD_DLL=1', 'LIBGTKMM2EXT_DLL=1', 'LIBEVORAL_DLL=1' ]
obj.includes = ['.', '../libs']
obj.name = 'libardour_wiimote'
+ obj.defines = [ 'ARDOURSURFACE_DLL_EXPORTS' ]
obj.target = 'ardour_wiimote'
obj.uselib = 'GTKMM CWIID'
obj.use = 'libardour libardour_cp libgtkmm2ext'
'libs/timecode',
'libs/ardour',
'libs/gtkmm2ext',
- 'libs/clearlooks-newer',
'libs/audiographer',
'libs/canvas',
+ 'libs/plugins/reasonablesynth.lv2',
'gtk2_ardour',
'export',
'midi_maps',
print("However, this is tricky and not recommended for beginners.")
sys.exit (-1)
- if opt.lxvst:
+ if conf.env['LXVST_SUPPORT'] == True:
if conf.env['build_target'] == 'x86_64':
- conf.env.append_value('CXXFLAGS', "-DLXVST_64BIT")
+ compiler_flags.append("-DLXVST_64BIT")
else:
- conf.env.append_value('CXXFLAGS', "-DLXVST_32BIT")
+ compiler_flags.append("-DLXVST_32BIT")
#
# a single way to test if we're on OS X