Browse Source

Rework some symbol exports, resolving conflicts of standalone/utils

tags/v2.3.0-RC1
falkTX 5 years ago
parent
commit
0fad472b59
9 changed files with 198 additions and 237 deletions
  1. +2
    -4
      source/backend/CarlaHost.h
  2. +0
    -157
      source/backend/CarlaHostCommon.cpp
  3. +138
    -20
      source/backend/CarlaStandalone.cpp
  4. +16
    -18
      source/backend/CarlaUtils.h
  5. +6
    -4
      source/backend/engine/CarlaEngineNative.cpp
  6. +30
    -4
      source/backend/utils/Information.cpp
  7. +2
    -2
      source/backend/utils/Windows.cpp
  8. +1
    -14
      source/includes/CarlaNativePlugin.h
  9. +3
    -14
      source/plugin/carla-host-plugin.cpp

+ 2
- 4
source/backend/CarlaHost.h View File

@@ -203,9 +203,7 @@ typedef struct _CarlaParameterInfo {
* C++ constructor and destructor. * C++ constructor and destructor.
*/ */
CARLA_API _CarlaParameterInfo() noexcept; CARLA_API _CarlaParameterInfo() noexcept;
CARLA_API _CarlaParameterInfo(const char* n) noexcept;
CARLA_API ~_CarlaParameterInfo() noexcept; CARLA_API ~_CarlaParameterInfo() noexcept;
const char* _reserved;
CARLA_DECLARE_NON_COPY_STRUCT(_CarlaParameterInfo) CARLA_DECLARE_NON_COPY_STRUCT(_CarlaParameterInfo)
#endif #endif


@@ -1156,12 +1154,12 @@ CARLA_EXPORT const char* carla_get_host_osc_url_udp(CarlaHostHandle handle);
/*! /*!
* Get the absolute filename of this carla library. * Get the absolute filename of this carla library.
*/ */
CARLA_EXPORT const char* carla_get_library_filename(void);
CARLA_EXPORT const char* carla_standalone_get_library_filename(void);


/*! /*!
* Get the folder where this carla library resides. * Get the folder where this carla library resides.
*/ */
CARLA_EXPORT const char* carla_get_library_folder(void);
CARLA_EXPORT const char* carla_standalone_get_library_folder(void);


/*! /*!
* Initialize NSM (that is, announce ourselves to it). * Initialize NSM (that is, announce ourselves to it).


+ 0
- 157
source/backend/CarlaHostCommon.cpp View File

@@ -1,157 +0,0 @@
/*
* Carla Plugin Host
* Copyright (C) 2011-2014 Filipe Coelho <falktx@falktx.com>
*
* 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 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.
*
* For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/

#include "CarlaHost.h"
#include "CarlaString.hpp"

#include "water/files/File.h"

namespace CB = CarlaBackend;

// -------------------------------------------------------------------------------------------------------------------
// Always return a valid string ptr

static const char* const gNullCharPtr = "";

#ifdef CARLA_COMMON_NEED_CHECKSTRINGPTR
static void checkStringPtr(const char*& charPtr) noexcept
{
if (charPtr == nullptr)
charPtr = gNullCharPtr;
}
#endif

// -------------------------------------------------------------------------------------------------------------------
// Constructors

_CarlaPluginInfo::_CarlaPluginInfo() noexcept
: type(CB::PLUGIN_NONE),
category(CB::PLUGIN_CATEGORY_NONE),
hints(0x0),
optionsAvailable(0x0),
optionsEnabled(0x0),
filename(gNullCharPtr),
name(gNullCharPtr),
label(gNullCharPtr),
maker(gNullCharPtr),
copyright(gNullCharPtr),
iconName(gNullCharPtr),
uniqueId(0) {}

_CarlaPluginInfo::~_CarlaPluginInfo() noexcept
{
if (label != gNullCharPtr)
delete[] label;
if (maker != gNullCharPtr)
delete[] maker;
if (copyright != gNullCharPtr)
delete[] copyright;
}

_CarlaParameterInfo::_CarlaParameterInfo() noexcept
: name(gNullCharPtr),
symbol(gNullCharPtr),
unit(gNullCharPtr),
comment(gNullCharPtr),
groupName(gNullCharPtr),
scalePointCount(0),
_reserved(gNullCharPtr) {}

_CarlaParameterInfo::_CarlaParameterInfo(const char* const n) noexcept
: name(n),
symbol(n),
unit(n),
comment(n),
groupName(n),
scalePointCount(0),
_reserved(n) {}

_CarlaParameterInfo::~_CarlaParameterInfo() noexcept
{
if (name != _reserved)
delete[] name;
if (symbol != _reserved)
delete[] symbol;
if (unit != _reserved)
delete[] unit;
if (comment != _reserved)
delete[] comment;
if (groupName != _reserved)
delete[] groupName;
}

_CarlaScalePointInfo::_CarlaScalePointInfo() noexcept
: value(0.0f),
label(gNullCharPtr) {}

_CarlaScalePointInfo::~_CarlaScalePointInfo() noexcept
{
if (label != gNullCharPtr)
delete[] label;
}

_CarlaTransportInfo::_CarlaTransportInfo() noexcept
: playing(false),
frame(0),
bar(0),
beat(0),
tick(0),
bpm(0.0) {}

void _CarlaTransportInfo::clear() noexcept
{
playing = false;
frame = 0;
bar = 0;
beat = 0;
tick = 0;
bpm = 0.0;
}

// -------------------------------------------------------------------------------------------------------------------

const char* carla_get_library_filename()
{
carla_debug("carla_get_library_filename()");

static CarlaString ret;

if (ret.isEmpty())
{
using water::File;
ret = File(File::getSpecialLocation(File::currentExecutableFile)).getFullPathName().toRawUTF8();
}

return ret;
}

const char* carla_get_library_folder()
{
carla_debug("carla_get_library_folder()");

static CarlaString ret;

if (ret.isEmpty())
{
using water::File;
ret = File(File::getSpecialLocation(File::currentExecutableFile).getParentDirectory()).getFullPathName().toRawUTF8();
}

return ret;
}

// -------------------------------------------------------------------------------------------------------------------

+ 138
- 20
source/backend/CarlaStandalone.cpp View File

@@ -27,13 +27,12 @@
#include "CarlaBackendUtils.hpp" #include "CarlaBackendUtils.hpp"
#include "CarlaBase64Utils.hpp" #include "CarlaBase64Utils.hpp"
#include "ThreadSafeFFTW.hpp" #include "ThreadSafeFFTW.hpp"

#ifdef BUILD_BRIDGE
# include "water/files/File.h"
#else
#ifndef BUILD_BRIDGE
# include "CarlaLogThread.hpp" # include "CarlaLogThread.hpp"
#endif #endif


#include "water/files/File.h"

#define CARLA_SAFE_ASSERT_WITH_LAST_ERROR_RETURN(cond, msg, ret) \ #define CARLA_SAFE_ASSERT_WITH_LAST_ERROR_RETURN(cond, msg, ret) \
if (! (cond)) { \ if (! (cond)) { \
carla_stderr2("%s: " msg, __FUNCTION__); \ carla_stderr2("%s: " msg, __FUNCTION__); \
@@ -43,21 +42,108 @@
} }


// -------------------------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------------------------
// API

#ifndef CARLA_PLUGIN_EXPORT
# define CARLA_COMMON_NEED_CHECKSTRINGPTR
# include "CarlaHostCommon.cpp"
# undef CARLA_COMMON_NEED_CHECKSTRINGPTR
#endif


#ifdef USING_JUCE #ifdef USING_JUCE
static void carla_juce_init();
static void carla_juce_idle();
static void carla_juce_cleanup();
static void carla_standalone_juce_init(void);
static void carla_standalone_juce_idle(void);
static void carla_standalone_juce_cleanup(void);
# define carla_juce_init carla_standalone_juce_init
# define carla_juce_idle carla_standalone_juce_idle
# define carla_juce_cleanup carla_standalone_juce_cleanup
# include "utils/JUCE.cpp" # include "utils/JUCE.cpp"
# undef carla_juce_init
# undef carla_juce_idle
# undef carla_juce_cleanup
#endif #endif


// -------------------------------------------------------------------------------------------------------------------
// Always return a valid string ptr for standalone functions

static const char* const gNullCharPtr = "";

static void checkStringPtr(const char*& charPtr) noexcept
{
if (charPtr == nullptr)
charPtr = gNullCharPtr;
}

// -------------------------------------------------------------------------------------------------------------------
// Constructors

_CarlaPluginInfo::_CarlaPluginInfo() noexcept
: type(CB::PLUGIN_NONE),
category(CB::PLUGIN_CATEGORY_NONE),
hints(0x0),
optionsAvailable(0x0),
optionsEnabled(0x0),
filename(gNullCharPtr),
name(gNullCharPtr),
label(gNullCharPtr),
maker(gNullCharPtr),
copyright(gNullCharPtr),
iconName(gNullCharPtr),
uniqueId(0) {}

_CarlaPluginInfo::~_CarlaPluginInfo() noexcept
{
if (label != gNullCharPtr)
delete[] label;
if (maker != gNullCharPtr)
delete[] maker;
if (copyright != gNullCharPtr)
delete[] copyright;
}

_CarlaParameterInfo::_CarlaParameterInfo() noexcept
: name(gNullCharPtr),
symbol(gNullCharPtr),
unit(gNullCharPtr),
comment(gNullCharPtr),
groupName(gNullCharPtr),
scalePointCount(0) {}

_CarlaParameterInfo::~_CarlaParameterInfo() noexcept
{
if (name != gNullCharPtr)
delete[] name;
if (symbol != gNullCharPtr)
delete[] symbol;
if (unit != gNullCharPtr)
delete[] unit;
if (comment != gNullCharPtr)
delete[] comment;
if (groupName != gNullCharPtr)
delete[] groupName;
}

_CarlaScalePointInfo::_CarlaScalePointInfo() noexcept
: value(0.0f),
label(gNullCharPtr) {}

_CarlaScalePointInfo::~_CarlaScalePointInfo() noexcept
{
if (label != gNullCharPtr)
delete[] label;
}

_CarlaTransportInfo::_CarlaTransportInfo() noexcept
: playing(false),
frame(0),
bar(0),
beat(0),
tick(0),
bpm(0.0) {}

void _CarlaTransportInfo::clear() noexcept
{
playing = false;
frame = 0;
bar = 0;
beat = 0;
tick = 0;
bpm = 0.0;
}

// -------------------------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------------------------


using CarlaBackend::CarlaPluginPtr; using CarlaBackend::CarlaPluginPtr;
@@ -319,7 +405,7 @@ bool carla_engine_init(CarlaHostHandle handle, const char* driverName, const cha
#endif #endif


#ifdef USING_JUCE #ifdef USING_JUCE
carla_juce_init();
carla_standalone_juce_init();
#endif #endif


CarlaHostStandalone& shandle((CarlaHostStandalone&)*handle); CarlaHostStandalone& shandle((CarlaHostStandalone&)*handle);
@@ -369,7 +455,7 @@ bool carla_engine_init(CarlaHostHandle handle, const char* driverName, const cha
shandle.engine = nullptr; shandle.engine = nullptr;
delete engine; delete engine;
#ifdef USING_JUCE #ifdef USING_JUCE
carla_juce_cleanup();
carla_standalone_juce_cleanup();
#endif #endif
return false; return false;
} }
@@ -449,7 +535,7 @@ bool carla_engine_close(CarlaHostHandle handle)
delete engine; delete engine;


#ifdef USING_JUCE #ifdef USING_JUCE
carla_juce_cleanup();
carla_standalone_juce_cleanup();
#endif #endif
return closed; return closed;
} }
@@ -462,7 +548,7 @@ void carla_engine_idle(CarlaHostHandle handle)


#ifdef USING_JUCE #ifdef USING_JUCE
if (handle->isStandalone) if (handle->isStandalone)
carla_juce_idle();
carla_standalone_juce_idle();
#endif #endif
} }


@@ -1354,7 +1440,7 @@ const CarlaPortCountInfo* carla_get_parameter_count_info(CarlaHostHandle handle,


const CarlaParameterInfo* carla_get_parameter_info(CarlaHostHandle handle, uint pluginId, uint32_t parameterId) const CarlaParameterInfo* carla_get_parameter_info(CarlaHostHandle handle, uint pluginId, uint32_t parameterId)
{ {
static CarlaParameterInfo retInfo(gNullCharPtr);
static CarlaParameterInfo retInfo;


// reset // reset
retInfo.scalePointCount = 0; retInfo.scalePointCount = 0;
@@ -2267,6 +2353,38 @@ const char* carla_get_host_osc_url_udp(CarlaHostHandle handle)
#endif #endif
} }


// -------------------------------------------------------------------------------------------------------------------

const char* carla_standalone_get_library_filename()
{
carla_debug("carla_standalone_get_library_filename()");

static CarlaString ret;

if (ret.isEmpty())
{
using water::File;
ret = File(File::getSpecialLocation(File::currentExecutableFile)).getFullPathName().toRawUTF8();
}

return ret;
}

const char* carla_standalone_get_library_folder()
{
carla_debug("carla_standalone_get_library_folder()");

static CarlaString ret;

if (ret.isEmpty())
{
using water::File;
ret = File(File::getSpecialLocation(File::currentExecutableFile).getParentDirectory()).getFullPathName().toRawUTF8();
}

return ret;
}

// -------------------------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------------------------


#ifndef CARLA_PLUGIN_EXPORT #ifndef CARLA_PLUGIN_EXPORT
@@ -2279,6 +2397,6 @@ const char* carla_get_host_osc_url_udp(CarlaHostHandle handle)
# include "CarlaPipeUtils.cpp" # include "CarlaPipeUtils.cpp"
# include "CarlaProcessUtils.cpp" # include "CarlaProcessUtils.cpp"
# include "CarlaStateUtils.cpp" # include "CarlaStateUtils.cpp"
#endif
#endif /* CARLA_PLUGIN_EXPORT */


// -------------------------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------------------------

+ 16
- 18
source/backend/CarlaUtils.h View File

@@ -262,19 +262,29 @@ CARLA_EXPORT bool carla_pipe_client_flush_and_unlock(CarlaPipeClientHandle handl
*/ */
CARLA_EXPORT void carla_pipe_client_destroy(CarlaPipeClientHandle handle); CARLA_EXPORT void carla_pipe_client_destroy(CarlaPipeClientHandle handle);


#ifndef CARLA_HOST_H_INCLUDED
/* --------------------------------------------------------------------------------------------------------------------
* window control */

CARLA_EXPORT int carla_cocoa_get_window(void* nsViewPtr);

CARLA_EXPORT void carla_x11_reparent_window(uintptr_t winId1, uintptr_t winId2);

CARLA_EXPORT void carla_x11_move_window(uintptr_t winId, int x, int y);

CARLA_EXPORT int* carla_x11_get_window_pos(uintptr_t winId);

/* -------------------------------------------------------------------------------------------------------------------- /* --------------------------------------------------------------------------------------------------------------------
* info about current library */ * info about current library */


/*! /*!
* Get the absolute filename of this carla library. * Get the absolute filename of this carla library.
*/ */
CARLA_EXPORT const char* carla_get_library_filename(void);
CARLA_EXPORT const char* carla_utils_get_library_filename(void);


/*! /*!
* Get the folder where this carla library resides. * Get the folder where this carla library resides.
*/ */
CARLA_EXPORT const char* carla_get_library_folder(void);
CARLA_EXPORT const char* carla_utils_get_library_folder(void);


/* -------------------------------------------------------------------------------------------------------------------- /* --------------------------------------------------------------------------------------------------------------------
* JUCE */ * JUCE */
@@ -287,30 +297,18 @@ CARLA_EXPORT const char* carla_get_library_folder(void);
* *
* Make sure to call carla_juce_cleanup after you are done with APIs that need JUCE. * Make sure to call carla_juce_cleanup after you are done with APIs that need JUCE.
*/ */
CARLA_EXPORT void carla_juce_init();
CARLA_EXPORT void carla_juce_init(void);


/*! /*!
* Give idle time to JUCE stuff. * Give idle time to JUCE stuff.
* Currently only used for Linux. * Currently only used for Linux.
*/ */
CARLA_EXPORT void carla_juce_idle();
CARLA_EXPORT void carla_juce_idle(void);


/*! /*!
* Cleanup the JUCE stuff that was initialized by carla_juce_init. * Cleanup the JUCE stuff that was initialized by carla_juce_init.
*/ */
CARLA_EXPORT void carla_juce_cleanup();
#endif

/* --------------------------------------------------------------------------------------------------------------------
* window control */

CARLA_EXPORT int carla_cocoa_get_window(void* nsViewPtr);

CARLA_EXPORT void carla_x11_reparent_window(uintptr_t winId1, uintptr_t winId2);

CARLA_EXPORT void carla_x11_move_window(uintptr_t winId, int x, int y);

CARLA_EXPORT int* carla_x11_get_window_pos(uintptr_t winId);
CARLA_EXPORT void carla_juce_cleanup(void);


/* ----------------------------------------------------------------------------------------------------------------- */ /* ----------------------------------------------------------------------------------------------------------------- */




+ 6
- 4
source/backend/engine/CarlaEngineNative.cpp View File

@@ -218,8 +218,10 @@ public:
if (pData->options.binaryDir != nullptr) if (pData->options.binaryDir != nullptr)
delete[] pData->options.binaryDir; delete[] pData->options.binaryDir;


const water::String binaryDir(File(File::getSpecialLocation(File::currentExecutableFile).getParentDirectory()).getFullPathName());

pData->options.resourceDir = carla_strdup(pHost->resourceDir); pData->options.resourceDir = carla_strdup(pHost->resourceDir);
pData->options.binaryDir = carla_strdup(carla_get_library_folder());
pData->options.binaryDir = carla_strdup(binaryDir.toRawUTF8());
} }


~CarlaEngineNative() override ~CarlaEngineNative() override
@@ -2877,9 +2879,9 @@ const EngineDriverDeviceInfo* getRtAudioDeviceInfo(const uint, const char* const


CARLA_BACKEND_END_NAMESPACE CARLA_BACKEND_END_NAMESPACE


#define CARLA_PLUGIN_UI_CLASS_PREFIX EngineNative
#include "CarlaHostCommon.cpp"
#define CARLA_PLUGIN_UI_CLASS_PREFIX Plugin
#include "CarlaPluginUI.cpp" #include "CarlaPluginUI.cpp"
# undef CARLA_PLUGIN_UI_CLASS_PREFIX
#include "CarlaDssiUtils.cpp" #include "CarlaDssiUtils.cpp"
#include "CarlaMacUtils.cpp" #include "CarlaMacUtils.cpp"
#include "CarlaPatchbayUtils.cpp" #include "CarlaPatchbayUtils.cpp"
@@ -2887,6 +2889,6 @@ CARLA_BACKEND_END_NAMESPACE
#include "CarlaProcessUtils.cpp" #include "CarlaProcessUtils.cpp"
#include "CarlaStateUtils.cpp" #include "CarlaStateUtils.cpp"


#endif
#endif /* CARLA_PLUGIN_EXPORT */


// ----------------------------------------------------------------------- // -----------------------------------------------------------------------

+ 30
- 4
source/backend/utils/Information.cpp View File

@@ -1,6 +1,6 @@
/* /*
* Carla Plugin Host * Carla Plugin Host
* Copyright (C) 2011-2019 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2011-2020 Filipe Coelho <falktx@falktx.com>
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as * modify it under the terms of the GNU General Public License as
@@ -221,8 +221,34 @@ const char* const* carla_get_supported_features()


// ------------------------------------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------------------------------------


#ifndef CARLA_PLUGIN_EXPORT
# include "../CarlaHostCommon.cpp"
#endif
const char* carla_utils_get_library_filename()
{
carla_debug("carla_utils_get_library_filename()");

static CarlaString ret;

if (ret.isEmpty())
{
using water::File;
ret = File(File::getSpecialLocation(File::currentExecutableFile)).getFullPathName().toRawUTF8();
}

return ret;
}

const char* carla_utils_get_library_folder()
{
carla_debug("carla_utils_get_library_folder()");

static CarlaString ret;

if (ret.isEmpty())
{
using water::File;
ret = File(File::getSpecialLocation(File::currentExecutableFile).getParentDirectory()).getFullPathName().toRawUTF8();
}

return ret;
}


// ------------------------------------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------------------------------------

+ 2
- 2
source/backend/utils/Windows.cpp View File

@@ -19,7 +19,7 @@


#include "CarlaUtils.hpp" #include "CarlaUtils.hpp"


#ifdef CARLA_OS_MAC
#if defined(CARLA_OS_MAC) && !defined(CARLA_PLUGIN_EXPORT)
# import <Cocoa/Cocoa.h> # import <Cocoa/Cocoa.h>
#endif #endif


@@ -35,7 +35,7 @@ int carla_cocoa_get_window(void* nsViewPtr)
{ {
CARLA_SAFE_ASSERT_RETURN(nsViewPtr != nullptr, 0); CARLA_SAFE_ASSERT_RETURN(nsViewPtr != nullptr, 0);


#ifdef CARLA_OS_MAC
#if defined(CARLA_OS_MAC) && !defined(CARLA_PLUGIN_EXPORT)
NSView* const nsView = (NSView*)nsViewPtr; NSView* const nsView = (NSView*)nsViewPtr;
return [[nsView window] windowNumber]; return [[nsView window] windowNumber];
#else #else


+ 1
- 14
source/includes/CarlaNativePlugin.h View File

@@ -20,20 +20,7 @@


#include "CarlaNative.h" #include "CarlaNative.h"
#include "CarlaHost.h" #include "CarlaHost.h"

#ifndef CARLA_HOST_H_INCLUDED
#ifndef CARLA_UTILS_H_INCLUDED
/*!
* Get the absolute filename of this carla library.
*/
CARLA_EXPORT const char* carla_get_library_filename(void);

/*!
* Get the folder where this carla library resides.
*/
CARLA_EXPORT const char* carla_get_library_folder(void);
#endif
#endif
#include "CarlaUtils.h"


/*! /*!
* Get the native plugin descriptor for the carla-rack plugin. * Get the native plugin descriptor for the carla-rack plugin.


+ 3
- 14
source/plugin/carla-host-plugin.cpp View File

@@ -15,8 +15,7 @@
* For a full copy of the GNU General Public License see the doc/GPL.txt file. * For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/ */


#include "CarlaHost.h"
#include "CarlaUtils.h"
#include "CarlaNativePlugin.h"


#define CARLA_PLUGIN_EXPORT #define CARLA_PLUGIN_EXPORT


@@ -25,20 +24,10 @@


#include "utils/CachedPlugins.cpp" #include "utils/CachedPlugins.cpp"
#include "utils/Information.cpp" #include "utils/Information.cpp"
#include "utils/JUCE.cpp"
#include "utils/PipeClient.cpp" #include "utils/PipeClient.cpp"
#include "utils/System.cpp" #include "utils/System.cpp"
// #include "utils/Windows.cpp"

// -------------------------------------------------------------------------------------------------------------------
// Always return a valid string ptr

static const char* const gNullCharPtr = "";

static void checkStringPtr(const char*& charPtr) noexcept
{
if (charPtr == nullptr)
charPtr = gNullCharPtr;
}
#include "utils/Windows.cpp"


// ------------------------------------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------------------------------------
// Include all standalone code // Include all standalone code


Loading…
Cancel
Save