Update included DPF
Signed-off-by: falkTX <falktx@falktx.com>
This commit is contained in:
parent
d7d94ec516
commit
33ef884b28
|
@ -44,7 +44,7 @@ rm ${CARLA_DIR}/source/modules/dgl/src/pugl-upstream/include/pugl/vulkan.h
|
|||
|
||||
rm ${CARLA_DIR}/source/modules/distrho/DistrhoInfo.hpp
|
||||
rm ${CARLA_DIR}/source/modules/distrho/src/DistrhoPlugin{JACK,LADSPA+DSSI,LV2,LV2export,VST2,VST3}.cpp
|
||||
rm ${CARLA_DIR}/source/modules/distrho/src/DistrhoPluginVST3.hpp
|
||||
rm ${CARLA_DIR}/source/modules/distrho/src/DistrhoPluginVST.hpp
|
||||
rm ${CARLA_DIR}/source/modules/distrho/src/DistrhoUI{DSSI,LV2,VST3}.cpp
|
||||
rm ${CARLA_DIR}/source/modules/distrho/DistrhoStandaloneUtils.hpp
|
||||
|
||||
|
|
|
@ -55,9 +55,9 @@ DGL_EXT(PFNGLUSEPROGRAMPROC, glUseProgram)
|
|||
DGL_EXT(PFNGLVERTEXATTRIBPOINTERPROC, glVertexAttribPointer)
|
||||
DGL_EXT(PFNGLBLENDFUNCSEPARATEPROC, glBlendFuncSeparate)
|
||||
# ifdef DGL_USE_NANOVG_FBO
|
||||
DGL_EXT(PFNGLCHECKFRAMEBUFFERSTATUSPROC, glCheckFramebufferStatus)
|
||||
DGL_EXT(PFNGLBINDFRAMEBUFFERPROC, glBindFramebuffer)
|
||||
DGL_EXT(PFNGLBINDRENDERBUFFERPROC, glBindRenderbuffer)
|
||||
DGL_EXT(PFNGLCHECKFRAMEBUFFERSTATUSPROC, glCheckFramebufferStatus)
|
||||
DGL_EXT(PFNGLDELETEFRAMEBUFFERSPROC, glDeleteFramebuffers)
|
||||
DGL_EXT(PFNGLDELETERENDERBUFFERSPROC, glDeleteRenderbuffers)
|
||||
DGL_EXT(PFNGLFRAMEBUFFERTEXTURE2DPROC, glFramebufferTexture2D)
|
||||
|
@ -140,6 +140,11 @@ NVGcontext* nvgCreateGL(int flags)
|
|||
# define DGL_EXT(PROC, func) \
|
||||
if (needsInit) func = (PROC) wglGetProcAddress ( #func ); \
|
||||
DISTRHO_SAFE_ASSERT_RETURN(func != nullptr, nullptr);
|
||||
# define DGL_EXT2(PROC, func, fallback) \
|
||||
if (needsInit) { \
|
||||
func = (PROC) wglGetProcAddress ( #func ); \
|
||||
if (func == nullptr) func = (PROC) wglGetProcAddress ( #fallback ); \
|
||||
} DISTRHO_SAFE_ASSERT_RETURN(func != nullptr, nullptr);
|
||||
DGL_EXT(PFNGLACTIVETEXTUREPROC, glActiveTexture)
|
||||
DGL_EXT(PFNGLATTACHSHADERPROC, glAttachShader)
|
||||
DGL_EXT(PFNGLBINDATTRIBLOCATIONPROC, glBindAttribLocation)
|
||||
|
@ -169,16 +174,16 @@ DGL_EXT(PFNGLUSEPROGRAMPROC, glUseProgram)
|
|||
DGL_EXT(PFNGLVERTEXATTRIBPOINTERPROC, glVertexAttribPointer)
|
||||
DGL_EXT(PFNGLBLENDFUNCSEPARATEPROC, glBlendFuncSeparate)
|
||||
# ifdef DGL_USE_NANOVG_FBO
|
||||
DGL_EXT(PFNGLBINDFRAMEBUFFERPROC, glBindFramebuffer)
|
||||
DGL_EXT(PFNGLBINDRENDERBUFFERPROC, glBindRenderbuffer)
|
||||
DGL_EXT(PFNGLCHECKFRAMEBUFFERSTATUSPROC, glCheckFramebufferStatus)
|
||||
DGL_EXT(PFNGLDELETEFRAMEBUFFERSPROC, glDeleteFramebuffers)
|
||||
DGL_EXT(PFNGLDELETERENDERBUFFERSPROC, glDeleteRenderbuffers)
|
||||
DGL_EXT(PFNGLFRAMEBUFFERTEXTURE2DPROC, glFramebufferTexture2D)
|
||||
DGL_EXT(PFNGLFRAMEBUFFERRENDERBUFFERPROC, glFramebufferRenderbuffer)
|
||||
DGL_EXT(PFNGLGENFRAMEBUFFERSPROC, glGenFramebuffers)
|
||||
DGL_EXT(PFNGLGENRENDERBUFFERSPROC, glGenRenderbuffers)
|
||||
DGL_EXT(PFNGLRENDERBUFFERSTORAGEPROC, glRenderbufferStorage)
|
||||
DGL_EXT2(PFNGLBINDFRAMEBUFFERPROC, glBindFramebuffer, glBindFramebufferEXT)
|
||||
DGL_EXT2(PFNGLBINDRENDERBUFFERPROC, glBindRenderbuffer, glBindRenderbufferEXT)
|
||||
DGL_EXT2(PFNGLDELETEFRAMEBUFFERSPROC, glDeleteFramebuffers, glDeleteFramebuffersEXT)
|
||||
DGL_EXT2(PFNGLDELETERENDERBUFFERSPROC, glDeleteRenderbuffers, glDeleteRenderbuffersEXT)
|
||||
DGL_EXT2(PFNGLFRAMEBUFFERTEXTURE2DPROC, glFramebufferTexture2D, glFramebufferTexture2DEXT)
|
||||
DGL_EXT2(PFNGLFRAMEBUFFERRENDERBUFFERPROC, glFramebufferRenderbuffer, glFramebufferRenderbufferEXT)
|
||||
DGL_EXT2(PFNGLGENFRAMEBUFFERSPROC, glGenFramebuffers, glGenFramebuffersEXT)
|
||||
DGL_EXT2(PFNGLGENRENDERBUFFERSPROC, glGenRenderbuffers, glGenRenderbuffersEXT)
|
||||
DGL_EXT2(PFNGLRENDERBUFFERSTORAGEPROC, glRenderbufferStorage, glRenderbufferStorageEXT)
|
||||
# endif
|
||||
# ifdef DGL_USE_OPENGL3
|
||||
DGL_EXT(PFNGLBINDBUFFERRANGEPROC, glBindBufferRange)
|
||||
|
@ -190,6 +195,7 @@ DGL_EXT(PFNGLGENVERTEXARRAYSPROC, glGenVertexArrays)
|
|||
DGL_EXT(PFNGLUNIFORMBLOCKBINDINGPROC, glUniformBlockBinding)
|
||||
# endif
|
||||
# undef DGL_EXT
|
||||
# undef DGL_EXT2
|
||||
needsInit = false;
|
||||
# if defined(__GNUC__) && (__GNUC__ >= 9)
|
||||
# pragma GCC diagnostic pop
|
||||
|
@ -318,12 +324,12 @@ NanoVG::NanoVG(int flags)
|
|||
fInFrame(false),
|
||||
fIsSubWidget(false)
|
||||
{
|
||||
DISTRHO_SAFE_ASSERT(fContext);
|
||||
DISTRHO_CUSTOM_SAFE_ASSERT("Failed to create NanoVG context, expect a black screen", fContext != nullptr);
|
||||
}
|
||||
|
||||
NanoVG::~NanoVG()
|
||||
{
|
||||
DISTRHO_SAFE_ASSERT(! fInFrame);
|
||||
DISTRHO_CUSTOM_SAFE_ASSERT("Destroying NanoVG context with still active frame", ! fInFrame);
|
||||
|
||||
if (fContext != nullptr && ! fIsSubWidget)
|
||||
nvgDeleteGL(fContext);
|
||||
|
|
|
@ -951,7 +951,7 @@ puglGrabFocus(PuglView* const view)
|
|||
{
|
||||
PuglInternals* const impl = view->impl;
|
||||
Display* const display = view->world->impl->display;
|
||||
XWindowAttributes attrs = {0};
|
||||
XWindowAttributes attrs = PUGL_INIT_STRUCT;
|
||||
|
||||
if (!impl->win || !XGetWindowAttributes(display, impl->win, &attrs)) {
|
||||
return PUGL_UNKNOWN_ERROR;
|
||||
|
@ -980,7 +980,7 @@ puglRequestAttention(PuglView* const view)
|
|||
PuglInternals* const impl = view->impl;
|
||||
Display* const display = view->world->impl->display;
|
||||
const PuglX11Atoms* const atoms = &view->world->impl->atoms;
|
||||
XEvent event = {0};
|
||||
XEvent event = PUGL_INIT_STRUCT;
|
||||
|
||||
event.type = ClientMessage;
|
||||
event.xclient.window = impl->win;
|
||||
|
@ -1081,7 +1081,7 @@ puglStopTimer(PuglView* const view, const uintptr_t id)
|
|||
static XEvent
|
||||
eventToX(PuglView* const view, const PuglEvent* const event)
|
||||
{
|
||||
XEvent xev = {0};
|
||||
XEvent xev = PUGL_INIT_STRUCT;
|
||||
xev.xany.send_event = True;
|
||||
|
||||
switch (event->type) {
|
||||
|
|
|
@ -636,6 +636,9 @@ struct Parameter {
|
|||
A group can be applied to both inputs and outputs (at the same time).
|
||||
The same group cannot be used in audio ports and parameters.
|
||||
|
||||
When both audio and parameter groups are used, audio groups MUST be defined first.
|
||||
That is, group indexes start with audio ports, then parameters.
|
||||
|
||||
An audio port group logically combines ports which should be considered part of the same stream.@n
|
||||
For example, two audio ports in a group may form a stereo stream.
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* DISTRHO Plugin Framework (DPF)
|
||||
* Copyright (C) 2012-2021 Filipe Coelho <falktx@falktx.com>
|
||||
* Copyright (C) 2012-2022 Filipe Coelho <falktx@falktx.com>
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any purpose with
|
||||
* or without fee is hereby granted, provided that the above copyright notice and this
|
||||
|
@ -20,7 +20,7 @@
|
|||
#include "../DistrhoPlugin.hpp"
|
||||
|
||||
#ifdef DISTRHO_PLUGIN_TARGET_VST3
|
||||
# include "DistrhoPluginVST3.hpp"
|
||||
# include "DistrhoPluginVST.hpp"
|
||||
#endif
|
||||
|
||||
#include <set>
|
||||
|
@ -523,6 +523,36 @@ public:
|
|||
{
|
||||
return getAudioPort(input, index).hints;
|
||||
}
|
||||
|
||||
uint32_t getAudioPortCountWithGroupId(const bool input, const uint32_t groupId) const noexcept
|
||||
{
|
||||
DISTRHO_SAFE_ASSERT_RETURN(fData != nullptr, 0);
|
||||
|
||||
uint32_t numPorts = 0;
|
||||
|
||||
if (input)
|
||||
{
|
||||
#if DISTRHO_PLUGIN_NUM_INPUTS > 0
|
||||
for (uint32_t i=0; i<DISTRHO_PLUGIN_NUM_INPUTS; ++i)
|
||||
{
|
||||
if (fData->audioPorts[i].groupId == groupId)
|
||||
++numPorts;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
#if DISTRHO_PLUGIN_NUM_OUTPUTS > 0
|
||||
for (uint32_t i=0; i<DISTRHO_PLUGIN_NUM_OUTPUTS; ++i)
|
||||
{
|
||||
if (fData->audioPorts[i + DISTRHO_PLUGIN_NUM_INPUTS].groupId == groupId)
|
||||
++numPorts;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
return numPorts;
|
||||
}
|
||||
#endif
|
||||
|
||||
uint32_t getParameterCount() const noexcept
|
||||
|
|
|
@ -329,53 +329,36 @@ public:
|
|||
}
|
||||
|
||||
#if !DISTRHO_PLUGIN_HAS_EXTERNAL_UI
|
||||
bool handlePluginKeyboardVST2(const bool press, const uint key, const uint16_t mods)
|
||||
bool handlePluginKeyboardVST(const bool press, const bool special, const uint keychar, const uint keycode, const uint16_t mods)
|
||||
{
|
||||
DGL_NAMESPACE::Widget::KeyboardEvent ev;
|
||||
ev.mod = mods;
|
||||
ev.press = press;
|
||||
ev.key = key;
|
||||
using namespace DGL_NAMESPACE;
|
||||
|
||||
const bool ret = ui->onKeyboard(ev);
|
||||
|
||||
if (! press)
|
||||
return ret;
|
||||
|
||||
DGL_NAMESPACE::Widget::CharacterInputEvent cev;
|
||||
cev.mod = mods;
|
||||
cev.character = key;
|
||||
|
||||
// if shift modifier is on, convert a-z -> A-Z for character input
|
||||
if (key >= 'a' && key <= 'z' && (mods & DGL_NAMESPACE::kModifierShift) != 0)
|
||||
cev.character -= 'a' - 'A';
|
||||
|
||||
ui->onCharacterInput(cev);
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool handlePluginKeyboardVST3(const bool press, const uint keychar, const uint keycode, const uint16_t mods)
|
||||
{
|
||||
DGL_NAMESPACE::Widget::KeyboardEvent ev;
|
||||
Widget::KeyboardEvent ev;
|
||||
ev.mod = mods;
|
||||
ev.press = press;
|
||||
ev.key = keychar;
|
||||
ev.keycode = keycode;
|
||||
|
||||
// keyboard events must always be lowercase
|
||||
if (ev.key >= 'A' && ev.key <= 'Z')
|
||||
ev.key += 'a' - 'A'; // A-Z -> a-z
|
||||
|
||||
const bool ret = ui->onKeyboard(ev);
|
||||
|
||||
if (! press)
|
||||
return ret;
|
||||
if (press && !special && (mods & (kModifierControl|kModifierAlt|kModifierSuper)) == 0)
|
||||
{
|
||||
Widget::CharacterInputEvent cev;
|
||||
cev.mod = mods;
|
||||
cev.character = keychar;
|
||||
cev.keycode = keycode;
|
||||
|
||||
DGL_NAMESPACE::Widget::CharacterInputEvent cev;
|
||||
cev.mod = mods;
|
||||
cev.keycode = keycode;
|
||||
cev.character = keychar;
|
||||
// if shift modifier is on, convert a-z -> A-Z for character input
|
||||
if (cev.character >= 'a' && cev.character <= 'z' && (mods & kModifierShift) != 0)
|
||||
cev.character -= 'a' - 'A';
|
||||
|
||||
// if shift modifier is on, convert a-z -> A-Z for character input
|
||||
if (keychar >= 'a' && keychar <= 'z' && (mods & DGL_NAMESPACE::kModifierShift) != 0)
|
||||
cev.character -= 'a' - 'A';
|
||||
ui->onCharacterInput(cev);
|
||||
}
|
||||
|
||||
ui->onCharacterInput(cev);
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
#include "../DistrhoUI.hpp"
|
||||
|
||||
#ifdef DISTRHO_PLUGIN_TARGET_VST3
|
||||
# include "DistrhoPluginVST3.hpp"
|
||||
# include "DistrhoPluginVST.hpp"
|
||||
#endif
|
||||
|
||||
#if DISTRHO_PLUGIN_HAS_EXTERNAL_UI
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#endif
|
||||
|
||||
#include "../extra/String.hpp"
|
||||
#include "../DistrhoStandaloneUtils.hpp"
|
||||
|
||||
#ifdef DISTRHO_OS_WINDOWS
|
||||
# include <windows.h>
|
||||
|
@ -141,6 +142,20 @@ const char* getResourcePath(const char* const bundlePath) noexcept
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
#ifndef DISTRHO_PLUGIN_TARGET_JACK
|
||||
// all these are null for non-standalone targets
|
||||
bool isUsingNativeAudio() noexcept { return false; }
|
||||
bool supportsAudioInput() { return false; }
|
||||
bool supportsBufferSizeChanges() { return false; }
|
||||
bool supportsMIDI() { return false; }
|
||||
bool isAudioInputEnabled() { return false; }
|
||||
bool isMIDIEnabled() { return false; }
|
||||
uint getBufferSize() { return 0; }
|
||||
bool requestAudioInput() { return false; }
|
||||
bool requestBufferSizeChange(uint) { return false; }
|
||||
bool requestMIDI() { return false; }
|
||||
#endif
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
END_NAMESPACE_DISTRHO
|
||||
|
|
Loading…
Reference in New Issue