Browse Source

modgui cleanup event

Signed-off-by: falkTX <falktx@falktx.com>
pull/408/head
falkTX 2 years ago
parent
commit
67ce1ea28e
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
2 changed files with 17 additions and 5 deletions
  1. +9
    -2
      distrho/src/DistrhoPluginLV2export.cpp
  2. +8
    -3
      distrho/src/DistrhoUILV2.cpp

+ 9
- 2
distrho/src/DistrhoPluginLV2export.cpp View File

@@ -1346,11 +1346,11 @@ void lv2_generate_ttl(const char* const basename)
jsString += "if(err.length!==0){e.icon.find('.canvas_wrapper').html('<h2>'+err.join('<br>')+'</h2>');return;}\n\n";
jsString += "var s=document.createElement('script');\n";
jsString += "s.setAttribute('async',true);\n";
jsString += "s.setAttribute('src','/resources/module.js?uri='+escape(\"" DISTRHO_PLUGIN_URI "\")+'&r='+VERSION/*f.get_custom_resource_filename('module.js')*/);\n";
jsString += "s.setAttribute('src',e.api_version>=3?f.get_custom_resource_filename('module.js'):('/resources/module.js?uri='+escape(\"" DISTRHO_PLUGIN_URI "\")+'&r='+VERSION));\n";
jsString += "s.setAttribute('type','text/javascript');\n";
jsString += "s.onload=function(){\n";
jsString += " Module_" DISTRHO_PLUGIN_MODGUI_CLASS_NAME "({\n";
jsString += " locateFile: function(p,_){return '/resources/'+p+'?uri='+escape(\"" DISTRHO_PLUGIN_URI "\")+'&r='+VERSION/*return f.get_custom_resource_filename(p);*/},\n";
jsString += " locateFile: function(p,_){return e.api_version>=3?f.get_custom_resource_filename(p):('/resources/'+p+'?uri='+escape(\"" DISTRHO_PLUGIN_URI "\")+'&r='+VERSION)},\n";
jsString += " postRun:function(m){\n";
jsString += " var cn=e.icon.attr('mod-instance').replaceAll('/','_');\n";
jsString += " var cnl=m.lengthBytesUTF8(cn) + 1;\n";
@@ -1395,6 +1395,13 @@ void lv2_generate_ttl(const char* const basename)
jsString += " if(e.symbol===':bypass')return;\n";
jsString += " if(e.uri){e.data.p.p[e.uri]=e.value;}else{e.data.p.c[e.symbol]=e.value;}\n";
jsString += "}\n\n";
jsString += "}else if(e.type==='end'){\n";
jsString += " if(e.data.h && e.data.m){\n";
jsString += " var h = e.data.h;\n";
jsString += " var m = e.data.m;\n";
jsString += " e.data.h = e.data.m = null;\n";
jsString += " m._modgui_cleanup(h);\n";
jsString += "}\n\n";
jsString += "}\n}\n";
jsFile << jsString;
jsFile.close();


+ 8
- 3
distrho/src/DistrhoUILV2.cpp View File

@@ -735,6 +735,7 @@ typedef void (*_custom_patch_set)(const char* uri, const char* value);

struct ModguiHandle {
LV2UI_Handle handle;
long loop_id;
_custom_param_set param_set;
_custom_patch_set patch_set;
};
@@ -858,6 +859,7 @@ LV2UI_Handle modgui_init(const char* const className, _custom_param_set param_se

ModguiHandle* const mhandle = new ModguiHandle;
mhandle->handle = nullptr;
mhandle->loop_id = 0;
mhandle->param_set = param_set;
mhandle->patch_set = patch_set;

@@ -872,7 +874,7 @@ LV2UI_Handle modgui_init(const char* const className, _custom_param_set param_se
mhandle->handle = handle;

static_cast<UiLv2*>(handle)->lv2ui_show();
emscripten_set_interval(app_idle, 1000.0/60, handle);
mhandle->loop_id = emscripten_set_interval(app_idle, 1000.0/60, handle);

return mhandle;
}
@@ -911,8 +913,11 @@ DISTRHO_PLUGIN_EXPORT
void modgui_cleanup(const LV2UI_Handle handle)
{
d_stdout("cleanup");
lv2ui_cleanup(static_cast<ModguiHandle*>(handle)->handle);
delete static_cast<ModguiHandle*>(handle);
ModguiHandle* const mhandle = static_cast<ModguiHandle*>(handle);
if (mhandle->loop_id != 0)
emscripten_clear_interval(mhandle->loop_id);
lv2ui_cleanup(mhandle->handle);
delete mhandle;
}
#endif



Loading…
Cancel
Save