summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Emmas <johne53@tiscali.co.uk>2013-09-02 16:54:17 +0100
committerJohn Emmas <johne53@tiscali.co.uk>2013-09-02 16:54:17 +0100
commitc8de67d7a59d088548af55eccac77215e7f42097 (patch)
treeebec07aa5d297f2d5d9c4fc4c2d87e31c1573863
parenta6c85286fef1df3f8f025ee6012796898fc5d77f (diff)
'libs/panners' - Streamline my previous API changes and include Tim's additions to support the GCC compiler
-rw-r--r--libs/ardour/ardour/panner.h48
-rw-r--r--libs/panners/1in2out/panner_1in2out.cc6
-rw-r--r--libs/panners/1in2out/panner_1in2out.h4
3 files changed, 31 insertions, 27 deletions
diff --git a/libs/ardour/ardour/panner.h b/libs/ardour/ardour/panner.h
index c23d3bd33f..e2a32e0dc4 100644
--- a/libs/ardour/ardour/panner.h
+++ b/libs/ardour/ardour/panner.h
@@ -34,32 +34,36 @@
#include "ardour/automation_control.h"
#include "ardour/automatable.h"
-#if !defined(ARDOURPANNER_IS_IN_WINDLL)
- #if defined(COMPILER_MSVC) || defined(COMPILER_MINGW)
- // If you need '__declspec' compatibility, add extra compilers to the above as necessary
- #define ARDOURPANNER_IS_IN_WINDLL 1
- #else
- #define ARDOURPANNER_IS_IN_WINDLL 0
- #endif
+#ifndef ARDOURPANNER_IS_IN_SHARED_LIB
+ #define ARDOURPANNER_IS_IN_SHARED_LIB 1
#endif
-#if ARDOURPANNER_IS_IN_WINDLL && !defined(ARDOURPANNER_API)
- #if defined(BUILDING_ARDOURPANNERS)
- #define ARDOURPANNER_API __declspec(dllexport)
- #define ARDOURPANNER_APICALLTYPE __thiscall
- #define ARDOURPANNER_CAPICALLTYPE __cdecl
- #elif defined(COMPILER_MSVC) || defined(COMPILER_MINGW) // Probably needs Cygwin too, at some point
- #define ARDOURPANNER_API __declspec(dllimport)
- #define ARDOURPANNER_APICALLTYPE __thiscall
- #define ARDOURPANNER_CAPICALLTYPE __cdecl
+#if ARDOURPANNER_IS_IN_SHARED_LIB && !defined(ARDOURPANNER_API)
+ #define ARDOURPANNER_CAPICALLTYPE __cdecl
+
+ #if defined(COMPILER_MSVC) || defined(COMPILER_MINGW)
+ #if defined(BUILDING_ARDOURPANNERS)
+ #define ARDOURPANNER_LOCAL
+ #define ARDOURPANNER_API __declspec(dllexport)
+ #else
+ #define ARDOURPANNER_LOCAL
+ #define ARDOURPANNER_API __declspec(dllimport)
+ #endif
#else
- #error "Attempting to define __declspec with an incompatible compiler !"
+ #if !defined(COMPILER_GCC)
+ #warning "Attempting to export symbols with an unspecified compiler! GCC assumed!"
+ #endif
+
+ #define ARDOURPANNER_LOCAL __attribute__ ((visibility("hidden")))
+ #define ARDOURPANNER_API __attribute__ ((visibility("default")))
#endif
#elif !defined(ARDOURPANNER_API)
- // Other compilers / platforms could be accommodated here
+ #define ARDOURPANNER_CAPICALLTYPE __cdecl
+
+ /* This library was built statically. */
+ /* Visibility is determined by the code. */
#define ARDOURPANNER_API
- #define ARDOURPANNER_APICALLTYPE
- #define ARDOURPANNER_CAPICALLTYPE
+ #define ARDOURPANNER_LOCAL
#endif
namespace ARDOUR {
@@ -95,7 +99,7 @@ public:
* return false
*/
- virtual bool ARDOURPANNER_APICALLTYPE clamp_position (double&) { return true; }
+ virtual bool clamp_position (double&) { return true; }
virtual bool clamp_width (double&) { return true; }
virtual bool clamp_elevation (double&) { return true; }
@@ -103,7 +107,7 @@ public:
virtual std::pair<double, double> width_range () const { return std::make_pair (-DBL_MAX, DBL_MAX); }
virtual std::pair<double, double> elevation_range () const { return std::make_pair (-DBL_MAX, DBL_MAX); }
- virtual void ARDOURPANNER_APICALLTYPE set_position (double) { }
+ virtual void set_position (double) { }
virtual void set_width (double) { }
virtual void set_elevation (double) { }
diff --git a/libs/panners/1in2out/panner_1in2out.cc b/libs/panners/1in2out/panner_1in2out.cc
index 79a63a2b47..dbc9911a77 100644
--- a/libs/panners/1in2out/panner_1in2out.cc
+++ b/libs/panners/1in2out/panner_1in2out.cc
@@ -67,7 +67,7 @@ static PanPluginDescriptor _descriptor = {
Panner1in2out::factory
};
-extern "C" { ARDOURPANNER_API PanPluginDescriptor* ARDOURPANNER_CAPICALLTYPE panner_descriptor () { return &_descriptor; } }
+extern "C" ARDOURPANNER_API PanPluginDescriptor* ARDOURPANNER_CAPICALLTYPE panner_descriptor () { return &_descriptor; }
Panner1in2out::Panner1in2out (boost::shared_ptr<Pannable> p)
: Panner (p)
@@ -104,7 +104,7 @@ Panner1in2out::update ()
desired_right = panR * (scale * panR + 1.0f - scale);
}
-ARDOURPANNER_API void ARDOURPANNER_APICALLTYPE
+ARDOURPANNER_API void
Panner1in2out::set_position (double p)
{
if (clamp_position (p)) {
@@ -112,7 +112,7 @@ Panner1in2out::set_position (double p)
}
}
-ARDOURPANNER_API bool ARDOURPANNER_APICALLTYPE
+ARDOURPANNER_API bool
Panner1in2out::clamp_position (double& p)
{
/* any position between 0.0 and 1.0 is legal */
diff --git a/libs/panners/1in2out/panner_1in2out.h b/libs/panners/1in2out/panner_1in2out.h
index aa5428a329..f035115f6a 100644
--- a/libs/panners/1in2out/panner_1in2out.h
+++ b/libs/panners/1in2out/panner_1in2out.h
@@ -42,8 +42,8 @@ class Panner1in2out : public Panner
Panner1in2out (boost::shared_ptr<Pannable>);
~Panner1in2out ();
- ARDOURPANNER_API void ARDOURPANNER_APICALLTYPE set_position (double);
- ARDOURPANNER_API bool ARDOURPANNER_APICALLTYPE clamp_position (double&);
+ ARDOURPANNER_API void set_position (double);
+ ARDOURPANNER_API bool clamp_position (double&);
std::pair<double, double> position_range () const;
double position() const;