Saturday, 2014-02-01

drobillaLAbot: Thanks for that entirely useless piece of noise00:00
LAbotdrobilla: Error: "Thanks" is not a valid command.00:00
drobillaUngrateful thing, isn't it?00:01
rgareuslol00:01
* rgareus -> compiling00:02
rgareusLAbot: echo "thank you"00:02
LAbotthank you00:02
drobillaThat's better!00:02
rgareusmmh that shoud have been00:02
rgareusLAbot: echo y/w00:02
LAboty/w00:02
AnchakorLAbot: echo $*00:03
LAbot$*00:03
rgareusdrobilla: it just keeps reminding you that you should choose better titles for your site00:03
drobillaChangeset 5326 seems like a pretty suitable title for changeset 5326 to me :)00:04
drobillaI guess while I'm cleaning up the comms I really should disable responses the UI is not interested in00:07
rgareusdrobilla: mmh. not fixed.00:10
rgareusgitk00:11
rgareusheh. well, I am at 5326 now.00:12
drobillaI see knobs not at zero...00:12
rgareusdrobilla: the X, Y ones?00:12
rgareusdrobilla: and gain?00:13
drobillaThose are at 000:13
rgareusdrobilla:  thet means - still b0rked00:13
drobillaOkay, still no response.00:14
drobillaI said any knob :P00:14
rgareusdrobilla: I could work-aroud by actually using the same defaults in the GUI..00:14
rgareusdrobilla:but that won't solve the problem. modify state, close GUI, re-open GUI00:14
rgareusdrobilla: when it's broken it looks like this [by default] https://f.cloud.github.com/assets/1472461/2010688/0c239b34-8771-11e3-8a8a-57d75c7e2baa.png00:15
rgareusand when it works.. it comes up like this  http://robin.linuxaudio.org/tmp/sisco_gtk_jalv.png00:19
drobillaI wonder why it's so fugly in ingen00:20
rgareusdrobilla: gtk style.00:20
drobillaYes, but... why?00:20
drobillaWhatever you're doing should override that00:20
rgareusdrobilla: I use ardour's theme00:20
rgareusdrobilla: GTK2_RC_FILES=/PATH/TO/ardour/build/gtk2_ardour/ardour3_ui_dark.rc jalv.gtk ...00:21
drobillargareus: Can't you include that in your UI somehow?00:22
rgareusdrobilla: I could hardcode the colours00:22
drobillaWidgets that depend ona particular style, but not actually setting that style, is not so good...00:22
drobillargareus: You should be able to literally set that style from the rc00:22
rgareusdrobilla: the widgets don't depend on any color. they just ask GTK for it00:22
drobillaI believe calf does this00:23
drobillaI know Gtk has API for it00:23
drobillargareus: In my jalv some are dark, some are (system) light00:23
rgareusdrobilla: robtk's gtk version uses GtkStyle  and asks for style->fg[] style->bg[]  with various states00:24
rgareusdrobilla: e.g. GTK_STATE_NORMAL, GTK_STATE_ACTIVE00:24
drobillaIt's working for some, anyway00:25
drobillaI guss I can make a screenshot, but if you have a light theme, it's pretty mangled00:25
rgareusdrobilla: I may have mixed up some of those..  or rather ardour may have because it looks nice w/ ardour's theme :)00:25
drobillabuttons are clearly dark00:25
drobillayes, ardour theme00:25
drobillaXY knobs and buttons are straight out of ardour00:26
drobillaX1 and X2 knobs follow mine00:26
rgareusdrobilla: well, I could really just hardcode the colors.00:28
drobillaor just include your gtk theme and set the style00:28
rgareusdrobilla: that's what the openGL variant does anyway (because it knows nothing og gtk to query it)00:28
drobillaI'm pretty sure there's a "load this .rc for this widget's style" function in Gtk00:28
rgareusdrobilla: right, but then I need a path to another file.. and I hate that00:29
drobillaSure, in effect the same thing anyway00:29
drobillaA static one in your own bundle, trivial and not problematic00:29
rgareusdrobilla: C:\Program Files\LV2\gtksucks\00:29
drobillaBut since you have not-gtk versions too, whatever00:29
drobillargareus: You'd have to include it, of course00:29
drobillargareus: Aha.  So, ingen is essentially "monitoring" the notification port00:30
drobillargareus: Including choosing when an appropriately long enough time has passed for an update to be needed00:30
drobillargareus: Which is all well and good for peaks, but not when you want reliable transfer of all events in a buffer00:30
rgareusdrobilla: an other approach is: "a plugin must not rely on a host to deliver messages". In which case I could implement a rather simple workaround:00:33
rgareusif the GUI receives some other message, but has not received state -> re-request the state00:33
rgareus(repeat until it receives the state)00:34
drobillayeah, but that's making plugins deal with unreliable protocol stuff00:34
drobillawhich is not fun00:34
drobillabest to just not go there for as long as we can, preferably forever00:34
rgareusdrobilla: indeed.00:34
drobillaeven in ingen I just abandoned it.  TCP or bust.00:34
rgareusdrobilla: besides, other LV2 hosts manage just fine.00:34
drobillaother LV2 hosts can't run their UIs on the other side of the planet, but yes, it should work anway00:35
drobillareliable message stream doesn't belong at the application layer anyway00:35
rgareus--- except for mixbus, it does not have te port-resize extension and just segfaults if a plugin tries to write more than ~1K.. (old A2 based LV2, old lilv,..)00:36
rgareusdrobilla: I think falktx's carla can run a custom LV2 GUI in the browser using webGL.00:37
rgareusdrobilla: I never tried it myself, but he posted screenshots00:37
rgareusanyway...00:38
drobillaprobably questionable for me to ever try to backport that stuff to A2 in the first place00:38
rgareusdrobilla: don't.00:38
drobillahow the heck is that possible?00:39
rgareusdrobilla: let's move forward.. to Ardour4 :)00:39
drobillargareus: I mean, long ago, which is why it's in mixbus00:39
drobillaWell, at the time, Ardour 2 was the only released ardour, so I wanted eg-sample to work in it00:39
rgareusdrobilla: 'how the heck is that possible?' -- was that regarding falktx's webGL stuff?00:40
drobillaLately my role in LV2 is more "guy who forcefully drags you bastards into the future" anyway00:40
drobillargareus: yeah00:40
rgareusdrobilla: you won't like the answer to that question.00:40
drobillaI mean, taking an existing anything and making it show up as GL in the browser00:41
drobillaRegardless of the piece of shit extension that hooks it into LV2 world00:41
rgareusdrobilla: I don't know the exact details, but I think he hacked pugl somehow.00:42
drobillabizarre.00:43
rgareusdrobilla: and it's currently just a proof-of-concept with one of his plugins00:43
drobillaThough if you mean writing a UI specifically for that, sure.00:43
drobillaYou can write a UI specifically in just about anything00:43
rgareusdrobilla: he writes a 'meta-ui'  that is then compiled into X other GUIs.00:43
drobillaoh.  that's less interesting, then.00:44
rgareusand X+Y other plugin formats00:44
drobillaI don't really actively pay attention to Carla stuff.  Never ran it.00:44
* drobilla is more interested in plugins than hosts00:45
rgareuscreate LADSPA|Juced|VST|LV2|... **  GTK|QT|Cocoa|GL|..   all from one soure00:45
rgareussource, even00:45
drobillaI would sure like a solution to the gigantic fragmentation problem at the LV2 UI interface level, though00:45
drobillaThat part I am slightly familiar with, but it's quite the monstrosity, and hyper VSTey00:46
* rgareus fires up gdb again.00:46
drobillaHrm, well, I have the foreach firing, but there seems to be nothing in the notify buffer...00:48
drobillargareus: I seem to be finding many portNotifications for this port for this plugin...00:52
drobillaprobably not a problem, but bunch of traffic.  odd.00:52
drobillaand indeed there is00:53
drobillaone for each plugin, which I'm not checking00:53
drobillathat sure gets verbose00:54
drobillakind of pointless since the symbol has to be identical anyway00:54
drobillabut anyway, you are right and ingen is wrong as far as the spec goes00:55
drobillaThis could be simplified, though00:59
drobillaMaybe to keep in mind when I make the upcoming "We need to have a talk about UIs" ML thread00:59
drobillargareus: So with r5328, I made it so monitoring always scans the port in this case01:05
drobillargareus: PortImpl.cpp:41001:05
drobillargareus: But it just seems to be empty01:05
drobillaI don't know if it's being cleared before this point or if the plugin isn't writing or what01:05
rgareusdrobilla: it's odd. I'm breaking at NodeModule::port_activity()01:09
drobillaShould be called right away, LV2Block::process() runs the instance01:09
drobillargareus: That's in the stratosphere.  The engine isn't sending anything whatsoever.01:10
drobillaLike, in the audio thread.01:10
drobilla(which will then go to a ringbuffer which is drained eventually, sent through the engine queue, which will arrive at sigc thing, which, etc. etc.)01:10
drobillaif you stick a print in the above mentioned LV2_ATOM_SEQUENCE_FOREACH it will never print01:11
drobillaIf that fired, it should work01:11
drobillaNothing to do with UI01:11
rgareusdrobilla: when is PortImpl::monitor() called?01:12
drobillaLV2Block::process() => BlockImpl::post_process() => OutputPort::post_process() => PortImpl::monitor()01:13
drobillaI can't find a clear anywhere in there, so next step for me anyway would be to stock a print in sisco and ensure it really is writing01:14
drobillamaybe the buffer isn't inited right or something, I dunnos01:14
drobillargareus: I think I've fixed all big scale stuff wrong with ingen now, just this little problem of the buffer seemingly being empty in the audio thread01:15
* rgareus added a few printf()s to ./ingen/src/server/PortImpl.cpp -- top of PortImpl::monitor() and in case PortType::ATOM:... 01:15
* rgareus -> compiling01:15
drobillaRight.  Which indeed was totally broken before01:17
rgareusdrobilla: PortImpl::monitor is not even called01:17
rgareusdrobilla: mmh. wait. I only check after    if (!context.must_notify(this))01:18
drobillargareus: is for me.  once you create the UI that is01:18
drobillaIf blinkenlights is off and there is no UI, then must_notify will return false, as it should.01:18
rgareusdrobilla: not here.. I open the GUI.  and the GUI sends the mesage to the plugin..01:19
rgareusand I've made sisco.c:229   printf("sisco.lv2: Send settings to UI\n");01:19
rgareuswhich is printed..01:19
drobillabefore that it shoudl subscribe01:19
drobillahm.  something is different now.01:20
rgareusdrobilla: and now the first thing in     PortImpl::monitor()  { printf("PortImpl::monitor\n");01:21
drobillashit, I botched the logic when 'cleaning' it up.  one sec.01:21
rgareusnever is cprinted01:21
rgareusdrobilla: cleanup is another issue.01:21
rgareusdrobilla: the gtk top-level widget is destoyed first, then plugin cleanup is called01:21
drobillargareus: If you put a print at the ver very top of PortImpl::monitor() it's never printed?01:22
rgareusdrobilla: destoying the top-level gtk_destoys() all children -> when the plugin comes around in cleanup()  -> IA__gtk_widget_destroy: assertion `GTK_IS_WIDGET (widget)' failed01:22
* drobilla totally ignores all that01:22
rgareusdrobilla: correct. I put it to the top of PortImpl::monitor() and it's never triggered01:22
drobillabut it's called directly by OutputPort::post_process01:23
rgareusdrobilla: http://pastebin.com/P8MT6Ee0 to be clear01:23
drobillaThat's Impossible™01:24
drobillaHell, doing that will print a bunch of times for /control_in and /control_out before anything is even added01:24
rgareusdrobilla: and the output when running: http://pastebin.com/1NDvZXVq01:25
drobillargareus: well, start at LV2Block::process and work your way down I suppose01:25
drobillaApparently your issue is much deeper than mine01:25
rgareusdrobilla: will do01:25
rgareusdrobilla: uhm. stupid /me01:27
rgareusdrobilla: modifying the file, then calling ./waf from the top-level did not re-build it!01:28
drobillaI figured you weren't actually running the code you thought you were :)01:28
drobillathough....... that's odd01:28
drobillawaf misses system changes, but not local01:28
rgareusdrobilla: if I call ./waf from the ingen dir, it works.01:28
rgareusdrobilla: but I just do a ./waf clean now01:28
drobillahaving both configured at the same time can cause confusion.  suggest one or the other01:29
drobillae.g. build in one, install in the other, which is old, etc.01:29
drobillaI'm getting crazy bizarre missing prints now too01:32
drobillayet the code is definitely being recompiled.01:32
drobilla.. that or I put "YES" instead of "NO" and vice versa01:32
* drobilla is also stupid01:32
drobillaRight, it's as I said before for me, getting to the FOREACH01:33
drobillaeven simpler, size is always 001:34
drobillaif (_monitored) {01:34
drobillastd::cerr << "SEQUENCE MONITOR SIZE: " << seq->atom.size - sizeof(LV2_Atom_Sequence_Body) << std::endl;01:34
rgareusdrobilla: OK. I'm getting regular printf()s now.01:48
rgareusdrobilla: PortImpl::monitor() is only called if the UI is visible01:51
drobillargareus: Correct, and intentional.01:52
drobilla(it will also be called if "Animate Canvas" is enabled)01:52
rgareusdrobilla: but nothing in the FOREACH...01:53
drobilla(actually I don't think that is quite correct, it will be called but must_notify will return false so it will exit immediately)01:53
drobillargareus: yep01:53
rgareusdrobilla: BlockImpl::post_process is called every cycle when the Plugin is added.01:55
rgareusdrobilla: so my guess is, that monitoring is enabled too late01:55
drobillafixed that several commits ago01:56
drobillaunless something really weird is going on01:56
rgareusdrobilla: I'm still at 532601:56
drobillacomment out all the short circuits and it still doesn't work.01:57
* rgareus updated 532801:57
drobillayeah, if I force monitoring to be on all the time, still doesn't work01:59
drobillasize always zero02:00
drobillais that capacity warning of yours enabled by default?02:00
drobillabecause if the size is zero to begin with, that'll do it...02:01
drobillabreak on write in sisco, set a watch point on seq->atom.size, continue?02:02
rgareusdrobilla: but it should print the warning02:03
drobillaregardless, the size is 0 at this point02:08
drobillaand if sisco is indeed writing to the same seq, then it wasn't, then.02:08
rgareusdrobilla: since updating to 5328. I don't see the 'sisco.lv2: Send settings to UI' message any more02:09
rgareusdrobilla: so the plugin never receives the message from the UI02:10
rgareusdrobilla: diff to sisco.lv2: http://pastebin.com/GEtvPt5X02:11
rgareusdrobilla: it does print   "Atom size 8"02:11
rgareuswith jalv I do see    'sisco.lv2: Send settings to UI' \n 'Atom size 280'02:12
rgareuswith ingen neither, only ever 'Atom size 8' now02:12
drobillaYou saw this before in ingen?02:13
rgareusdrobilla: yes02:14
rgareusdrobilla: that was ^^^ http://pastebin.com/1NDvZXVq02:15
drobillasidenote: we seriously should have had an lv2:value02:15
drobillaI guess I could use pset:value in ingen02:15
drobillapreset extension itself should have just been in lv2 core02:15
drobilladefaults should be a preset02:15
rgareusdrobilla: the actual goal here is. keep the backend running open/close the GUI02:16
rgareusdrobilla: and just closing the UI temporarily does not warrant a preset02:16
drobillaoh, right, switching to ingen:activity did that02:16
drobilla?02:16
drobillaI don't know how you could have even drawn the conclusion that I was suggesting a preset was somehow the solution to this :)02:17
rgareuspset:value02:17
drobillaI mean lv2:default is stupid, and having pset:value and the rest of it off in some other extension is also stupid02:17
drobillalv2:default, pset:value, ingen:value02:17
drobillashould x and y be vertical?02:18
drobilla(and amp)02:18
drobillathey were all the way left before IIRC02:18
drobillaPretty sure yes02:19
drobillaWhich means I did actually fix the problem a few commits ago02:19
drobillaI just also broke it by switching to ingen:activity, which doesn't actually push to the port buffer02:19
drobillargareus: http://dev.drobilla.net/changeset/532902:20
LAbotTitle: Changeset 5329 – drobillad (at dev.drobilla.net)02:20
drobillaThis took like 4 hours.  Fuck me, programming is the worst sometimes.02:21
drobillaOh well, at least monitoring actually makes sense now, and the replies to set_property02:21
rgareusdrobilla: still not..02:23
rgareusfixed02:23
rgareusdrobilla: I only get 'Atom size 8' from sisco. the plugin does not receive the initial request from the UI02:23
rgareusdrobilla: on a related note. Thanks for making plugin discovery much much faster (or caching it?)02:24
drobillaI do.02:24
drobillargareus: That was entirely the workaround for meters.ttl ;)02:24
rgareusdrobilla: aah wait.02:24
drobillaIt was a fix in lilv to never parse the same file twice02:25
drobillaIt just never mattered before, because nobody put a bajillion plugins in the same file before02:25
rgareuslost in the scrollback buffer: now fith 5329:  http://pastebin.com/gnAAEHE502:25
rgareuslet me add back the monitoring printf()02:26
rgareusso sisco gets the message & responds. at the end of sisco's run there's something in the Atom buffer02:26
drobillaOddly I get th same X,Y,amp as jalv, but X1 and X2 are different02:26
drobillargareus: To be clear, it *totally* works for me, as in the X,Y,amp controls in the UI are not zero02:27
drobillaall 3 are straight vertical as in jalv02:27
rgareusdrobilla: and I also see it in foreach in ingen02:28
drobillargareus: and yet it's still not working?02:28
drobillaer, reverted sisco and now it doesn't again.  WTF.02:29
rgareusdrobilla: wait a min. I've disabled port_events() in the gui for debugging..02:29
rgareusdrobilla: works now!02:29
rgareusdrobilla: let me try, if it does so reliably.02:30
drobilladid for me, now not.  sgh.02:30
rgareusdrobilla: maybe just because of the printf() * timing02:30
drobillaShouldn't be, it's all synchronous02:30
drobillaUnless we have now finally arrived at the weird Gtk syncey things you figured it was initially02:31
rgareusdrobilla: right.02:31
rgareusdrobilla: but 5329 is OK here, now.02:32
rgareusdrobilla: tested 5 times 5 times OK02:32
drobillaNot for me :(02:32
drobillanever sent, again02:33
rgareusdrobilla: odd02:33
drobillahm.. something seems to be sent *every* cycle02:34
drobillajudging by a print in that FOREACH02:34
rgareusthe 8bytes? en amety sequence?02:35
rgareusempty sequence. just the header02:35
drobilla*in* that foreach shouldn't do so02:35
drobillaI reverted sisco and not it consistently does *not* work for me02:36
drobillanow*02:37
drobillavalgrind time02:37
* drobilla thought he was finally done02:37
drobillaaaaaaand zombie02:39
drobillaI hate jack so much sometimes02:39
drobilla-d dummy -Z --timeout 99999 means NO FUCKING ZOMBIES02:40
rgareusnot with jack1 :)02:42
drobillaSiSco.lv2 error: LV2 comm-buffersize is insufficient 33008/33024 bytes.02:43
drobillargareus: Worst fork situation ever.02:43
rgareusdrobilla: the mono version?02:44
rgareusdrobilla: it has   rsz:minimumSize 33024;                                                                                                                      rdfs:comment "Plugin t02:44
rgareusoops.02:44
drobillayes02:44
rgareusdrobilla: so if you host only gives it 33008....02:44
drobillargareus: One of us is probably not compensating for sizeof(LV2_Atom_Sequence)02:45
rgareus33024   is 8192 [max jack bufsize] * sizeof(float) + LV2-Atom overhead02:45
drobillaIf you mean literally LV2_Atom overhead that's not enough02:46
drobilla(this is at 8192)02:46
rgareusdrobilla: no, not literally02:46
rgareusdrobilla: but elaborating on the whole thing literally would fill a page :)02:47
rgareusdrobilla: 33024 is the total everything at the end02:48
drobillaThe capacity reported is self->notify->atom.size02:48
rgareusdrobilla: yes02:49
drobillaFine, I will assume ingen isn't giving enough02:50
drobillaBut I am going to be super pissed off if the number is wrong :P02:50
rgareusdrobilla: well, the .ttl says 33024. and in run() self->notify->atom.size is 3300802:51
rgareusdrobilla: so that's 16 bytes difference.02:51
drobillargareus: Those two numbers are not the same.  atom.size will be sizeof(LV2_Atom) smaller than rsz:minimumSize02:52
rgareusdrobilla: not only 8 for the sequence header02:52
drobillathat's 8 bytes, though.  I don't know why 1602:52
drobillaYou should be getting 3301602:53
drobillathis time it worked but all red because of the buffer thing02:53
rgareusdrobilla: mmh. that's not what the doc says. http://lv2plug.in/ns/ext/resize-port/#minimumSize02:54
LAbotTitle: LV2 Resize Port Extension (at lv2plug.in)02:54
rgareus"Indicates that a port requires a buffer at least this large, in bytes"02:54
rgareusthanks, LAbot02:54
drobillathe monitoring is still broken02:54
drobillargareus: LV2_Atom is part of the buffer.02:54
drobillargareus: That property is not atom specific.02:54
drobillaIt says the port buffer must be x bytes large.02:54
rgareusdrobilla: right.02:55
drobillaSo if you ask for 33024 your atom.size should be 3301602:55
rgareusdrobilla: OK. I'll add 802:55
drobillaRight.02:55
drobillaWhich leaves 8 mystery bytes :)02:55
* drobilla is still trying to figure out why monitoring doesn't work02:56
rgareusdark-matter02:56
rgareusbecause you're using Atoms02:56
drobillaheh02:57
* drobilla wonders if ccache isn't being reliable or something03:00
drobillaHm, wait, if the size is off, then it won't be sent03:01
drobilladuhr03:01
drobilla_atom->size = _capacity - sizeof(LV2_Atom_Sequence);03:03
drobillathere's the 8 bytes03:03
drobillaSiSco.lv2 error: LV2 comm-buffersize is insufficient 33016/33024 bytes.03:03
drobillaFun ingen facts: pretty sure this makes every sequence allocated from then on that large03:04
drobillaI need to redo buffers03:04
drobillaWell, at least 100% of the problem wasn't shitty broke-ass Ingen :)03:05
rgareusdrobilla: odd thing. with jalv I get    self->notify->atom.size = 33024  when I request rsz:minimumSize 3302403:06
rgareusdrobilla: same with ardour03:06
drobillargareus: More never hurts03:06
rgareusdrobilla: yes.03:07
drobillaThough, I wonder if you *really* get that much...03:07
drobillaor if the size is just set wrong, which would be bad03:07
rgareusdrobilla: the plugin gets that much.  it works, I can see the waveform :)03:11
drobillargareus: actually I don't think it does. LV2_Evbuf is broken.03:12
rgareushttp://robin.linuxaudio.org/tmp/ingen_sisco.png03:12
rgareusdrobilla: where? in Ardour?03:13
rgareusdrobilla: or jalv?03:13
drobillasame used in both03:13
drobillahmm.. no, it allocates a bit more at the start03:13
drobillan/m03:13
drobillaIngen as of last rev will give you exactly what's requested03:14
rgareusdrobilla: so I don't need to add 8?03:14
drobillaYou do need to add 803:18
drobillaThen it should work at 819203:19
drobillaActually it seems weird that that matters, but anyway, you're off by sizeof(LV2_ATOM)03:19
drobillaLV2_Atom, even03:19
rgareusactually I think I can relax the check. 33024 is over-conservative. I've added too much padding03:21
rgareuseven with 8192 floats + GUI state. the total measured max is only 3302403:21
drobillashame a nice round number like 32768 won't suffice :)03:21
rgareusaah wait. the state for the 4channel version is larger.03:21
drobillaWe could totally design a more graceful mechanism for this03:22
drobillaBut it hardly seems worth the effort03:22
drobillaThough it would be neat if the forge itself could somehow signal the host so it would know to increase it next time03:23
rgareusworst case the plugin transfers 8K audio-samples  + the Atom-vector overhead of it  + the GUI-settings which are 3 vectors in one cycle.03:23
rgareus8K audio-samples * number of channels.  GUI-state is also * number of channels03:23
drobillaI guess the forge could set the buffer to a special underrun atom03:24
rgareusthe padding is slightly different in each case.03:24
drobillaThough I guess the plugin would still need to check that it failed to try again next cycle03:24
rgareusdrobilla: right.03:24
drobillaProbably easier for the host to just support dynamic resize, really03:24
rgareusi think I did that somewhere..03:25
rgareusthe ebur128 gui probably.03:25
rgareusdrobilla: so did you find the problem in ingen?03:28
drobillargareus: http://dev.drobilla.net/changeset/533103:29
LAbotTitle: Changeset 5331 – drobillad (at dev.drobilla.net)03:29
rgareusdrobilla: and sisco now works for you w/ jack -p <= 409603:30
rgareusdrobilla: and will work with 8192 once I've add 8 to each  rsz:minimumSize03:31
drobillargareus: right03:31
rgareus..or changed the check for the min size03:31
drobillaI suppose, but those should of course correspond03:31
rgareusdrobilla: I've started re-doing the worst-case max. size-calculation03:32
rgareusdrobilla: yeah I wasn't aware of he +8 issue. basically because jalv and A3 gave me  rsz:minimumSize as self->notify->atom.size03:32
drobillaI'm half inclined to check the logic there, but why bother going out of my way to make it smaller and potentially break something03:33
drobillaSeems the memory is actually there, so whatever03:33
rgareusardour uses    LV2_Evbuf* evbuf = (LV2_Evbuf*)malloc(sizeof(LV2_Evbuf) + sizeof(LV2_Atom_Sequence) + capacity);03:35
rgareuswith capacity == rsz:minimumSize03:35
rgareusdrobilla: and it was you who wrote that :)03:36
rgareus2012-02-2503:36
rgareuswell, setting capacity to rsz:minimumSize was /me03:36
drobillaLike I said, it's the same in both.03:37
drobillaRight, which is where the extra comes from.03:37
rgareusdrobilla: to make ardour 100% strict, it should just not add  sizeof(LV2_Atom_Sequence)03:38
rgareusdrobilla: though throwing in 8 extra bytes does not hurt03:38
drobillaWell, depending on how you look at it, I suppose.03:38
drobillaindeed.03:38
rgareusdrobilla: subtracting 8 and then adding 8 seems worse.03:38
drobillaI guess making it strictly correct could prevent someone from making this same mistake in the future03:39
rgareusdrobilla: my first test is always in jalv.03:39
drobillalv2_evbuf.c is just being lazy, it probably needs to be different for each type03:41
rgareusdrobilla: right. ./jalv/src/lv2_evbuf.c is very similar to ./libs/ardour/lv2_evbuf.c03:45
drobillaI was not aware they had diverged whatsoever03:45
drobillaI probably should have put that in LV2 itself as a utility header03:45
drobillaWould have prevented that Renoise dipshit from getting confused about what to do, at the very least03:46
rgareusdrobilla: there's a minor change for a compiler warning.  (the default: case)03:49
rgareusdrobilla: http://pastebin.com/VWx5fcmk03:49
rgareusdrobilla: the change to   ev = (LV2_Event*)((char*)ebuf->data + iter.offset);    should probably be ported to Ardour03:50
rgareusthough actually case LV2_EVBUF_EVENT:  should just be removed :)03:50
drobillargareus: Hopefully sooner rather than later, though see lv2-dev for evidence that at least one person gets pissy about the idea03:51
drobillargareus: Though at that point, lv2_evbuf can just disappear entirely03:51
drobillaCalf is the biggest thing to resolve before that happens.03:51
rgareusdrobilla: the guitarix tuner -> midi output is no loss03:51
drobillaAFAIK all (not-dead) hosts support atoms.03:51
drobillaIndeed.  Though I suppose maybe lack of equivalents to event-helpers.h was the cause of that.03:52
drobillaKind of hard when people just piss and moan, and don't actually tell you.03:52
drobillaEasier to just not give a fuck than speculate, so I'll just do that. :)03:52
* drobilla nestles comfily on his benevolent dictator throne03:52
drobillaThough, I thought of something tricky there....03:53
drobillaTechnically, changing port types means changing URIs03:53
rgareusdrobilla: thanks for tracking down these ingen issues, Mr Dictator.03:53
drobillaWhich something like calf sure doesn't want to do03:53
drobillargareus: y/w03:53
drobillaThough it's almost 11pm and I completely hate myself for doing so, it made me fix some totally wrong things about Ingen comm, so it's all good03:54
rgareusdrobilla: let me close 95403:54
drobillaIn the context where this matters and me failing at life doesn't, anyway :)03:54
rgareus11pm on a Friday night.03:56
rgareushere's 5am on a Saturday morning.03:56
drobillafair enough :)03:57
* rgareus -> bed()03:58
rgareusdrobilla: I'll update the buffersize +8 after a bit of sleep03:58
drobillaThis weekend I have to finish and submit this paper, write a progress report for my research project, merge 3 branches and fix a bunch of shitty code for work stuff, implement a bunch of non-trivial functionality.....03:58
drobillaPlan comps, consider course situation, kill self, etc.03:58
drobillargareus: 'night03:58
*** edogawa has joined #ingen07:02
*** thorwil has joined #ingen09:15
*** drobilla has quit IRC09:30
*** drobilla has joined #ingen09:34
*** thorwil has quit IRC11:15
*** thorwil has joined #ingen13:21
*** dongl is now known as donut14:42
*** donut is now known as dong15:23
*** edogawa_ has joined #ingen15:30
*** edogawa has quit IRC15:33
*** edogawa_ is now known as edogawa15:41
drobillaHmmmm.. I wonder if the list is broken because we're using the 'convenience' address ingen@drobilla.net and not ingen@lists.drobilla.net20:24
drobillaWell, half broken for me anyway except on Android which can magically see it20:24
*** drobilla has quit IRC20:40
*** drobilla has joined #ingen20:53
*** thorwil has quit IRC21:19
*** edogawa has quit IRC23:29

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