use visibility control on JACK audio backend, so that we can import this change into windows branch
This commit is contained in:
parent
83a826095d
commit
dce6b71e82
@ -31,6 +31,14 @@
|
||||
#include "ardour/types.h"
|
||||
#include "ardour/audioengine.h"
|
||||
#include "ardour/port_engine.h"
|
||||
#include "ardour/visibility.h"
|
||||
|
||||
#ifdef ARDOURBACKEND_DLL_EXPORTS // defined if we are building the ARDOUR Panners DLLs (instead of using them)
|
||||
#define ARDOURBACKEND_API LIBARDOUR_HELPER_DLL_EXPORT
|
||||
#else
|
||||
#define ARDOURBACKEND_API LIBARDOUR_HELPER_DLL_IMPORT
|
||||
#endif
|
||||
#define ARDOURBACKEND_LOCAL LIBARDOUR_HELPER_DLL_LOCAL
|
||||
|
||||
namespace ARDOUR {
|
||||
|
||||
|
44
libs/ardour/ardour/visibility.h
Normal file
44
libs/ardour/ardour/visibility.h
Normal file
@ -0,0 +1,44 @@
|
||||
/*
|
||||
Copyright (C) 2013 Paul Davis
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
*/
|
||||
|
||||
#ifndef __libardour_visibility_h__
|
||||
#define __libardour_visibility_h__
|
||||
|
||||
/* _WIN32 is defined by most compilers targetting Windows, but within the
|
||||
* ardour source tree, we also define COMPILER_MSVC or COMPILER_MINGW depending
|
||||
* on how a Windows build is built.
|
||||
*/
|
||||
|
||||
#if defined _WIN32 || defined __CYGWIN__ || defined(COMPILER_MSVC) || defined(COMPILER_MINGW)
|
||||
#define LIBARDOUR_HELPER_DLL_IMPORT __declspec(dllimport)
|
||||
#define LIBARDOUR_HELPER_DLL_EXPORT __declspec(dllexport)
|
||||
#define LIBARDOUR_HELPER_DLL_LOCAL
|
||||
#else
|
||||
#if __GNUC__ >= 4
|
||||
#define LIBARDOUR_HELPER_DLL_IMPORT __attribute__ ((visibility ("default")))
|
||||
#define LIBARDOUR_HELPER_DLL_EXPORT __attribute__ ((visibility ("default")))
|
||||
#define LIBARDOUR_HELPER_DLL_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
#else
|
||||
#define LIBARDOUR_HELPER_DLL_IMPORT
|
||||
#define LIBARDOUR_HELPER_DLL_EXPORT
|
||||
#define LIBARDOUR_HELPER_DLL_LOCAL
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif /* __libardour_visibility_h__ */
|
@ -505,7 +505,8 @@ AudioEngine::backend_discover (const string& path)
|
||||
{
|
||||
Glib::Module module (path);
|
||||
AudioBackendInfo* info;
|
||||
void* sym = 0;
|
||||
AudioBackendInfo* (*dfunc)(void);
|
||||
void* func = 0;
|
||||
|
||||
if (!module) {
|
||||
error << string_compose(_("AudioEngine: cannot load module \"%1\" (%2)"), path,
|
||||
@ -513,15 +514,16 @@ AudioEngine::backend_discover (const string& path)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!module.get_symbol ("descriptor", sym)) {
|
||||
error << string_compose(_("AudioEngine: backend at \"%1\" has no descriptor."), path) << endmsg;
|
||||
if (!module.get_symbol ("descriptor", func)) {
|
||||
error << string_compose(_("AudioEngine: backend at \"%1\" has no descriptor function."), path) << endmsg;
|
||||
error << Glib::Module::get_last_error() << endmsg;
|
||||
return 0;
|
||||
}
|
||||
|
||||
module.make_resident ();
|
||||
|
||||
info = (AudioBackendInfo*) sym;
|
||||
dfunc = (AudioBackendInfo* (*)(void))func;
|
||||
info = dfunc();
|
||||
|
||||
return info;
|
||||
}
|
||||
|
@ -66,19 +66,13 @@ already_configured ()
|
||||
return JackConnection::server_running ();
|
||||
}
|
||||
|
||||
extern "C" {
|
||||
|
||||
|
||||
/* functions looked up using dlopen-and-cousins, and so naming scope
|
||||
* must be non-mangled.
|
||||
*/
|
||||
static ARDOUR::AudioBackendInfo _descriptor = {
|
||||
"JACK",
|
||||
instantiate,
|
||||
deinstantiate,
|
||||
backend_factory,
|
||||
already_configured,
|
||||
};
|
||||
|
||||
ARDOUR::AudioBackendInfo descriptor = {
|
||||
"JACK",
|
||||
instantiate,
|
||||
deinstantiate,
|
||||
backend_factory,
|
||||
already_configured,
|
||||
};
|
||||
}
|
||||
extern "C" ARDOURBACKEND_API ARDOUR::AudioBackendInfo* descriptor() { return &_descriptor; }
|
||||
|
||||
|
@ -38,8 +38,9 @@ def build(bld):
|
||||
obj.use = 'ardour libpbd'
|
||||
obj.vnum = JACKBACKEND_VERSION
|
||||
obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3', 'backends')
|
||||
obj.defines = ['PACKAGE="' + I18N_PACKAGE + '"']
|
||||
|
||||
obj.defines = ['PACKAGE="' + I18N_PACKAGE + '"',
|
||||
'ARDOURBACKEND_DLL_EXPORTS'
|
||||
]
|
||||
|
||||
#
|
||||
# device discovery code in the jack backend needs ALSA
|
||||
|
Loading…
Reference in New Issue
Block a user