Browse Source

add global settings toolbar menu (window size, refresh rate, vsync, favourite module list, ..)

pull/1639/head
bsp2 6 years ago
parent
commit
16e4d934c5
10 changed files with 474 additions and 13 deletions
  1. +1
    -0
      res/icons/LICENSE_settings_icon.txt
  2. +78
    -0
      res/icons/settings_icon_cc.svg
  3. +27
    -0
      res/icons/settings_icon_cc__ORIG.svg
  4. +124
    -0
      src/app/Toolbar.cpp
  5. +101
    -4
      src/settings.cpp
  6. +62
    -7
      src/vst2_main.cpp
  7. +1
    -1
      src/widgets/QuantityWidget.cpp
  8. +1
    -1
      src/window.cpp
  9. +1
    -0
      vst2_bin/res/icons/LICENSE_settings_icon.txt
  10. +78
    -0
      vst2_bin/res/icons/settings_icon_cc.svg

+ 1
- 0
res/icons/LICENSE_settings_icon.txt View File

@@ -0,0 +1 @@
<div>Icons made by <a href="https://www.flaticon.com/authors/egor-rumyantsev" title="Egor Rumyantsev">Egor Rumyantsev</a> from <a href="https://www.flaticon.com/" title="Flaticon">www.flaticon.com</a> is licensed by <a href="http://creativecommons.org/licenses/by/3.0/" title="Creative Commons BY 3.0" target="_blank">CC 3.0 BY</a></div>

+ 78
- 0
res/icons/settings_icon_cc.svg View File

@@ -0,0 +1,78 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
x="0px"
y="0px"
viewBox="-7074.5 3413.5 16 16"
enable-background="new -7074.5 3413.5 24 24"
xml:space="preserve"
id="svg12"
sodipodi:docname="settings_icon_cc.svg"
width="16"
height="16"
inkscape:version="0.92.3 (2405546, 2018-03-11)"><metadata
id="metadata18"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs16">
</defs><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1137"
id="namedview14"
showgrid="false"
inkscape:zoom="22.250293"
inkscape:cx="1.4996926"
inkscape:cy="9.1190487"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg12" /><g
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
id="text1044" /><g
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
id="text1056" /><g
transform="matrix(0.04483133,0,0,0.04483133,-7072.6113,3415.4306)"
id="Settings"
style="fill:#b4b4b4;fill-opacity:1"><g
id="g4"
style="fill:#b4b4b4;fill-opacity:1"><path
style="clip-rule:evenodd;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd"
d="M 267.92,119.461 C 259.7639,108.37353 237.60907,113.69022 232.38746,96.479699 224.2718,82.390868 233.00438,67.286235 241.3705,56.29375 237.43425,44.426372 225.91606,35.523227 215.98352,28.244359 203.37196,32.005085 190.10946,46.088799 174.769,37.92 157.82363,32.983341 158.89813,13.404545 152.74813,1.7591562 140.59107,-0.17972483 126.1677,-2.1756684 114.95288,3.357125 112.96944,17.007361 108.38383,33.860528 92.63896,37.926967 77.775408,44.414555 65.997604,30.615672 53.839531,27.462953 43.772588,34.725084 31.977464,43.546698 27.964375,55.510625 c 8.49164,11.040709 17.354156,26.326968 8.991024,40.499701 -5.867916,15.344484 -24.485634,13.358994 -35.2431959,20.053284 -1.60577119,12.17834 -4.4742822,27.30556 2.2519219,37.97214 12.880627,2.23194 28.500004,5.84589 33.341875,20.29625 8.393178,15.26924 -5.888965,28.31876 -9.629844,40.84962 7.224375,9.96863 15.9554,21.67539 27.825594,25.64263 11.099937,-8.35246 26.446117,-17.06929 40.584732,-8.98545 15.634258,5.69547 13.544408,24.27779 19.933428,35.16712 12.15272,1.92903 26.57763,3.94093 37.78909,-1.60092 1.97214,-13.65237 6.56399,-30.5044 22.31039,-34.56583 14.86512,-6.50972 26.63511,7.31696 38.79786,10.45844 10.07865,-7.24787 21.85234,-16.08992 25.88513,-28.04249 -8.48485,-11.03294 -17.36567,-26.29404 -9.02937,-40.47181 5.58844,-11.68796 18.70272,-16.89286 31.01071,-16.51756 9.97767,-7.68663 4.90088,-25.51607 5.13628,-36.80475 z m -133.325,60.03 c -26.4812,0.83488 -49.170092,-25.58413 -44.306628,-51.64133 3.22607,-26.2257 32.618568,-44.652523 57.621488,-35.988163 25.41298,7.086788 39.29929,38.784143 27.08161,62.222153 -7.20502,15.27134 -23.48006,25.59801 -40.39647,25.40734 z"
id="path2"
inkscape:connector-curvature="0" /></g></g></svg>

+ 27
- 0
res/icons/settings_icon_cc__ORIG.svg View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 268.765 268.765" style="enable-background:new 0 0 268.765 268.765;" xml:space="preserve"
>
<g id="Settings">
<g>
<path style="fill-rule:evenodd;clip-rule:evenodd;" d="M267.92,119.461c-0.425-3.778-4.83-6.617-8.639-6.617
c-12.315,0-23.243-7.231-27.826-18.414c-4.682-11.454-1.663-24.812,7.515-33.231c2.889-2.641,3.24-7.062,0.817-10.133
c-6.303-8.004-13.467-15.234-21.289-21.5c-3.063-2.458-7.557-2.116-10.213,0.825c-8.01,8.871-22.398,12.168-33.516,7.529
c-11.57-4.867-18.866-16.591-18.152-29.176c0.235-3.953-2.654-7.39-6.595-7.849c-10.038-1.161-20.164-1.197-30.232-0.08
c-3.896,0.43-6.785,3.786-6.654,7.689c0.438,12.461-6.946,23.98-18.401,28.672c-10.985,4.487-25.272,1.218-33.266-7.574
c-2.642-2.896-7.063-3.252-10.141-0.853c-8.054,6.319-15.379,13.555-21.74,21.493c-2.481,3.086-2.116,7.559,0.802,10.214
c9.353,8.47,12.373,21.944,7.514,33.53c-4.639,11.046-16.109,18.165-29.24,18.165c-4.261-0.137-7.296,2.723-7.762,6.597
c-1.182,10.096-1.196,20.383-0.058,30.561c0.422,3.794,4.961,6.608,8.812,6.608c11.702-0.299,22.937,6.946,27.65,18.415
c4.698,11.454,1.678,24.804-7.514,33.23c-2.875,2.641-3.24,7.055-0.817,10.126c6.244,7.953,13.409,15.19,21.259,21.508
c3.079,2.481,7.559,2.131,10.228-0.81c8.04-8.893,22.427-12.184,33.501-7.536c11.599,4.852,18.895,16.575,18.181,29.167
c-0.233,3.955,2.67,7.398,6.595,7.85c5.135,0.599,10.301,0.898,15.481,0.898c4.917,0,9.835-0.27,14.752-0.817
c3.897-0.43,6.784-3.786,6.653-7.696c-0.451-12.454,6.946-23.973,18.386-28.657c11.059-4.517,25.286-1.211,33.281,7.572
c2.657,2.89,7.047,3.239,10.142,0.848c8.039-6.304,15.349-13.534,21.74-21.494c2.48-3.079,2.13-7.559-0.803-10.213
c-9.353-8.47-12.388-21.946-7.529-33.524c4.568-10.899,15.612-18.217,27.491-18.217l1.662,0.043
c3.853,0.313,7.398-2.655,7.865-6.588C269.044,139.917,269.058,129.639,267.92,119.461z M134.595,179.491
c-24.718,0-44.824-20.106-44.824-44.824c0-24.717,20.106-44.824,44.824-44.824c24.717,0,44.823,20.107,44.823,44.824
C179.418,159.385,159.312,179.491,134.595,179.491z"/>
</g>
</g>
</svg>

+ 124
- 0
src/app/Toolbar.cpp View File

@@ -3,6 +3,7 @@
#include "window.hpp"
#include "engine.hpp"
#include "asset.hpp"
#include "settings.hpp"
#include "global.hpp"
#include "global_ui.hpp"

@@ -14,6 +15,9 @@ extern void vst2_oversample_channels_set (int _numIn, int _numOut);
extern void vst2_oversample_channels_get (int *_numIn, int *_numOut);
extern void vst2_idle_detect_mode_set (int _mode);
extern void vst2_idle_detect_mode_get (int *_mode);
extern void vst2_refresh_rate_set (float _hz);
extern float vst2_refresh_rate_get (void);
extern void vst2_window_size_set (int _width, int _height);
#endif // RACK_HOST

namespace rack {
@@ -320,6 +324,125 @@ struct IdleModeButton : TooltipIconButton {
}
};

struct settings_win_size_entry_t {
int w;
int h;
};

static settings_win_size_entry_t loc_settings_win_sizes[] = {
{ 1002, 600 },
{ 1272, 820 },
{ 1408, 850 },
{ 1588, 1100 },
{ 1902, 1100 },
{ 2500, 1980 },
{ 3000, 1980 },
};
#define NUM_SETTINGS_WIN_SIZE (sizeof(loc_settings_win_sizes) / sizeof(settings_win_size_entry_t))

struct SettingsWinSizeItem : MenuItem {
const settings_win_size_entry_t *setting;

void onAction(EventAction &e) override {
#ifdef RACK_HOST
global_ui->window.windowWidth = setting->w;
global_ui->window.windowHeight = setting->h;
vst2_window_size_set(setting->w, setting->h);
#endif // RACK_HOST
}
};

struct settings_refresh_rate_entry_t {
int rate;
const char *caption;
};

static settings_refresh_rate_entry_t loc_settings_refresh_rates[] = {
{ 0, "<host fps>" },
{ 15, "15 fps" },
{ 30, "30 fps" },
{ 60, "60 fps" },
{ 75, "75 fps" },
{ 100, "100 fps" },
};
#define NUM_SETTINGS_REFRESH_RATE (sizeof(loc_settings_refresh_rates) / sizeof(settings_refresh_rate_entry_t))

struct SettingsRefreshRateItem : MenuItem {
const settings_refresh_rate_entry_t *setting;

void onAction(EventAction &e) override {
#ifdef RACK_HOST
vst2_refresh_rate_set(float(setting->rate));
#endif // RACK_HOST
}
};

struct SettingsVsyncItem : MenuItem {

void onAction(EventAction &e) override {
lglw_swap_interval_set(global_ui->window.lglw, lglw_swap_interval_get(global_ui->window.lglw) ^ 1);
}
};

struct SettingsSaveItem : MenuItem {

void onAction(EventAction &e) override {
settingsSave(assetLocal("settings.json"));
}
};

struct SettingsButton : TooltipIconButton {
SettingsButton() {
setSVG(SVG::load(assetGlobal("res/icons/settings_icon_cc.svg")));
tooltipText = "Global Settings";
}
void onAction(EventAction &e) override {
Menu *menu = global_ui->ui.gScene->createMenu();
menu->box.pos = getAbsoluteOffset(Vec(0, box.size.y));
menu->box.size.x = box.size.x;

menu->addChild(MenuLabel::create("Global Settings"));

#ifdef RACK_HOST
int cWinW = int(global_ui->window.windowWidth);
int cWinH = int(global_ui->window.windowHeight);
for(int i = 0; i < NUM_SETTINGS_WIN_SIZE; i++)
{
const settings_win_size_entry_t *en = &loc_settings_win_sizes[i];

SettingsWinSizeItem *winSizeItem = new SettingsWinSizeItem();
char buf[256];
sprintf(buf, "%dx%d", en->w, en->h);
winSizeItem->text = buf;
winSizeItem->setting = en;
winSizeItem->rightText = CHECKMARK( (cWinW == en->w) && (cWinH == en->h) );
menu->addChild(winSizeItem);
}

int cRate = int(vst2_refresh_rate_get());
for(int i = 0; i < NUM_SETTINGS_REFRESH_RATE; i++)
{
const settings_refresh_rate_entry_t *en = &loc_settings_refresh_rates[i];

SettingsRefreshRateItem *rateItem = new SettingsRefreshRateItem();
rateItem->text = en->caption;
rateItem->setting = en;
rateItem->rightText = CHECKMARK( (cRate == en->rate) );
menu->addChild(rateItem);
}

SettingsVsyncItem *vsyncItem = new SettingsVsyncItem();
vsyncItem->text = "Vsync";
vsyncItem->rightText = CHECKMARK( (0 != lglw_swap_interval_get(global_ui->window.lglw)) );
menu->addChild(vsyncItem);

SettingsSaveItem *saveItem = new SettingsSaveItem();
saveItem->text = "Save Settings (+Favourites)";
menu->addChild(saveItem);
#endif // RACK_HOST
}
};

struct ZoomSlider : Slider {
void onAction(EventAction &e) override {
Slider::onAction(e);
@@ -347,6 +470,7 @@ Toolbar::Toolbar() {
layout->addChild(new PowerMeterButton());
layout->addChild(new RackLockButton());
layout->addChild(new IdleModeButton());
layout->addChild(new SettingsButton());

wireOpacitySlider = new Slider();
wireOpacitySlider->box.size.x = 150;


+ 101
- 4
src/settings.cpp View File

@@ -9,16 +9,22 @@
#include "global_ui.hpp"


#ifdef RACK_HOST
extern void vst2_window_size_set (int _width, int _height);
extern void vst2_refresh_rate_set (float _hz);

#ifdef RACK_HOST
extern float vst2_refresh_rate_get (void);
extern void vst2_oversample_realtime_set (float _factor, int _quality);
extern void vst2_oversample_realtime_get (float *_factor, int *_quality);
extern void vst2_oversample_offline_set (float _factor, int _quality);
extern void vst2_oversample_offline_get (float *_factor, int *_quality);
extern void vst2_oversample_offline_check_set (int _bEnable);
extern int32_t vst2_oversample_offline_check_get (void);
extern void vst2_oversample_channels_set (int _numIn, int _numOut);
extern void vst2_oversample_channels_get (int *_numIn, int *_numOut);
extern void vst2_idle_detect_mode_fx_set (int _mode);
extern int vst2_idle_detect_mode_fx_get (void);
extern void vst2_idle_detect_mode_instr_set (int _mode);
extern int vst2_idle_detect_mode_instr_get (void);
#endif // RACK_HOST

namespace rack {
@@ -30,11 +36,16 @@ static json_t *settingsToJson() {
// root
json_t *rootJ = json_object();

#ifdef RACK_HOST

// token
json_t *tokenJ = json_string(global->plugin.gToken.c_str());
json_object_set_new(rootJ, "token", tokenJ);

if (!windowIsMaximized()) {
#if 0
if (!windowIsMaximized())
#endif
{
// windowSize
Vec windowSize = windowGetWindowSize();
json_t *windowSizeJ = json_pack("[f, f]", windowSize.x, windowSize.y);
@@ -61,6 +72,86 @@ static json_t *settingsToJson() {
json_t *zoomJ = json_real(zoom);
json_object_set_new(rootJ, "zoom", zoomJ);

// refresh rate (Hz)
float refreshRate = vst2_refresh_rate_get();
json_t *refreshRateJ = json_integer(int(refreshRate));
json_object_set_new(rootJ, "refreshRate", refreshRateJ);

// vsync
int vsync = lglw_swap_interval_get(global_ui->window.lglw);
json_t *vsyncJ = json_boolean(vsync);
json_object_set_new(rootJ, "vsync", vsyncJ);

// touchInput
int touchInput = lglw_touchinput_get(global_ui->window.lglw);
json_t *touchInputJ = json_boolean(touchInput);
json_object_set_new(rootJ, "touchInput", touchInputJ);

// touchKbd
int touchKbd = b_touchkeyboard_enable;
json_t *touchKbdJ = json_boolean(touchKbd);
json_object_set_new(rootJ, "touchKbd", touchKbdJ);

// (realtime) oversampleFactor, oversampleQuality
{
float factor;
int quality;
vst2_oversample_realtime_get(&factor, &quality);

json_t *factorJ = json_real(factor);
json_object_set_new(rootJ, "oversampleFactor", factorJ);

json_t *qualityJ = json_integer(quality);
json_object_set_new(rootJ, "oversampleQuality", qualityJ);
}

// oversampleOfflineFactor, oversampleOfflineQuality
{
float factor;
int quality;
vst2_oversample_offline_get(&factor, &quality);

json_t *factorJ = json_real(factor);
json_object_set_new(rootJ, "oversampleOfflineFactor", factorJ);

json_t *qualityJ = json_integer(quality);
json_object_set_new(rootJ, "oversampleOfflineQuality", qualityJ);
}

// oversample offline check (oversampleOffline)
json_t *offlineJ = json_boolean(vst2_oversample_offline_check_get());
json_object_set_new(rootJ, "oversampleOffline", offlineJ);

// oversample input channel limit (oversampleNumIn)
// oversample output channel limit (oversampleNumOut)
{
int numIn;
int numOut;
vst2_oversample_channels_get(&numIn, &numOut);

json_t *numInJ = json_real(numIn);
json_object_set_new(rootJ, "oversampleNumIn", numInJ);

json_t *numOutJ = json_real(numOut);
json_object_set_new(rootJ, "oversampleNumOut", numOutJ);
}

// idleDetectInstr
{
int idleMode = vst2_idle_detect_mode_instr_get();

json_t *idleJ = json_integer(idleMode);
json_object_set_new(rootJ, "idleDetectInstr", idleJ);
}

// idleDetectFx
{
int idleMode = vst2_idle_detect_mode_fx_get();

json_t *idleJ = json_integer(idleMode);
json_object_set_new(rootJ, "idleDetectFx", idleJ);
}

// allowCursorLock
json_t *allowCursorLockJ = json_boolean(global_ui->window.gAllowCursorLock);
json_object_set_new(rootJ, "allowCursorLock", allowCursorLockJ);
@@ -87,6 +178,8 @@ static json_t *settingsToJson() {
// checkVersion
json_object_set_new(rootJ, "checkVersion", json_boolean(global_ui->app.gCheckVersion));

#endif // RACK_HOST

return rootJ;
}

@@ -107,7 +200,9 @@ static void settingsFromJson(json_t *rootJ, bool bWindowSizeOnly) {
{
global_ui->window.windowWidth = int(width);
global_ui->window.windowHeight = int(height);
#ifdef RACK_HOST
vst2_window_size_set((int)width, (int)height);
#endif // RACK_HOST
return;
}
#else
@@ -146,7 +241,9 @@ static void settingsFromJson(json_t *rootJ, bool bWindowSizeOnly) {
// (note) <15: use DAW timer (effEditIdle)
json_t *refreshJ = json_object_get(rootJ, "refreshRate");
if (refreshJ) {
#ifdef RACK_HOST
vst2_refresh_rate_set(clamp((float) json_number_value(refreshJ), 0.0f, 200.0f));
#endif // RACK_HOST
}

// vsync
@@ -156,7 +253,7 @@ static void settingsFromJson(json_t *rootJ, bool bWindowSizeOnly) {
if (vsyncJ)
{
lglw_glcontext_push(global_ui->window.lglw);
lglw_swap_interval(global_ui->window.lglw, json_is_true(vsyncJ));
lglw_swap_interval_set(global_ui->window.lglw, json_is_true(vsyncJ));
lglw_glcontext_pop(global_ui->window.lglw);
}
}


+ 62
- 7
src/vst2_main.cpp View File

@@ -18,7 +18,7 @@
/// created: 25Jun2018
/// changed: 26Jun2018, 27Jun2018, 29Jun2018, 01Jul2018, 02Jul2018, 06Jul2018, 13Jul2018
/// 26Jul2018, 04Aug2018, 05Aug2018, 06Aug2018, 07Aug2018, 09Aug2018, 11Aug2018
/// 18Aug2018, 19Aug2018
/// 18Aug2018, 19Aug2018, 05Sep2018
///
///

@@ -458,6 +458,8 @@ public:
bool b_check_offline; // true=ask host if it's in offline rendering mode

sUI idle_detect_mode;
sUI idle_detect_mode_fx;
sUI idle_detect_mode_instr;
sF32 idle_input_level_threshold;
sF32 idle_output_level_threshold;
sF32 idle_output_sec_threshold;
@@ -563,6 +565,8 @@ public:

editor_rect.right = EDITWIN_X + _width;
editor_rect.bottom = EDITWIN_Y + _height;

(void)lglw_window_resize(rack_global_ui.window.lglw, _width, _height);
}

void setRefreshRate(float _hz) {
@@ -570,6 +574,23 @@ public:
redraw_ival_ms = 0u;
else
redraw_ival_ms = sUI(1000.0f / _hz);

if(b_editor_open)
{
lglw_timer_stop(rack_global_ui.window.lglw);

if(0u != redraw_ival_ms)
{
lglw_timer_start(rack_global_ui.window.lglw, redraw_ival_ms);
}
}
}

float getRefreshRate(void) {
if(redraw_ival_ms > 0u)
return (1000.0f / redraw_ival_ms);
else
return 0.0f;
}

void destroyResamplerStates(void) {
@@ -891,6 +912,20 @@ public:
idle_output_framecount = 0u;
}

void setIdleDetectModeFx(uint32_t _mode) {
idle_detect_mode_fx = _mode;
#ifdef VST2_EFFECT
setIdleDetectMode(uint32_t(_mode));
#endif // VST2_EFFECT
}

void setIdleDetectModeInstr(uint32_t _mode) {
idle_detect_mode_instr = _mode;
#ifndef VST2_EFFECT
setIdleDetectMode(uint32_t(_mode));
#endif // VST2_EFFECT
}

sUI getProgramChunk(uint8_t**_addr) {
setGlobals();
vst2_set_shared_plugin_tls_globals();
@@ -1719,6 +1754,12 @@ VstIntPtr VSTPluginDispatcher(VSTPlugin *vstPlugin,
if(NULL != ptr)
{
// ...
printf("xxx vstrack_plugin: effEditGetRect: (%d; %d; %d; %d)\n",
wrapper->editor_rect.top,
wrapper->editor_rect.left,
wrapper->editor_rect.bottom,
wrapper->editor_rect.right
);
*(void**)ptr = (void*) &wrapper->editor_rect;
r = 1;
}
@@ -1936,6 +1977,8 @@ VSTPluginWrapper::VSTPluginWrapper(audioMasterCallback vstHostCallback,
b_check_offline = false;

idle_detect_mode = IDLE_DETECT_NONE;
idle_detect_mode_fx = IDLE_DETECT_AUDIO;
idle_detect_mode_instr = IDLE_DETECT_MIDI;
b_idle = false;
idle_input_level_threshold = 0.00018f;//0.00007f;
idle_output_level_threshold = 0.00018f;//0.00003f;
@@ -1997,6 +2040,10 @@ void vst2_refresh_rate_set(float _hz) {
rack::global->vst2.wrapper->setRefreshRate(_hz);
}

float vst2_refresh_rate_get(void) {
return rack::global->vst2.wrapper->getRefreshRate();
}

extern "C" void lglw_timer_cbk(lglw_t _lglw) {
VSTPluginWrapper *wrapper = (VSTPluginWrapper*)lglw_userdata_get(_lglw);
wrapper->queueRedraw();
@@ -2029,6 +2076,10 @@ void vst2_oversample_offline_check_set(int _bEnable) {
rack::global->vst2.wrapper->b_check_offline = (0 != _bEnable);
}

int32_t vst2_oversample_offline_check_get(void) {
return int32_t(rack::global->vst2.wrapper->b_check_offline);
}

void vst2_oversample_channels_set(int _numIn, int _numOut) {
rack::global->vst2.wrapper->setOversampleChannels(_numIn, _numOut);
}
@@ -2039,15 +2090,19 @@ void vst2_oversample_channels_get(int *_numIn, int *_numOut) {
}

void vst2_idle_detect_mode_fx_set(int _mode) {
#ifdef VST2_EFFECT
rack::global->vst2.wrapper->setIdleDetectMode(uint32_t(_mode));
#endif // VST2_EFFECT
rack::global->vst2.wrapper->setIdleDetectModeFx(uint32_t(_mode));
}

int vst2_idle_detect_mode_fx_get(void) {
return rack::global->vst2.wrapper->idle_detect_mode_fx;
}

void vst2_idle_detect_mode_instr_set(int _mode) {
#ifndef VST2_EFFECT
rack::global->vst2.wrapper->setIdleDetectMode(uint32_t(_mode));
#endif // VST2_EFFECT
rack::global->vst2.wrapper->setIdleDetectModeInstr(uint32_t(_mode));
}

int vst2_idle_detect_mode_instr_get(void) {
return rack::global->vst2.wrapper->idle_detect_mode_instr;
}

void vst2_idle_detect_mode_set(int _mode) {


+ 1
- 1
src/widgets/QuantityWidget.cpp View File

@@ -45,7 +45,7 @@ std::string QuantityWidget::getText() {
}

void QuantityWidget::onMouseLeave(EventMouseLeave &e) {
revert_val = INVALID_REVERT_VAL;
// // revert_val = INVALID_REVERT_VAL;
}

} // namespace rack

+ 1
- 1
src/window.cpp View File

@@ -374,7 +374,7 @@ void windowInit() {
global_ui->window.lastWindowTitle = "";

lglw_glcontext_push(global_ui->window.lglw);
lglw_swap_interval(global_ui->window.lglw, 1); // can be overridden via settings.json:"vsync" property
lglw_swap_interval_set(global_ui->window.lglw, 1); // can be overridden via settings.json:"vsync" property

lglw_mouse_callback_set (global_ui->window.lglw, &lglw_mouse_cbk);
lglw_focus_callback_set (global_ui->window.lglw, &lglw_focus_cbk);


+ 1
- 0
vst2_bin/res/icons/LICENSE_settings_icon.txt View File

@@ -0,0 +1 @@
<div>Icons made by <a href="https://www.flaticon.com/authors/egor-rumyantsev" title="Egor Rumyantsev">Egor Rumyantsev</a> from <a href="https://www.flaticon.com/" title="Flaticon">www.flaticon.com</a> is licensed by <a href="http://creativecommons.org/licenses/by/3.0/" title="Creative Commons BY 3.0" target="_blank">CC 3.0 BY</a></div>

+ 78
- 0
vst2_bin/res/icons/settings_icon_cc.svg View File

@@ -0,0 +1,78 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
x="0px"
y="0px"
viewBox="-7074.5 3413.5 16 16"
enable-background="new -7074.5 3413.5 24 24"
xml:space="preserve"
id="svg12"
sodipodi:docname="settings_icon_cc.svg"
width="16"
height="16"
inkscape:version="0.92.3 (2405546, 2018-03-11)"><metadata
id="metadata18"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs16">
</defs><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1137"
id="namedview14"
showgrid="false"
inkscape:zoom="22.250293"
inkscape:cx="1.4996926"
inkscape:cy="9.1190487"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg12" /><g
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
id="text1044" /><g
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
id="text1056" /><g
transform="matrix(0.04483133,0,0,0.04483133,-7072.6113,3415.4306)"
id="Settings"
style="fill:#b4b4b4;fill-opacity:1"><g
id="g4"
style="fill:#b4b4b4;fill-opacity:1"><path
style="clip-rule:evenodd;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd"
d="M 267.92,119.461 C 259.7639,108.37353 237.60907,113.69022 232.38746,96.479699 224.2718,82.390868 233.00438,67.286235 241.3705,56.29375 237.43425,44.426372 225.91606,35.523227 215.98352,28.244359 203.37196,32.005085 190.10946,46.088799 174.769,37.92 157.82363,32.983341 158.89813,13.404545 152.74813,1.7591562 140.59107,-0.17972483 126.1677,-2.1756684 114.95288,3.357125 112.96944,17.007361 108.38383,33.860528 92.63896,37.926967 77.775408,44.414555 65.997604,30.615672 53.839531,27.462953 43.772588,34.725084 31.977464,43.546698 27.964375,55.510625 c 8.49164,11.040709 17.354156,26.326968 8.991024,40.499701 -5.867916,15.344484 -24.485634,13.358994 -35.2431959,20.053284 -1.60577119,12.17834 -4.4742822,27.30556 2.2519219,37.97214 12.880627,2.23194 28.500004,5.84589 33.341875,20.29625 8.393178,15.26924 -5.888965,28.31876 -9.629844,40.84962 7.224375,9.96863 15.9554,21.67539 27.825594,25.64263 11.099937,-8.35246 26.446117,-17.06929 40.584732,-8.98545 15.634258,5.69547 13.544408,24.27779 19.933428,35.16712 12.15272,1.92903 26.57763,3.94093 37.78909,-1.60092 1.97214,-13.65237 6.56399,-30.5044 22.31039,-34.56583 14.86512,-6.50972 26.63511,7.31696 38.79786,10.45844 10.07865,-7.24787 21.85234,-16.08992 25.88513,-28.04249 -8.48485,-11.03294 -17.36567,-26.29404 -9.02937,-40.47181 5.58844,-11.68796 18.70272,-16.89286 31.01071,-16.51756 9.97767,-7.68663 4.90088,-25.51607 5.13628,-36.80475 z m -133.325,60.03 c -26.4812,0.83488 -49.170092,-25.58413 -44.306628,-51.64133 3.22607,-26.2257 32.618568,-44.652523 57.621488,-35.988163 25.41298,7.086788 39.29929,38.784143 27.08161,62.222153 -7.20502,15.27134 -23.48006,25.59801 -40.39647,25.40734 z"
id="path2"
inkscape:connector-curvature="0" /></g></g></svg>

Loading…
Cancel
Save