X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fpluginlv2ui.C;h=80bf250f1e2c7921c8ac23c9ac2fc1bb8f46deab;hb=853b81c6d430bd41037984ecc95fd304fd98964e;hp=17f072a2c6bf63b6c5960f21d7c364aa10e5199c;hpb=7fd85fb66168f6b518c5f2d73e04036e87faa0e1;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/pluginlv2ui.C b/cinelerra-5.1/cinelerra/pluginlv2ui.C index 17f072a2..80bf250f 100644 --- a/cinelerra-5.1/cinelerra/pluginlv2ui.C +++ b/cinelerra-5.1/cinelerra/pluginlv2ui.C @@ -114,6 +114,7 @@ bool PluginLV2UI::lv2ui_resizable() return !fs_matches && !nrs_matches; } +//force= 1:ctls(all),gui(all) 0:changed(ctls) -1:gui(all) int PluginLV2UI::update_lv2_input(float *vals, int force) { int ret = 0; @@ -122,9 +123,12 @@ int PluginLV2UI::update_lv2_input(float *vals, int force) int idx = config[i]->idx; float val = vals[idx]; if( !force && ctls[idx] == val ) continue; - ctls[idx] = val; - update_control(idx, sizeof(ctls[idx]), 0, &ctls[idx]); - ++ret; + if( force >= 0 ) { + ctls[idx] = val; + ++ret; + } + if( force ) + update_control(idx, sizeof(val), 0, &val); } return ret; } @@ -328,10 +332,14 @@ int PluginLV2ChildUI::child_iteration(int64_t usec) float *vals = (float *)child_data; update_lv2_input(vals, 1); break; } - case LV2_UPDATE: { + case LV2_CONFIG: { float *vals = (float *)child_data; update_lv2_input(vals, 0); break; } + case LV2_UPDATE: { + float *vals = (float *)child_data; + update_lv2_input(vals, -1); + break; } case LV2_SHOW: { start_gui(); break; }