Browse Source

Make juce/carla vst save cross-compatible; Builds entire juce on linux

Signed-off-by: falkTX <falktx@gmail.com>
tags/v2.1-alpha1-winvst
parent
commit
ea88d9169d
13 changed files with 88 additions and 64 deletions
  1. +0
    -2
      Makefile
  2. +4
    -1
      source/Makefile.mk
  3. +0
    -4
      source/backend/Makefile
  4. +57
    -12
      source/backend/plugin/CarlaPluginJuce.cpp
  5. +4
    -3
      source/backend/plugin/CarlaPluginVST2.cpp
  6. +0
    -4
      source/backend/utils/Makefile
  7. +0
    -2
      source/bridges-plugin/Makefile
  8. +0
    -2
      source/discovery/Makefile
  9. +7
    -16
      source/modules/AppConfig.h
  10. +3
    -0
      source/modules/juce_graphics/Makefile
  11. +12
    -10
      source/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp
  12. +0
    -4
      source/plugin/Makefile
  13. +1
    -4
      source/utils/JucePluginWindow.hpp

+ 0
- 2
Makefile View File

@@ -63,10 +63,8 @@ ALL_LIBS += $(MODULEDIR)/juce_audio_processors.a
ALL_LIBS += $(MODULEDIR)/juce_core.a ALL_LIBS += $(MODULEDIR)/juce_core.a
ALL_LIBS += $(MODULEDIR)/juce_data_structures.a ALL_LIBS += $(MODULEDIR)/juce_data_structures.a
ALL_LIBS += $(MODULEDIR)/juce_events.a ALL_LIBS += $(MODULEDIR)/juce_events.a
ifeq ($(MACOS_OR_WIN32),true)
ALL_LIBS += $(MODULEDIR)/juce_graphics.a ALL_LIBS += $(MODULEDIR)/juce_graphics.a
ALL_LIBS += $(MODULEDIR)/juce_gui_basics.a ALL_LIBS += $(MODULEDIR)/juce_gui_basics.a
endif
ifeq ($(MACOS),true) ifeq ($(MACOS),true)
ALL_LIBS += $(MODULEDIR)/juce_gui_extra.a ALL_LIBS += $(MODULEDIR)/juce_gui_extra.a
endif endif


+ 4
- 1
source/Makefile.mk View File

@@ -452,8 +452,11 @@ LILV_LIBS = -ldl -lm -lrt
RTMEMPOOL_LIBS = -lpthread -lrt RTMEMPOOL_LIBS = -lpthread -lrt
WATER_LIBS = -ldl -lpthread -lrt WATER_LIBS = -ldl -lpthread -lrt
ifeq ($(USING_JUCE),true) ifeq ($(USING_JUCE),true)
JUCE_CORE_LIBS = -ldl -lpthread -lrt
JUCE_AUDIO_DEVICES_LIBS = $(shell pkg-config $(PKG_CONFIG_FLAGS) --libs alsa) JUCE_AUDIO_DEVICES_LIBS = $(shell pkg-config $(PKG_CONFIG_FLAGS) --libs alsa)
JUCE_CORE_LIBS = -ldl -lpthread -lrt
JUCE_EVENTS_LIBS = $(shell pkg-config $(PKG_CONFIG_FLAGS) --libs x11)
JUCE_GRAPHICS_LIBS = $(shell pkg-config $(PKG_CONFIG_FLAGS) --libs freetype2)
JUCE_GUI_BASICS_LIBS = $(shell pkg-config $(PKG_CONFIG_FLAGS) --libs x11 xext)
else else
ifeq ($(HAVE_ALSA),true) ifeq ($(HAVE_ALSA),true)
RTAUDIO_FLAGS += $(shell pkg-config $(PKG_CONFIG_FLAGS) --cflags alsa) -D__LINUX_ALSA__ RTAUDIO_FLAGS += $(shell pkg-config $(PKG_CONFIG_FLAGS) --cflags alsa) -D__LINUX_ALSA__


+ 0
- 4
source/backend/Makefile View File

@@ -44,10 +44,8 @@ STANDALONE_LIBS += $(MODULEDIR)/juce_audio_processors.a
STANDALONE_LIBS += $(MODULEDIR)/juce_core.a STANDALONE_LIBS += $(MODULEDIR)/juce_core.a
STANDALONE_LIBS += $(MODULEDIR)/juce_data_structures.a STANDALONE_LIBS += $(MODULEDIR)/juce_data_structures.a
STANDALONE_LIBS += $(MODULEDIR)/juce_events.a STANDALONE_LIBS += $(MODULEDIR)/juce_events.a
ifeq ($(MACOS_OR_WIN32),true)
STANDALONE_LIBS += $(MODULEDIR)/juce_graphics.a STANDALONE_LIBS += $(MODULEDIR)/juce_graphics.a
STANDALONE_LIBS += $(MODULEDIR)/juce_gui_basics.a STANDALONE_LIBS += $(MODULEDIR)/juce_gui_basics.a
endif
ifeq ($(MACOS),true) ifeq ($(MACOS),true)
STANDALONE_LIBS += $(MODULEDIR)/juce_gui_extra.a STANDALONE_LIBS += $(MODULEDIR)/juce_gui_extra.a
endif endif
@@ -76,10 +74,8 @@ STANDALONE_LINK_FLAGS += $(JUCE_AUDIO_PROCESSORS_LIBS)
STANDALONE_LINK_FLAGS += $(JUCE_CORE_LIBS) STANDALONE_LINK_FLAGS += $(JUCE_CORE_LIBS)
STANDALONE_LINK_FLAGS += $(JUCE_DATA_STRUCTURES_LIBS) STANDALONE_LINK_FLAGS += $(JUCE_DATA_STRUCTURES_LIBS)
STANDALONE_LINK_FLAGS += $(JUCE_EVENTS_LIBS) STANDALONE_LINK_FLAGS += $(JUCE_EVENTS_LIBS)
ifeq ($(MACOS_OR_WIN32),true)
STANDALONE_LINK_FLAGS += $(JUCE_GRAPHICS_LIBS) STANDALONE_LINK_FLAGS += $(JUCE_GRAPHICS_LIBS)
STANDALONE_LINK_FLAGS += $(JUCE_GUI_BASICS_LIBS) STANDALONE_LINK_FLAGS += $(JUCE_GUI_BASICS_LIBS)
endif
ifeq ($(MACOS),true) ifeq ($(MACOS),true)
STANDALONE_LINK_FLAGS += $(JUCE_GUI_EXTRA_LIBS) STANDALONE_LINK_FLAGS += $(JUCE_GUI_EXTRA_LIBS)
endif endif


+ 57
- 12
source/backend/plugin/CarlaPluginJuce.cpp View File

@@ -53,10 +53,8 @@ public:
fAudioBuffer(), fAudioBuffer(),
fMidiBuffer(), fMidiBuffer(),
fPosInfo(), fPosInfo(),
fChunk()
#if defined(CARLA_OS_MAC) || defined(CARLA_OS_WIN)
, fWindow()
#endif
fChunk(),
fWindow()
{ {
carla_debug("CarlaPluginJuce::CarlaPluginJuce(%p, %i)", engine, id); carla_debug("CarlaPluginJuce::CarlaPluginJuce(%p, %i)", engine, id);


@@ -234,7 +232,6 @@ public:
// ------------------------------------------------------------------- // -------------------------------------------------------------------
// Set data (internal stuff) // Set data (internal stuff)


#if defined(CARLA_OS_MAC) || defined(CARLA_OS_WIN)
void setName(const char* const newName) override void setName(const char* const newName) override
{ {
CarlaPlugin::setName(newName); CarlaPlugin::setName(newName);
@@ -246,7 +243,6 @@ public:
fWindow->setName(uiName); fWindow->setName(uiName);
} }
} }
#endif


// ------------------------------------------------------------------- // -------------------------------------------------------------------
// Set data (plugin-specific stuff) // Set data (plugin-specific stuff)
@@ -269,10 +265,30 @@ public:
CARLA_SAFE_ASSERT_RETURN(data != nullptr,); CARLA_SAFE_ASSERT_RETURN(data != nullptr,);
CARLA_SAFE_ASSERT_RETURN(dataSize > 0,); CARLA_SAFE_ASSERT_RETURN(dataSize > 0,);


if (isJuceSaveFormat(data, dataSize))
{ {
const ScopedSingleProcessLocker spl(this, true); const ScopedSingleProcessLocker spl(this, true);
fInstance->setStateInformation(data, static_cast<int>(dataSize)); fInstance->setStateInformation(data, static_cast<int>(dataSize));
} }
else
{
carla_stdout("NOTE: Loading plugin state in Carla compatibiity mode");
uint8_t* const dataCompat = new uint8_t[dataSize + 160];
std::memset(dataCompat, 0, 160);
std::memcpy(dataCompat+160, data, dataSize);

int32_t* const set = (int32_t*)dataCompat;

dataCompat[39] = dataSize;

set[0] = (int32_t)juce::ByteOrder::littleEndianInt("CcnK");
set[2] = (int32_t)juce::ByteOrder::littleEndianInt("FBCh");
set[3] = fxbSwap(1);
set[39] = fxbSwap(dataSize);

const ScopedSingleProcessLocker spl(this, true);
fInstance->setStateInformation(dataCompat, static_cast<int>(dataSize+160));
}


#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE) #if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
const bool sendOsc(pData->engine->isOscControlRegistered()); const bool sendOsc(pData->engine->isOscControlRegistered());
@@ -302,7 +318,6 @@ public:
// ------------------------------------------------------------------- // -------------------------------------------------------------------
// Set ui stuff // Set ui stuff


#if defined(CARLA_OS_MAC) || defined(CARLA_OS_WIN)
void showCustomUI(const bool yesNo) override void showCustomUI(const bool yesNo) override
{ {
CARLA_SAFE_ASSERT_RETURN(fInstance != nullptr,); CARLA_SAFE_ASSERT_RETURN(fInstance != nullptr,);
@@ -346,7 +361,6 @@ public:


CarlaPlugin::uiIdle(); CarlaPlugin::uiIdle();
} }
#endif


// ------------------------------------------------------------------- // -------------------------------------------------------------------
// Plugin state // Plugin state
@@ -542,13 +556,11 @@ public:
if (fDesc.isInstrument) if (fDesc.isInstrument)
pData->hints |= PLUGIN_IS_SYNTH; pData->hints |= PLUGIN_IS_SYNTH;


#if defined(CARLA_OS_MAC) || defined(CARLA_OS_WIN)
if (fInstance->hasEditor()) if (fInstance->hasEditor())
{ {
pData->hints |= PLUGIN_HAS_CUSTOM_UI; pData->hints |= PLUGIN_HAS_CUSTOM_UI;
pData->hints |= PLUGIN_NEEDS_UI_MAIN_THREAD; pData->hints |= PLUGIN_NEEDS_UI_MAIN_THREAD;
} }
#endif


if (aOuts > 0 && (aIns == aOuts || aIns == 1)) if (aOuts > 0 && (aIns == aOuts || aIns == 1))
pData->hints |= PLUGIN_CAN_DRYWET; pData->hints |= PLUGIN_CAN_DRYWET;
@@ -1224,6 +1236,8 @@ public:
fInstance->setPlayHead(this); fInstance->setPlayHead(this);
fInstance->addListener(this); fInstance->addListener(this);


fFormatName = format;

// --------------------------------------------------------------- // ---------------------------------------------------------------
// get info // get info


@@ -1279,10 +1293,41 @@ private:
juce::MidiBuffer fMidiBuffer; juce::MidiBuffer fMidiBuffer;
CurrentPositionInfo fPosInfo; CurrentPositionInfo fPosInfo;
juce::MemoryBlock fChunk; juce::MemoryBlock fChunk;
juce::String fFormatName;


#if defined(CARLA_OS_MAC) || defined(CARLA_OS_WIN)
ScopedPointer<JucePluginWindow> fWindow; ScopedPointer<JucePluginWindow> fWindow;
#endif

bool isJuceSaveFormat(const void* const data, const std::size_t dataSize)
{
if (fFormatName != "VST2")
return true;
if (dataSize < 160)
return false;

const int32_t* const set = (const int32_t*)data;

if (! compareMagic(set[0], "CcnK"))
return false;
if (! compareMagic(set[2], "FBCh"))
return false;
if (fxbSwap(set[3]) > 1)
return false;

const int32_t chunkSize = fxbSwap(set[39]);

return static_cast<std::size_t>(chunkSize + 160) == dataSize;
}

static bool compareMagic(int32_t magic, const char* name) noexcept
{
return magic == (int32_t)juce::ByteOrder::littleEndianInt (name)
|| magic == (int32_t)juce::ByteOrder::bigEndianInt (name);
}

static int32_t fxbSwap(const int32_t x) noexcept
{
return (int32_t)juce::ByteOrder::swapIfLittleEndian ((uint32_t) x);
}


CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaPluginJuce) CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaPluginJuce)
}; };


+ 4
- 3
source/backend/plugin/CarlaPluginVST2.cpp View File

@@ -1,6 +1,6 @@
/* /*
* Carla VST Plugin * Carla VST Plugin
* Copyright (C) 2011-2018 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2011-2019 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
@@ -397,7 +397,7 @@ public:
CARLA_SAFE_ASSERT_RETURN(data != nullptr,); CARLA_SAFE_ASSERT_RETURN(data != nullptr,);
CARLA_SAFE_ASSERT_RETURN(dataSize > 0,); CARLA_SAFE_ASSERT_RETURN(dataSize > 0,);


if (loadOldSaveFormat(data, dataSize))
if (loadJuceSaveFormat(data, dataSize))
return; return;


if (fLastChunk != nullptr) if (fLastChunk != nullptr)
@@ -2476,7 +2476,7 @@ private:
return (int32_t)ByteOrder::swapIfLittleEndian ((uint32_t) x); return (int32_t)ByteOrder::swapIfLittleEndian ((uint32_t) x);
} }


bool loadOldSaveFormat(const void* const data, const std::size_t dataSize)
bool loadJuceSaveFormat(const void* const data, const std::size_t dataSize)
{ {
if (dataSize < 28) if (dataSize < 28)
return false; return false;
@@ -2496,6 +2496,7 @@ private:
if (static_cast<std::size_t>(chunkSize + 160) > dataSize) if (static_cast<std::size_t>(chunkSize + 160) > dataSize)
return false; return false;


carla_stdout("NOTE: Loading plugin state in Juce compatibiity mode");
setChunkData(&set[40], static_cast<std::size_t>(chunkSize)); setChunkData(&set[40], static_cast<std::size_t>(chunkSize));
return true; return true;
} }


+ 0
- 4
source/backend/utils/Makefile View File

@@ -29,10 +29,8 @@ LIBS += $(MODULEDIR)/juce_audio_processors.a
LIBS += $(MODULEDIR)/juce_core.a LIBS += $(MODULEDIR)/juce_core.a
LIBS += $(MODULEDIR)/juce_data_structures.a LIBS += $(MODULEDIR)/juce_data_structures.a
LIBS += $(MODULEDIR)/juce_events.a LIBS += $(MODULEDIR)/juce_events.a
ifeq ($(MACOS_OR_WIN32),true)
LIBS += $(MODULEDIR)/juce_graphics.a LIBS += $(MODULEDIR)/juce_graphics.a
LIBS += $(MODULEDIR)/juce_gui_basics.a LIBS += $(MODULEDIR)/juce_gui_basics.a
endif
ifeq ($(MACOS),true) ifeq ($(MACOS),true)
LIBS += $(MODULEDIR)/juce_gui_extra.a LIBS += $(MODULEDIR)/juce_gui_extra.a
endif endif
@@ -55,10 +53,8 @@ LINK_FLAGS += $(JUCE_AUDIO_PROCESSORS_LIBS)
LINK_FLAGS += $(JUCE_CORE_LIBS) LINK_FLAGS += $(JUCE_CORE_LIBS)
LINK_FLAGS += $(JUCE_DATA_STRUCTURES_LIBS) LINK_FLAGS += $(JUCE_DATA_STRUCTURES_LIBS)
LINK_FLAGS += $(JUCE_EVENTS_LIBS) LINK_FLAGS += $(JUCE_EVENTS_LIBS)
ifeq ($(MACOS_OR_WIN32),true)
LINK_FLAGS += $(JUCE_GRAPHICS_LIBS) LINK_FLAGS += $(JUCE_GRAPHICS_LIBS)
LINK_FLAGS += $(JUCE_GUI_BASICS_LIBS) LINK_FLAGS += $(JUCE_GUI_BASICS_LIBS)
endif
ifeq ($(MACOS),true) ifeq ($(MACOS),true)
LINK_FLAGS += $(JUCE_GUI_EXTRA_LIBS) LINK_FLAGS += $(JUCE_GUI_EXTRA_LIBS)
endif endif


+ 0
- 2
source/bridges-plugin/Makefile View File

@@ -99,7 +99,6 @@ LIBS_win32 += $(MODULEDIR)/juce_events.win32.a
LIBS_win64 += $(MODULEDIR)/juce_events.win64.a LIBS_win64 += $(MODULEDIR)/juce_events.win64.a
LINK_FLAGS += $(JUCE_EVENTS_LIBS) LINK_FLAGS += $(JUCE_EVENTS_LIBS)


ifeq ($(MACOS_OR_WIN32),true)
LIBS_native += $(MODULEDIR)/juce_graphics.a LIBS_native += $(MODULEDIR)/juce_graphics.a
LIBS_posix32 += $(MODULEDIR)/juce_graphics.posix32.a LIBS_posix32 += $(MODULEDIR)/juce_graphics.posix32.a
LIBS_posix64 += $(MODULEDIR)/juce_graphics.posix64.a LIBS_posix64 += $(MODULEDIR)/juce_graphics.posix64.a
@@ -113,7 +112,6 @@ LIBS_posix64 += $(MODULEDIR)/juce_gui_basics.posix64.a
LIBS_win32 += $(MODULEDIR)/juce_gui_basics.win32.a LIBS_win32 += $(MODULEDIR)/juce_gui_basics.win32.a
LIBS_win64 += $(MODULEDIR)/juce_gui_basics.win64.a LIBS_win64 += $(MODULEDIR)/juce_gui_basics.win64.a
LINK_FLAGS += $(JUCE_GUI_BASICS_LIBS) LINK_FLAGS += $(JUCE_GUI_BASICS_LIBS)
endif


ifeq ($(MACOS),true) ifeq ($(MACOS),true)
LIBS_native += $(MODULEDIR)/juce_gui_extra.a LIBS_native += $(MODULEDIR)/juce_gui_extra.a


+ 0
- 2
source/discovery/Makefile View File

@@ -101,7 +101,6 @@ LIBS_win32 += $(MODULEDIR)/juce_events.win32.a
LIBS_win64 += $(MODULEDIR)/juce_events.win64.a LIBS_win64 += $(MODULEDIR)/juce_events.win64.a
LINK_FLAGS += $(JUCE_EVENTS_LIBS) LINK_FLAGS += $(JUCE_EVENTS_LIBS)


ifeq ($(MACOS_OR_WIN32),true)
LIBS_native += $(MODULEDIR)/juce_graphics.a LIBS_native += $(MODULEDIR)/juce_graphics.a
LIBS_posix32 += $(MODULEDIR)/juce_graphics.posix32.a LIBS_posix32 += $(MODULEDIR)/juce_graphics.posix32.a
LIBS_posix64 += $(MODULEDIR)/juce_graphics.posix64.a LIBS_posix64 += $(MODULEDIR)/juce_graphics.posix64.a
@@ -115,7 +114,6 @@ LIBS_posix64 += $(MODULEDIR)/juce_gui_basics.posix64.a
LIBS_win32 += $(MODULEDIR)/juce_gui_basics.win32.a LIBS_win32 += $(MODULEDIR)/juce_gui_basics.win32.a
LIBS_win64 += $(MODULEDIR)/juce_gui_basics.win64.a LIBS_win64 += $(MODULEDIR)/juce_gui_basics.win64.a
LINK_FLAGS += $(JUCE_GUI_BASICS_LIBS) LINK_FLAGS += $(JUCE_GUI_BASICS_LIBS)
endif # MACOS_OR_WIN32


ifeq ($(MACOS),true) ifeq ($(MACOS),true)
LIBS_native += $(MODULEDIR)/juce_gui_extra.a LIBS_native += $(MODULEDIR)/juce_gui_extra.a


+ 7
- 16
source/modules/AppConfig.h View File

@@ -49,6 +49,8 @@
#define JUCE_MODULE_AVAILABLE_juce_core 1 #define JUCE_MODULE_AVAILABLE_juce_core 1
#define JUCE_MODULE_AVAILABLE_juce_data_structures 1 #define JUCE_MODULE_AVAILABLE_juce_data_structures 1
#define JUCE_MODULE_AVAILABLE_juce_events 1 #define JUCE_MODULE_AVAILABLE_juce_events 1
#define JUCE_MODULE_AVAILABLE_juce_graphics 1
#define JUCE_MODULE_AVAILABLE_juce_gui_basics 1
// always disabled // always disabled
#define JUCE_MODULE_AVAILABLE_juce_audio_formats 0 #define JUCE_MODULE_AVAILABLE_juce_audio_formats 0
@@ -59,15 +61,7 @@
#define JUCE_MODULE_AVAILABLE_juce_video 0 #define JUCE_MODULE_AVAILABLE_juce_video 0
// conditional // conditional
#if defined(APPCONFIG_OS_MAC) || defined(APPCONFIG_OS_WIN)
# define JUCE_MODULE_AVAILABLE_juce_graphics 1
# define JUCE_MODULE_AVAILABLE_juce_gui_basics 1
#else
# define JUCE_MODULE_AVAILABLE_juce_graphics 0
# define JUCE_MODULE_AVAILABLE_juce_gui_basics 0
#endif
#if defined(APPCONFIG_OS_MAC)
#ifdef APPCONFIG_OS_MAC
# define JUCE_MODULE_AVAILABLE_juce_gui_extra 1 # define JUCE_MODULE_AVAILABLE_juce_gui_extra 1
#else #else
# define JUCE_MODULE_AVAILABLE_juce_gui_extra 0 # define JUCE_MODULE_AVAILABLE_juce_gui_extra 0
@@ -89,9 +83,10 @@
#define JUCE_STRING_UTF_TYPE 8 #define JUCE_STRING_UTF_TYPE 8
#define JUCE_USE_VFORK 1 #define JUCE_USE_VFORK 1
#if ! (defined(APPCONFIG_OS_MAC) || defined(APPCONFIG_OS_WIN))
#ifdef APPCONFIG_OS_LINUX
# define JUCE_DISABLE_NATIVE_FILECHOOSERS 1
# define JUCE_MODAL_LOOPS_PERMITTED 0 # define JUCE_MODAL_LOOPS_PERMITTED 0
# define JUCE_AUDIOPROCESSOR_NO_GUI 1
// # define JUCE_AUDIOPROCESSOR_NO_GUI 1
#endif #endif
// -------------------------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------------------------
@@ -218,11 +213,7 @@
@see VSTPluginFormat, AudioPluginFormat, AudioPluginFormatManager, JUCE_PLUGINHOST_AU @see VSTPluginFormat, AudioPluginFormat, AudioPluginFormatManager, JUCE_PLUGINHOST_AU
*/ */
#if defined(APPCONFIG_OS_MAC) || defined(APPCONFIG_OS_WIN)
# define JUCE_PLUGINHOST_VST 1
#else
# define JUCE_PLUGINHOST_VST 0
#endif
#define JUCE_PLUGINHOST_VST 1
/** Config: JUCE_PLUGINHOST_VST3 /** Config: JUCE_PLUGINHOST_VST3
Enables the VST3 audio plugin hosting classes. This requires the Steinberg VST3 SDK to be Enables the VST3 audio plugin hosting classes. This requires the Steinberg VST3 SDK to be


+ 3
- 0
source/modules/juce_graphics/Makefile View File

@@ -12,6 +12,9 @@ include ../Makefile.mk


BUILD_CXX_FLAGS += $(JUCE_GRAPHICS_FLAGS) -I.. BUILD_CXX_FLAGS += $(JUCE_GRAPHICS_FLAGS) -I..


ifeq ($(LINUX),true)
BUILD_CXX_FLAGS += $(shell pkg-config --cflags freetype2)
endif
ifeq ($(WIN32),true) ifeq ($(WIN32),true)
BUILD_CXX_FLAGS += -Wno-missing-field-initializers -Wno-strict-overflow BUILD_CXX_FLAGS += -Wno-missing-field-initializers -Wno-strict-overflow
endif endif


+ 12
- 10
source/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp View File

@@ -27,16 +27,6 @@
namespace juce namespace juce
{ {
static bool exeIsAvailable (const char* const executable)
{
ChildProcess child;
const bool ok = child.start ("which " + String (executable))
&& child.readAllProcessOutput().trim().isNotEmpty();
child.waitForProcessToFinish (60 * 1000);
return ok;
}
bool FileChooser::isPlatformDialogAvailable() bool FileChooser::isPlatformDialogAvailable()
{ {
#if JUCE_DISABLE_NATIVE_FILECHOOSERS #if JUCE_DISABLE_NATIVE_FILECHOOSERS
@@ -47,6 +37,17 @@ bool FileChooser::isPlatformDialogAvailable()
#endif #endif
} }
#if ! JUCE_DISABLE_NATIVE_FILECHOOSERS
static bool exeIsAvailable (const char* const executable)
{
ChildProcess child;
const bool ok = child.start ("which " + String (executable))
&& child.readAllProcessOutput().trim().isNotEmpty();
child.waitForProcessToFinish (60 * 1000);
return ok;
}
static uint64 getTopWindowID() noexcept static uint64 getTopWindowID() noexcept
{ {
if (TopLevelWindow* top = TopLevelWindow::getActiveTopLevelWindow()) if (TopLevelWindow* top = TopLevelWindow::getActiveTopLevelWindow())
@@ -209,5 +210,6 @@ void FileChooser::showPlatformDialog (Array<File>& results,
previousWorkingDirectory.setAsCurrentWorkingDirectory(); previousWorkingDirectory.setAsCurrentWorkingDirectory();
} }
#endif
} // namespace juce } // namespace juce

+ 0
- 4
source/plugin/Makefile View File

@@ -65,10 +65,8 @@ LIBS += $(MODULEDIR)/juce_audio_processors.a
LIBS += $(MODULEDIR)/juce_core.a LIBS += $(MODULEDIR)/juce_core.a
LIBS += $(MODULEDIR)/juce_data_structures.a LIBS += $(MODULEDIR)/juce_data_structures.a
LIBS += $(MODULEDIR)/juce_events.a LIBS += $(MODULEDIR)/juce_events.a
ifeq ($(MACOS_OR_WIN32),true)
LIBS += $(MODULEDIR)/juce_graphics.a LIBS += $(MODULEDIR)/juce_graphics.a
LIBS += $(MODULEDIR)/juce_gui_basics.a LIBS += $(MODULEDIR)/juce_gui_basics.a
endif
ifeq ($(MACOS),true) ifeq ($(MACOS),true)
LIBS += $(MODULEDIR)/juce_gui_extra.a LIBS += $(MODULEDIR)/juce_gui_extra.a
endif endif
@@ -95,10 +93,8 @@ LINK_FLAGS += $(JUCE_AUDIO_PROCESSORS_LIBS)
LINK_FLAGS += $(JUCE_CORE_LIBS) LINK_FLAGS += $(JUCE_CORE_LIBS)
LINK_FLAGS += $(JUCE_DATA_STRUCTURES_LIBS) LINK_FLAGS += $(JUCE_DATA_STRUCTURES_LIBS)
LINK_FLAGS += $(JUCE_EVENTS_LIBS) LINK_FLAGS += $(JUCE_EVENTS_LIBS)
ifeq ($(MACOS_OR_WIN32),true)
LINK_FLAGS += $(JUCE_GRAPHICS_LIBS) LINK_FLAGS += $(JUCE_GRAPHICS_LIBS)
LINK_FLAGS += $(JUCE_GUI_BASICS_LIBS) LINK_FLAGS += $(JUCE_GUI_BASICS_LIBS)
endif
ifeq ($(MACOS),true) ifeq ($(MACOS),true)
LINK_FLAGS += $(JUCE_GUI_EXTRA_LIBS) LINK_FLAGS += $(JUCE_GUI_EXTRA_LIBS)
endif endif


+ 1
- 4
source/utils/JucePluginWindow.hpp View File

@@ -33,10 +33,6 @@


namespace juce { namespace juce {


#if JUCE_LINUX && defined(HAVE_X11)
extern Display* display;
#endif

class JucePluginWindow : public DialogWindow class JucePluginWindow : public DialogWindow
{ {
public: public:
@@ -103,6 +99,7 @@ private:
return; return;


#if JUCE_LINUX && defined(HAVE_X11) #if JUCE_LINUX && defined(HAVE_X11)
Display* const display = XWindowSystem::getInstance()->displayRef();
CARLA_SAFE_ASSERT_RETURN(display != nullptr,); CARLA_SAFE_ASSERT_RETURN(display != nullptr,);


::Window window = (::Window)getWindowHandle(); ::Window window = (::Window)getWindowHandle();


Loading…
Cancel
Save