Skip to content

Commit 611421d

Browse files
committed
Release 1.0.27
* Updated VST3 SDK to 3.7.12, may be breaking changes related to parameter identifiers as Steinberg has twice reduced the set of valid paremeter identifiers. * Fixed bug related to window sizing for CLAP plugin format. * Fixed unneeded resource object deletion and use-after-free in VST plugin wrapper. * Updated module versions in dependencies.
2 parents 5b4013a + 82fc393 commit 611421d

File tree

9 files changed

+148
-104
lines changed

9 files changed

+148
-104
lines changed

CHANGELOG

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@
22
* RECENT CHANGES
33
*******************************************************************************
44

5+
=== 1.0.27 ===
6+
* Updated VST3 SDK to 3.7.12, may be breaking changes related to parameter identifiers as
7+
Steinberg has twice reduced the set of valid paremeter identifiers.
8+
* Fixed bug related to window sizing for CLAP plugin format.
9+
* Fixed unneeded resource object deletion and use-after-free in VST plugin wrapper.
10+
* Updated module versions in dependencies.
11+
512
=== 1.0.26 ===
613
* Added support of audio send and audio return by the engine.
714
* Implemented AudioNavigator controller.

include/lsp-plug.in/plug-fw/version.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
#define LSP_PLUGIN_FW_MAJOR 1
2626
#define LSP_PLUGIN_FW_MINOR 0
27-
#define LSP_PLUGIN_FW_MICRO 26
27+
#define LSP_PLUGIN_FW_MICRO 27
2828

2929
#if defined(LSP_PLUGIN_FW_PUBLISHER)
3030
#define LSP_PLUGIN_FW_PUBLIC LSP_EXPORT_MODIFIER

include/lsp-plug.in/plug-fw/wrap/clap/impl/ui_wrapper.h

Lines changed: 45 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ namespace lsp
4747
bUIInitialized = false;
4848
bRequestProcess = false;
4949
bUIActive = false;
50+
bRealizeActive = false;
5051

5152
#ifdef LSP_CLAP_OWN_EVENT_LOOP
5253
pUIThread = NULL;
@@ -535,38 +536,51 @@ namespace lsp
535536
status_t UIWrapper::slot_ui_resize(tk::Widget *sender, void *ptr, void *data)
536537
{
537538
lsp_trace("sender = %p, ptr = %p, data = %p", sender, ptr, data);
539+
const ws::rectangle_t *r = static_cast<ws::rectangle_t *>(data);
540+
lsp_trace("resized.w = %d, resized.h = %d", int(r->nWidth), int(r->nHeight));
538541

539542
UIWrapper *this_ = static_cast<UIWrapper *>(ptr);
540543
tk::Window *wnd = this_->window();
541544
if ((wnd == NULL) || (!wnd->visibility()->get()))
542545
return STATUS_OK;
543546

544-
ws::rectangle_t rr;
545-
if (wnd->get_screen_rectangle(&rr) != STATUS_OK)
546-
return STATUS_OK;
547-
548-
this_->pExt->gui->request_resize(this_->pExt->host, rr.nWidth, rr.nHeight);
547+
ws::size_limit_t sr;
548+
wnd->get_padded_size_limits(&sr);
549+
if (((sr.nMinWidth >= 0) && (r->nWidth < sr.nMinWidth)) ||
550+
((sr.nMinHeight >= 0) && (r->nHeight < sr.nMinHeight)))
551+
{
552+
this_->pExt->gui->request_resize(this_->pExt->host, sr.nMinWidth, sr.nMinHeight);
553+
}
549554

550555
return STATUS_OK;
551556
}
552557

553558
status_t UIWrapper::slot_ui_show(tk::Widget *sender, void *ptr, void *data)
554559
{
555560
lsp_trace("sender = %p, ptr = %p, data = %p", sender, ptr, data);
561+
556562
return STATUS_OK;
557563
}
558564

559565
status_t UIWrapper::slot_ui_realized(tk::Widget *sender, void *ptr, void *data)
560566
{
567+
#ifdef LSP_TRACE
561568
lsp_trace("sender = %p, ptr = %p, data = %p", sender, ptr, data);
569+
const ws::rectangle_t *r = static_cast<ws::rectangle_t *>(data);
570+
lsp_trace("realized.w = %d, realized.h = %d", int(r->nWidth), int(r->nHeight));
571+
#endif /* LSP_TRACE */
562572

563-
UIWrapper *this_ = static_cast<UIWrapper *>(ptr);
564-
tk::Window *wnd = this_->window();
573+
UIWrapper *self = static_cast<UIWrapper *>(ptr);
574+
if (self->bRealizeActive)
575+
return STATUS_OK;
576+
self->bRealizeActive = true;
577+
lsp_finally { self->bRealizeActive = false; };
565578

579+
tk::Window *wnd = self->window();
566580
ws::rectangle_t rr;
567581
if (wnd->get_screen_rectangle(&rr) != STATUS_OK)
568582
return STATUS_OK;
569-
this_->pExt->gui->request_resize(this_->pExt->host, rr.nWidth, rr.nHeight);
583+
self->pExt->gui->request_resize(self->pExt->host, rr.nWidth, rr.nHeight);
570584

571585
return STATUS_OK;
572586
}
@@ -713,7 +727,15 @@ namespace lsp
713727
return false;
714728
lsp_finally { sMutex.unlock(); };
715729

716-
wnd->resize_window(width, height);
730+
ws::rectangle_t r;
731+
wnd->get_padded_screen_rectangle(&r);
732+
733+
if ((r.nWidth != ssize_t(width)) && (r.nHeight != ssize_t(height)))
734+
{
735+
lsp_trace("width = {%d, %d}, height = {%d, %d}, call for resize",
736+
int(r.nWidth), int(width), int(r.nHeight), int(height));
737+
wnd->resize_window(width, height);
738+
}
717739

718740
return true;
719741
}
@@ -838,6 +860,20 @@ namespace lsp
838860
return res;
839861
}
840862

863+
// Do the sync barrier
864+
sMutex.lock();
865+
lsp_finally { sMutex.unlock(); };
866+
867+
// Resize window
868+
ws::size_limit_t sr;
869+
wnd->get_padded_size_limits(&sr);
870+
lsp_trace("min_w=%d, min_h=%d", int(sr.nMinWidth), int(sr.nMinHeight));
871+
if ((sr.nMinWidth >= 0) && (sr.nMinHeight >= 0))
872+
{
873+
lsp_trace("request_resize(%d, %d)", int(sr.nMinWidth), int(sr.nMinHeight));
874+
pExt->gui->request_resize(pExt->host, sr.nMinWidth, sr.nMinHeight);
875+
}
876+
841877
// Update UI status
842878
bUIActive = true;
843879
if (pWrapper != NULL)

include/lsp-plug.in/plug-fw/wrap/clap/ui_wrapper.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ namespace lsp
5858
bool bUIInitialized; // UI initialized flag
5959
bool bRequestProcess;// Request the process() call flag
6060
bool bUIActive; // UI is active flag
61+
bool bRealizeActive; // Realize is active
6162

6263
#ifdef LSP_CLAP_OWN_EVENT_LOOP
6364
ipc::Thread *pUIThread; // Thread that performs the UI event loop

include/lsp-plug.in/plug-fw/wrap/vst2/impl/wrapper.h

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -222,13 +222,6 @@ namespace lsp
222222
}
223223
vGenMetadata.flush();
224224

225-
// Delete the loader
226-
if (pLoader != NULL)
227-
{
228-
delete pLoader;
229-
pLoader = NULL;
230-
}
231-
232225
// Clear all port lists
233226
vAudioPorts.flush();
234227
vAudioBuffers.flush();

include/lsp-plug.in/plug-fw/wrap/vst3/data.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ namespace lsp
6363
constexpr const char *ID_MSG_DEACTIVATE_UI = "UIDeactivate";
6464
constexpr const char *ID_MSG_PLAY_SAMPLE = "PlaySample";
6565

66-
constexpr const Steinberg::Vst::ParamID MIDI_MAPPING_PARAM_BASE = 0x80000000;
67-
constexpr const Steinberg::Vst::ParamID PARAM_ID_MODULO = 0x7fffffff;
66+
constexpr const Steinberg::Vst::ParamID MIDI_MAPPING_PARAM_BASE = 0x40000000;
67+
constexpr const Steinberg::Vst::ParamID PARAM_ID_MODULO = 0x3fffffff;
6868

6969
constexpr const float MIDI_FLOAT_TO_BYTE = 127.0f;
7070
constexpr const float MIDI_FLOAT_TO_BEND = 16383.0f;

modules.mk

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,80 +19,80 @@
1919
#
2020

2121
# Variables that describe dependencies
22-
LSP_3RD_PARTY_VERSION := 1.0.18
22+
LSP_3RD_PARTY_VERSION := 1.0.19
2323
LSP_3RD_PARTY_NAME := lsp-3rd-party
2424
LSP_3RD_PARTY_TYPE := hdr
2525
LSP_3RD_PARTY_INC_OPT := -idirafter
2626
LSP_3RD_PARTY_URL_RO := https://github.com/lsp-plugins/$(LSP_3RD_PARTY_NAME).git
2727
LSP_3RD_PARTY_URL_RW := [email protected]:lsp-plugins/$(LSP_3RD_PARTY_NAME).git
2828

29-
LSP_COMMON_LIB_VERSION := 1.0.38
29+
LSP_COMMON_LIB_VERSION := 1.0.39
3030
LSP_COMMON_LIB_NAME := lsp-common-lib
3131
LSP_COMMON_LIB_TYPE := src
3232
LSP_COMMON_LIB_URL_RO := https://github.com/lsp-plugins/$(LSP_COMMON_LIB_NAME).git
3333
LSP_COMMON_LIB_URL_RW := [email protected]:lsp-plugins/$(LSP_COMMON_LIB_NAME).git
3434

35-
LSP_DSP_LIB_VERSION := 1.0.26
35+
LSP_DSP_LIB_VERSION := 1.0.27
3636
LSP_DSP_LIB_NAME := lsp-dsp-lib
3737
LSP_DSP_LIB_TYPE := src
3838
LSP_DSP_LIB_URL_RO := https://github.com/lsp-plugins/$(LSP_DSP_LIB_NAME).git
3939
LSP_DSP_LIB_URL_RW := [email protected]:lsp-plugins/$(LSP_DSP_LIB_NAME).git
4040

41-
LSP_DSP_UNITS_VERSION := 1.0.25
41+
LSP_DSP_UNITS_VERSION := 1.0.26
4242
LSP_DSP_UNITS_NAME := lsp-dsp-units
4343
LSP_DSP_UNITS_TYPE := src
4444
LSP_DSP_UNITS_URL_RO := https://github.com/lsp-plugins/$(LSP_DSP_UNITS_NAME).git
4545
LSP_DSP_UNITS_URL_RW := [email protected]:lsp-plugins/$(LSP_DSP_UNITS_NAME).git
4646

47-
LSP_LLTL_LIB_VERSION := 1.0.21
47+
LSP_LLTL_LIB_VERSION := 1.0.22
4848
LSP_LLTL_LIB_NAME := lsp-lltl-lib
4949
LSP_LLTL_LIB_TYPE := src
5050
LSP_LLTL_LIB_URL_RO := https://github.com/lsp-plugins/$(LSP_LLTL_LIB_NAME).git
5151
LSP_LLTL_LIB_URL_RW := [email protected]:lsp-plugins/$(LSP_LLTL_LIB_NAME).git
5252

53-
LSP_R3D_BASE_LIB_VERSION := 1.0.20
53+
LSP_R3D_BASE_LIB_VERSION := 1.0.21
5454
LSP_R3D_BASE_LIB_NAME := lsp-r3d-base-lib
5555
LSP_R3D_BASE_LIB_TYPE := src
5656
LSP_R3D_BASE_LIB_URL_RO := https://github.com/lsp-plugins/$(LSP_R3D_BASE_LIB_NAME).git
5757
LSP_R3D_BASE_LIB_URL_RW := [email protected]:lsp-plugins/$(LSP_R3D_BASE_LIB_NAME).git
5858

59-
LSP_R3D_IFACE_VERSION := 1.0.20
59+
LSP_R3D_IFACE_VERSION := 1.0.21
6060
LSP_R3D_IFACE_NAME := lsp-r3d-iface
6161
LSP_R3D_IFACE_TYPE := src
6262
LSP_R3D_IFACE_URL_RO := https://github.com/lsp-plugins/$(LSP_R3D_IFACE_NAME).git
6363
LSP_R3D_IFACE_URL_RW := [email protected]:lsp-plugins/$(LSP_R3D_IFACE_NAME).git
6464

65-
LSP_R3D_GLX_LIB_VERSION := 1.0.20
65+
LSP_R3D_GLX_LIB_VERSION := 1.0.21
6666
LSP_R3D_GLX_LIB_NAME := lsp-r3d-glx-lib
6767
LSP_R3D_GLX_LIB_TYPE := bin
6868
LSP_R3D_GLX_LIB_URL_RO := https://github.com/lsp-plugins/$(LSP_R3D_GLX_LIB_NAME).git
6969
LSP_R3D_GLX_LIB_URL_RW := [email protected]:lsp-plugins/$(LSP_R3D_GLX_LIB_NAME).git
7070

71-
LSP_R3D_WGL_LIB_VERSION := 1.0.15
71+
LSP_R3D_WGL_LIB_VERSION := 1.0.16
7272
LSP_R3D_WGL_LIB_NAME := lsp-r3d-wgl-lib
7373
LSP_R3D_WGL_LIB_TYPE := bin
7474
LSP_R3D_WGL_LIB_URL_RO := https://github.com/lsp-plugins/$(LSP_R3D_WGL_LIB_NAME).git
7575
LSP_R3D_WGL_LIB_URL_RW := [email protected]:lsp-plugins/$(LSP_R3D_WGL_LIB_NAME).git
7676

77-
LSP_RUNTIME_LIB_VERSION := 1.0.24
77+
LSP_RUNTIME_LIB_VERSION := 1.0.25
7878
LSP_RUNTIME_LIB_NAME := lsp-runtime-lib
7979
LSP_RUNTIME_LIB_TYPE := src
8080
LSP_RUNTIME_LIB_URL_RO := https://github.com/lsp-plugins/$(LSP_RUNTIME_LIB_NAME).git
8181
LSP_RUNTIME_LIB_URL_RW := [email protected]:lsp-plugins/$(LSP_RUNTIME_LIB_NAME).git
8282

83-
LSP_TEST_FW_VERSION := 1.0.27
83+
LSP_TEST_FW_VERSION := 1.0.28
8484
LSP_TEST_FW_NAME := lsp-test-fw
8585
LSP_TEST_FW_TYPE := src
8686
LSP_TEST_FW_URL_RO := https://github.com/lsp-plugins/$(LSP_TEST_FW_NAME).git
8787
LSP_TEST_FW_URL_RW := [email protected]:lsp-plugins/$(LSP_TEST_FW_NAME).git
8888

89-
LSP_TK_LIB_VERSION := 1.0.24
89+
LSP_TK_LIB_VERSION := 1.0.25
9090
LSP_TK_LIB_NAME := lsp-tk-lib
9191
LSP_TK_LIB_TYPE := src
9292
LSP_TK_LIB_URL_RO := https://github.com/lsp-plugins/$(LSP_TK_LIB_NAME).git
9393
LSP_TK_LIB_URL_RW := [email protected]:lsp-plugins/$(LSP_TK_LIB_NAME).git
9494

95-
LSP_WS_LIB_VERSION := 1.0.24
95+
LSP_WS_LIB_VERSION := 1.0.25
9696
LSP_WS_LIB_NAME := lsp-ws-lib
9797
LSP_WS_LIB_TYPE := src
9898
LSP_WS_LIB_URL_RO := https://github.com/lsp-plugins/$(LSP_WS_LIB_NAME).git

project.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,4 @@ ARTIFACT_NAME = lsp-plugin-fw
2424
ARTIFACT_DESC = LSP Plugin Framework for building LSP Plugins
2525
ARTIFACT_HEADERS = lsp-plug.in
2626
ARTIFACT_EXPORT_ALL = 1
27-
ARTIFACT_VERSION = 1.0.26
27+
ARTIFACT_VERSION = 1.0.27

0 commit comments

Comments
 (0)