*** badosu has quit IRC | 01:00 | |
*** rncbc has quit IRC | 01:12 | |
*** Yruama_Lairba has quit IRC | 03:17 | |
*** gk-1wm-[]`_^{} has joined #lv2 | 04:44 | |
*** gk-1wm-[]`_^{} has quit IRC | 04:45 | |
*** gk--1wm-[]`_^{ has joined #lv2 | 04:49 | |
*** gk--1wm-[]`_^{ has left #lv2 | 04:49 | |
*** edogawa has joined #lv2 | 09:05 | |
* drobilla is well on the path to blowing an entire day trying to make qt5 in gtk2 work without crashing constantly | 09:23 | |
drobilla | rgareus: I fucking knew it :P | 09:23 |
---|---|---|
rgareus | drobilla: get an ardour nightly. it works just fine | 09:29 |
drobilla | Crashes jalv.gtk in pthread_mutex_lock on stretch virtually every time | 09:34 |
rgareus | hmm, I didn't try jalv | 09:36 |
rgareus | drobilla: did you try the other patch, not falktx' but the one in your bug-tracker? | 09:37 |
rgareus | drobilla: http://dev.drobilla.net/ticket/1143 | 09:37 |
drobilla | I have a cleaned up hybrid of both, I've tried both realize() strategies and both have the same problem | 09:37 |
drobilla | But 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 not | 09:41 |
*** trebmuh has joined #lv2 | 09:44 | |
drobilla | Calling XInitThreads() before anything Gtk fixes it | 09:44 |
drobilla | How to wrap that up properly I don't know, suil has no place for such a concept | 09:45 |
drobilla | Other projects have seen similar issues: https://bugs.freedesktop.org/show_bug.cgi?id=4373 | 09:50 |
*** rncbc has joined #lv2 | 09:53 | |
drobilla | Pango/cairo thing, I guess... though I see synthv1 has a thread in there somewhere which could be related | 09:57 |
rgareus | curious, I wonder why it works in ardour. I don't think there's a dedicated call to XInitThreads | 09:58 |
drobilla | Nope, just grepped | 09:58 |
rgareus | but ardour does call Glib::thread_init and a few similar gtk inits | 09:58 |
rgareus | Pango/cairo that may be Glib | 09:59 |
drobilla | Tried the C equivalent (which is deprecated), nope | 09:59 |
drobilla | Fucking graphics people need to just stop using threads if you ask me :D | 10:00 |
drobilla | Which is a bit weird since you'd think gwhatever_thread_init would call XInitThreds | 10:04 |
drobilla | But nope, XInitThreads in the same spot before g* fixes it, ganythingthreadey does not | 10:05 |
drobilla | Building Ardour, we'll see if it's a platform thing | 10:05 |
drobilla | Huh. Nope. There is no call to XInitThreads anywhere in the Gtk code | 10:20 |
drobilla | or cairo | 10:22 |
drobilla | or pango | 10:23 |
drobilla | brilliant. | 10:23 |
drobilla | rgareus: jalv.gtkmm works, so that's how ardour gets out of it | 10:24 |
rgareus | and jalv.gtk still has issues if there's no XInitThreads ? | 10:28 |
drobilla | rgareus: Yep. Call XInitThreads first, or boom | 10:29 |
drobilla | (Yet gtkmm has no direct call to it either, so what it's doing I don't know) | 10:29 |
drobilla | Anyone know a simple plugin I can build against qt5? | 10:38 |
rncbc | drobilla: what's wrong with synthv1? sorry, didn't catch earlier conversion | 10:39 |
rncbc | drobilla: conversation* | 10:40 |
drobilla | rncbc: I notice it has a thread, anyway | 10:41 |
drobilla | rncbc: and I'm in Qt/Gtk/thread hell | 10:41 |
rncbc | drobilla: yes, but the v1 thread(s) do not interect with the Qt5Gui/Widgets layer | 10:44 |
rncbc | interact* | 10:44 |
drobilla | I figured as much | 10:44 |
drobilla | ugh, 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 out | 10:45 |
* drobilla is so incredibly done with g* at this point | 10:45 | |
drobilla | Though it appears there's at least 2 threads in Qt itself aside from synthv1's one | 10:47 |
rncbc | drobilla: 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 |
drobilla | http://pastebin.com/pHpCfYf7 | 10:52 |
drobilla | Earlier creation of qApp I imagine might fix it, that part of this is slightly insane | 10:53 |
rncbc | drobilla: yes, you probably right , looks like Thread 7 is a Qt5's extra thread :/ | 10:57 |
drobilla | What 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 |
drobilla | Downside being to avoid a hard library dep, this thing needs to load all the present modules and call some new entry point | 10:58 |
drobilla | Which will bring all the toolkit libs into the process | 10:58 |
drobilla | rgareus: I was wrong, gtkmm is not immune, it just works more often | 10:59 |
drobilla | (Which I imagine means this will crash in ardour sometimes, too, but haven't seen it yet) | 11:00 |
rncbc | drobilla: 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 |
drobilla | rncbc: A suil qt5_in_x11 like falktx's and fundamental's | 11:02 |
rncbc | drobilla: 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 |
rncbc | drobilla: 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 |
drobilla | rncbc: Why? | 11:15 |
drobilla | The API would need some extension to make sense of this, but otherwise | 11:15 |
drobilla | I am not into copying a ton of nearly identical boilerplate across a bunch of hosts | 11:16 |
drobilla | This 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 widgets | 11:18 |
drobilla | Which is the sane thing to do anyway, plugins implementing weird shit to isolate their toolkits or whatever was always a mistake | 11:18 |
drobilla | show() hide() is just less of a horrifying mistake than external_ui :) | 11:18 |
rncbc | drobilla: 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 |
drobilla | Which is why the API would need some changes for that | 11:23 |
drobilla | The "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 library | 11:24 |
drobilla | Plugins implementing a bunch of crap to work around this is a horrible situation | 11:25 |
rncbc | drobilla: what plugins? my concern is about hosts :) | 11:25 |
drobilla | Your concern is clearly not avoiding pages and pages of #ifdef'd nightmare ;) | 11:26 |
drobilla | The 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 whatsoever | 11:27 |
drobilla | suil_show_ui() suil_hide_ui() or whatever that just works regardless of type would be nice | 11:28 |
rncbc | drobilla: you mean that plugin's show/idle interfaces won't be necessary as fallback then | 11:35 |
drobilla | rncbc: Yes | 11:35 |
drobilla | (Though this interface would still be useful for things that don't expose any kind of usable widget whatsoever) | 11:36 |
rncbc | drobilla: because that's the extra crap that plugins have to implement as an extra horrible situation ok. got that. | 11:36 |
drobilla | rncbc: Exactly | 11:36 |
*** oofus has quit IRC | 11:57 | |
*** oofus has joined #lv2 | 12:04 | |
rgareus | drobilla: IMHO the only sane way is to *only* allow native UIs. X11, wayland, quartz/cocoa, HWND. screw toolkits. | 12:34 |
rgareus | well, it's still insane. plugins, you know. but saner than wrapping gtk/Qt/whatnot explicitly. | 12:36 |
drobilla | rgareus: Well, define "allow"... | 12:38 |
rgareus | ignore others. that's probably the only way to finally get people off incompatible toolkits. | 12:39 |
drobilla | rgareus: But, yes, that is the right way, clearly | 12:39 |
drobilla | 'course that doesn't solve the whole problem with people actually needing toolkits to do stuff | 12:39 |
rgareus | JUCE gets most things right. | 12:40 |
rgareus | and what other toolkits are there suitable for audio-plugins? | 12:40 |
drobilla | ... well, yeah, exactly | 12:40 |
rgareus | in the commercial world, pretty much all vendors don't use toolkits. or some minimal custom tk | 12:40 |
rgareus | or they use JUCE :) | 12:40 |
*** deva has joined #lv2 | 12:42 | |
drobilla | Meh, I'm not winning anything by just deleting wrapper code that works at least on a given platform | 12:42 |
drobilla | The main issue spec-wise with portable/native UIs at the moment is needing to describe all the damned things separately | 12:42 |
drobilla | Should be a callback where you pass a type to the UI lib or something | 12:42 |
drobilla | I dunno, I might just put pugl in lv2 or something | 12:43 |
drobilla | Personally I'm a lot more interested in attempting to clean up LV2 in general | 12:46 |
drobilla | None 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 Sink | 12:47 | |
* rgareus neither | 12:57 | |
rgareus | it'd be nice if it was more modular. | 12:57 |
*** Yruama_Lairba has joined #lv2 | 13:01 | |
drobilla | Yeah | 13:09 |
*** oofus has quit IRC | 13:33 | |
*** oofus has joined #lv2 | 13:37 | |
rgareus | drobilla: lilv's 4135af320 sets LILV_VERSION = '0.24.3 but there's no git-tag | 13:46 |
drobilla | rgareus: and? | 13:49 |
drobilla | It's not a release, there isn't supposed to be a git tag | 13:49 |
rgareus | just a mismatch between git describe and a ./waf dist | 13:51 |
drobilla | I don't see what I could do about this, other than tag every single development version bump, which is ridiculous | 13:52 |
drobilla | Well, if anyone was wondering how many URIs there are in LV2: https://paste.debian.net/916920/ | 14:37 |
rgareus | 381 | 14:38 |
drobilla | Alas a few clash if you totally flatten the namespace | 14:39 |
rgareus | for example? | 14:39 |
rgareus | and how many of those are deprecated? | 14:40 |
drobilla | patch:Error, log:Error | 14: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 |
drobilla | The 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 sense | 14:56 |
drobilla | or their "maximum static URID" anyway | 14:56 |
rgareus | speaking of static init. LV2 is the only plugin standard where re-scan needs a restart of Ardour (due to static lv2 world) | 14:58 |
drobilla | Unfortunate | 14:59 |
rgareus | and if plugins are loaded, we can't drop and re-init the world to refresh the list either. | 14:59 |
drobilla | I don't remember why that's static. Probably because there isn't a good "why" | 14:59 |
rgareus | probably because of active plugins? | 14:59 |
rgareus | otherwise we'd need a world per plugin (mapped URIs and such) | 15:00 |
drobilla | Though one might ask why you want to drop the world to rescan in the first place, I suppose | 15:00 |
rgareus | hmm, maybe it was because back in the day, unloading bundles wasn't possible serd/sord limitation or something? | 15:00 |
rgareus | drobilla: best ask the guy who wrote the code :) | 15:01 |
drobilla | rgareus: Well, my knee-jerk is that something as dramatic as dropping the entire world is just causing you way more problems anyway | 15:02 |
drobilla | s/is/would/ | 15:03 |
*** NickSB has quit IRC | 16:12 | |
*** NickSB has joined #lv2 | 16:21 | |
*** JaVelDa has quit IRC | 16:54 | |
*** JaVelDa has joined #lv2 | 16:57 | |
*** drobilla` has joined #lv2 | 17:51 | |
*** drobilla has quit IRC | 17:52 | |
*** drobilla` has quit IRC | 18:34 | |
*** deva has quit IRC | 20:58 | |
*** Spark[01] has joined #lv2 | 20:58 | |
*** Spark[01] has quit IRC | 21:03 | |
*** rncbc has quit IRC | 21:11 | |
*** rncbc has joined #lv2 | 21:22 | |
*** Spark[01] has joined #lv2 | 22: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.. :P | 23:01 |
rgareus | LADSPA does not support MIDI | 23:38 |
rgareus | nor custom GUIs | 23:38 |
rgareus | LV2 is LADSPA Version 2, so you're not far off | 23:39 |
Spark[01] | Yeah, the only reason I don't use LV2 is because it's not as widely supported | 23:48 |
Spark[01] | I should check if REAPER supports it | 23:48 |
Spark[01] | Aw, guess not. Oh well | 23:51 |
rgareus | speaking of which http://forum.cockos.com/showthread.php?t=85588&page=22 | 23: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 |
rgareus | drobilla: ^^ | 23:51 |
rgareus | aah well, he's not around | 23:51 |
Generated by irclog2html.py 2.13.0 by Marius Gedminas - find it at mg.pov.lt!