Sunday, 2017-02-26

*** badosu has quit IRC01:00
*** rncbc has quit IRC01:12
*** Yruama_Lairba has quit IRC03:17
*** gk-1wm-[]`_^{} has joined #lv204:44
*** gk-1wm-[]`_^{} has quit IRC04:45
*** gk--1wm-[]`_^{ has joined #lv204:49
*** gk--1wm-[]`_^{ has left #lv204:49
*** edogawa has joined #lv209:05
* drobilla is well on the path to blowing an entire day trying to make qt5 in gtk2 work without crashing constantly09:23
drobillargareus: I fucking knew it :P09:23
rgareusdrobilla: get an ardour nightly. it works just fine09:29
drobillaCrashes jalv.gtk in pthread_mutex_lock on stretch virtually every time09:34
rgareushmm, I didn't try jalv09:36
rgareusdrobilla: did you try the other patch, not falktx' but the one in your bug-tracker?09:37
rgareusdrobilla:  http://dev.drobilla.net/ticket/114309:37
drobillaI have a cleaned up hybrid of both, I've tried both realize() strategies and both have the same problem09:37
drobillaBut my experiments just finished so I'm probably just going to push the piece of shit as is and let someone else deal with it, or not09:41
*** trebmuh has joined #lv209:44
drobillaCalling XInitThreads() before anything Gtk fixes it09:44
drobillaHow to wrap that up properly I don't know, suil has no place for such a concept09:45
drobillaOther projects have seen similar issues: https://bugs.freedesktop.org/show_bug.cgi?id=437309:50
*** rncbc has joined #lv209:53
drobillaPango/cairo thing, I guess... though I see synthv1 has a thread in there somewhere which could be related09:57
rgareuscurious, I wonder why it works in ardour. I don't think there's a dedicated call to XInitThreads09:58
drobillaNope, just grepped09:58
rgareusbut ardour does call Glib::thread_init and a few similar gtk inits09:58
rgareusPango/cairo that may be Glib09:59
drobillaTried the C equivalent (which is deprecated), nope09:59
drobillaFucking graphics people need to just stop using threads if you ask me :D10:00
drobillaWhich is a bit weird since you'd think gwhatever_thread_init would call XInitThreds10:04
drobillaBut nope, XInitThreads in the same spot before g* fixes it, ganythingthreadey does not10:05
drobillaBuilding Ardour, we'll see if it's a platform thing10:05
drobillaHuh.  Nope.  There is no call to XInitThreads anywhere in the Gtk code10:20
drobillaor cairo10:22
drobillaor pango10:23
drobillabrilliant.10:23
drobillargareus: jalv.gtkmm works, so that's how ardour gets out of it10:24
rgareusand jalv.gtk still has issues if there's no XInitThreads ?10:28
drobillargareus: Yep.  Call XInitThreads first, or boom10:29
drobilla(Yet gtkmm has no direct call to it either, so what it's doing I don't know)10:29
drobillaAnyone know a simple plugin I can build against qt5?10:38
rncbcdrobilla: what's wrong with synthv1? sorry, didn't catch earlier conversion10:39
rncbcdrobilla: conversation*10:40
drobillarncbc: I notice it has a thread, anyway10:41
drobillarncbc: and I'm in Qt/Gtk/thread hell10:41
rncbcdrobilla: yes, but the v1 thread(s) do not interect with the Qt5Gui/Widgets layer10:44
rncbcinteract*10:44
drobillaI figured as much10:44
drobillaugh, fuck it.  I guess I put a bunch of ugly #ifdef X11 bullshit in Jalv itself, which will probably break the build on who knows what weird subset of systems, and deal with all the reports from other authors who didn't figure the magic trick out10:45
* drobilla is so incredibly done with g* at this point10:45
drobillaThough it appears there's at least 2 threads in Qt itself aside from synthv1's one10:47
rncbcdrobilla: on the synthv1_lv2 form there should be only the main thread (on host's context) and one worker thread; the jack standalone has one extra for alsa-midi input.10:50
drobillahttp://pastebin.com/pHpCfYf710:52
drobillaEarlier creation of qApp I imagine might fix it, that part of this is slightly insane10:53
rncbcdrobilla: yes, you probably right , looks like Thread 7 is a Qt5's extra thread :/10:57
drobillaWhat seems like the proper solution for this is a suil init function that must be called very early in the app that does <whatever platform crap necessary to allow the available wrappers to work>10:58
drobillaDownside being to avoid a hard library dep, this thing needs to load all the present modules and call some new entry point10:58
drobillaWhich will bring all the toolkit libs into the process10:58
drobillargareus: I was wrong, gtkmm is not immune, it just works more often10:59
drobilla(Which I imagine means this will crash in ardour sometimes, too, but haven't seen it yet)11:00
rncbcdrobilla: which wrapper are you testing with synthv1? additionally to lv2ui:Qt5UI, you probably know synthv1 also presents withshow/idle interface and also the infamous lv2_external_ui ...11:01
drobillarncbc: A suil qt5_in_x11 like falktx's and fundamental's11:02
rncbcdrobilla: aha that's new to me :)11:03
drobilla(suil still needs fallback support for show/hide, and jalv does not support external ui crap)11:04
rncbcdrobilla: i guess having show/hide support in suil is a bit complicated :) maybe it's jalv that should fallback to it if available...11:13
drobillarncbc: Why?11:15
drobillaThe API would need some extension to make sense of this, but otherwise11:15
drobillaI am not into copying a ton of nearly identical boilerplate across a bunch of hosts11:16
drobillaThis would also allow hosts that don't care about embedding at all to have a similarly easy show() hide() sort of interface even for plugins which provide widgets11:18
drobillaWhich is the sane thing to do anyway, plugins implementing weird shit to isolate their toolkits or whatever was always a mistake11:18
drobillashow() hide() is just less of a horrifying mistake than external_ui :)11:18
rncbcdrobilla: i think because show/hide is not suil's responsibility? when you call suil_instantiate() is it acceptable to get something that isn't what you're asking for? eg. you ask for a qt5 wrapper under x11 and you get a show/hide contraption?11:21
drobillaWhich is why the API would need some changes for that11:23
drobillaThe "externalization" of a widget that can't be embedded in the process at all, if necessary, is clearly the job of a library, and suil is that library11:24
drobillaPlugins implementing a bunch of crap to work around this is a horrible situation11:25
rncbcdrobilla: what plugins? my concern is about hosts :)11:25
drobillaYour concern is clearly not avoiding pages and pages of #ifdef'd nightmare ;)11:26
drobillaThe point is hosts that just want a UI to show up as a window and go away don't want to deal with any of this crap whatsoever11:27
drobillasuil_show_ui() suil_hide_ui() or whatever that just works regardless of type would be nice11:28
rncbcdrobilla: you mean that plugin's show/idle interfaces won't be necessary as fallback then11:35
drobillarncbc: Yes11:35
drobilla(Though this interface would still be useful for things that don't expose any kind of usable widget whatsoever)11:36
rncbcdrobilla: because that's the extra crap that plugins have to implement as an extra horrible situation ok. got that.11:36
drobillarncbc: Exactly11:36
*** oofus has quit IRC11:57
*** oofus has joined #lv212:04
rgareusdrobilla: IMHO the only sane way is to *only* allow native UIs.  X11, wayland, quartz/cocoa, HWND.   screw toolkits.12:34
rgareuswell, it's still insane. plugins, you know.  but saner than wrapping gtk/Qt/whatnot explicitly.12:36
drobillargareus: Well, define "allow"...12:38
rgareusignore others.  that's probably the only way to finally get people off incompatible toolkits.12:39
drobillargareus: But, yes, that is the right way, clearly12:39
drobilla'course that doesn't solve the whole problem with people actually needing toolkits to do stuff12:39
rgareusJUCE gets most things right.12:40
rgareusand what other toolkits are there suitable for audio-plugins?12:40
drobilla... well, yeah, exactly12:40
rgareusin the commercial world, pretty much all vendors don't use toolkits. or some minimal custom tk12:40
rgareusor they use JUCE :)12:40
*** deva has joined #lv212:42
drobillaMeh, I'm not winning anything by just deleting wrapper code that works at least on a given platform12:42
drobillaThe main issue spec-wise with portable/native UIs at the moment is needing to describe all the damned things separately12:42
drobillaShould be a callback where you pass a type to the UI lib or something12:42
drobillaI dunno, I might just put pugl in lv2 or something12:43
drobillaPersonally I'm a lot more interested in attempting to clean up LV2 in general12:46
drobillaNone of this really matters because the mess that it is currently will never take off anyway.12:46
drobilla... Though having a toolkit to port Ingen and friends would sure be nice for my own stuff :)12:47
* drobilla is not terribly keen on Jule's Kitchen Sink12:47
* rgareus neither12:57
rgareusit'd be nice if it was more modular.12:57
*** Yruama_Lairba has joined #lv213:01
drobillaYeah13:09
*** oofus has quit IRC13:33
*** oofus has joined #lv213:37
rgareusdrobilla: lilv's 4135af320  sets  LILV_VERSION       = '0.24.3  but there's no git-tag13:46
drobillargareus: and?13:49
drobillaIt's not a release, there isn't supposed to be a git tag13:49
rgareusjust a mismatch between   git describe and a ./waf dist13:51
drobillaI don't see what I could do about this, other than tag every single development version bump, which is ridiculous13:52
drobillaWell, if anyone was wondering how many URIs there are in LV2: https://paste.debian.net/916920/14:37
rgareus38114:38
drobillaAlas a few clash if you totally flatten the namespace14:39
rgareusfor example?14:39
rgareusand how many of those are deprecated?14:40
drobillapatch:Error, log:Error14:40
drobilla(Not sure a totally flat namespace would be best even in an ideal world anyway)14:40
drobilla(I am thinking about this staticization thing if that's not obvious)14:41
drobillaThe tricky thing with this static thing, without backing ourselves into a corner where n are reserved for the spec, is that the plugin and host would need to negotiate their LV2 versions in a sense14:56
drobillaor their "maximum static URID" anyway14:56
rgareusspeaking of static init.  LV2 is the only plugin standard where re-scan needs a restart of Ardour (due to static lv2 world)14:58
drobillaUnfortunate14:59
rgareusand if plugins are loaded, we can't drop and re-init the world to refresh the list either.14:59
drobillaI don't remember why that's static.  Probably because there isn't a good "why"14:59
rgareusprobably because of active plugins?14:59
rgareusotherwise we'd need a world per plugin (mapped URIs and such)15:00
drobillaThough one might ask why you want to drop the world to rescan in the first place, I suppose15:00
rgareushmm, maybe it was because back in the day, unloading bundles wasn't possible  serd/sord limitation or something?15:00
rgareusdrobilla: best ask the guy who wrote the code :)15:01
drobillargareus: Well, my knee-jerk is that something as dramatic as dropping the entire world is just causing you way more problems anyway15:02
drobillas/is/would/15:03
*** NickSB has quit IRC16:12
*** NickSB has joined #lv216:21
*** JaVelDa has quit IRC16:54
*** JaVelDa has joined #lv216:57
*** drobilla` has joined #lv217:51
*** drobilla has quit IRC17:52
*** drobilla` has quit IRC18:34
*** deva has quit IRC20:58
*** Spark[01] has joined #lv220:58
*** Spark[01] has quit IRC21:03
*** rncbc has quit IRC21:11
*** rncbc has joined #lv221:22
*** Spark[01] has joined #lv222:59
Spark[01]hey, does LADSPA support midi? I know this is a chat for LV2 but i've asked LADSPA questions here before and nobody minded so.. :P23:01
rgareusLADSPA does not support MIDI23:38
rgareusnor custom GUIs23:38
rgareusLV2 is LADSPA Version 2, so you're not far off23:39
Spark[01]Yeah, the only reason I don't use LV2 is because it's not as widely supported23:48
Spark[01]I should check if REAPER supports it23:48
Spark[01]Aw, guess not. Oh well23:51
rgareusspeaking of which   http://forum.cockos.com/showthread.php?t=85588&page=2223:51
rgareus"For people with crashing u-he, try adding #include <X11/Xlib.h> to the beginning of swell-wnd-generic.cpp, and XInitThreads(); to SWELL_initargs()."23:51
rgareusdrobilla: ^^23:51
rgareusaah well, he's not around23:51

Generated by irclog2html.py 2.13.0 by Marius Gedminas - find it at mg.pov.lt!