*** ricardocrudo has quit IRC | 00:00 | |
falktx | more pugl changes? | 00:39 |
---|---|---|
drobilla | I guess if merging counts as "more pugl changes", then yes | 00:43 |
drobilla | The divergence needs to die and we all badly need to start working on actual git repos, or git is largely pointless | 00:47 |
drobilla | Robin's is/was way out there. Haven't converted yours yet, but from the looks of it most/all the changes are relatively old and already merged | 00:48 |
falktx | I'll merge the current code and do some git diffs some time later | 00:50 |
drobilla | The changes to the internals themselves are pretty dramatic, but if you're already post puglInit stuff, actual code using it shouldn't be affected | 00:52 |
drobilla | Hopefully after this we can stick a 1.0.0 on it and start maintaining API guarantees properly | 00:52 |
HarryHaaren | does this include Robins Cairo -> GL stuff? With partial redraw? | 00:52 |
drobilla | HarryHaaren: No. He didn't do that in pugl | 00:55 |
HarryHaaren | ahhhright. | 00:55 |
drobilla | I will figure out how to stick that in there, probably as the only way to get Cairo on OSX for the forseeable future because I'm lazy and GL is more reliable there anyway | 00:56 |
drobilla | For X11, I dunno, option or different context type or something, maybe | 00:56 |
HarryHaaren | i'm happy enough with the current state of my double-buffer implementation for a while | 00:57 |
HarryHaaren | it seems to be holding up OK, and until it becomes a problem, i'm gonna use it instead | 00:57 |
HarryHaaren | drobilla, question about /book example code for setting up Atom ports to write from DSP: http://pastebin.com/tA1gtUAa | 01:33 |
HarryHaaren | context: lv2_atom_forge_raw() is hanging until JACK zombifies. The lv2_atom_forge_deref(forge, f->ref)->size += size; loops until I C^c it, i put a counter in there, about 26716 in a second or so. | 01:38 |
HarryHaaren | help appreciated | 01:38 |
HarryHaaren | writing code looks like so: URI's are mapped to numbers < 50, so is legit: http://pastebin.com/2WKNaNfc | 01:39 |
HarryHaaren | one midi message per run() no problem; two or more and lv2_atom_forge_raw() hangs. | 01:40 |
HarryHaaren | the problem does *NOT* occur if I leave out the lv2_atom_forge_key() calls (aka, send a useless Atom) | 01:41 |
*** NickSB2 has joined #lv2 | 01:42 | |
HarryHaaren | ok.. its non deterministic. Sometimes 2 values works too :/ | 01:48 |
drobilla | You're pretty good at getting bizarre hangs out of things that "can't" possibly do so :) | 02:38 |
drobilla | HarryHaaren: Which plugin is hanging? | 02:39 |
HarryHaaren | Fabla2 codebase | 02:40 |
HarryHaaren | drobilla, i'm testing with eg-scope / sampler atm, refactoring the code | 02:40 |
drobilla | What why are you dereve()->size += size ing anything? | 02:40 |
drobilla | deref* | 02:40 |
HarryHaaren | and I know, I manage to make the strangest things happen in code. Wish it wasn't like that! | 02:40 |
HarryHaaren | i put a print in there just to see if that was actually the issue. | 02:40 |
HarryHaaren | i think i'm A) getting the frames wrong | 02:40 |
HarryHaaren | or B) something else | 02:41 |
HarryHaaren | im refactoring for a bit, might ping you later if I still can't get it. | 02:41 |
drobilla | forge doesn't really care about the time stamps | 02:41 |
* drobilla needs to write a more type safe / foolproof C++ forge thingie | 02:41 | |
HarryHaaren | drobilla, what does the forge do when it runs out of space? | 02:41 |
drobilla | Just doesn't write | 02:42 |
HarryHaaren | for output atom ports in the .ttl, what does lv2:designation lv2:control ; do? | 02:44 |
drobilla | RTFM ;) | 02:46 |
*** NickSB2 has quit IRC | 02:47 | |
HarryHaaren | been there done that. This plugin is still crashing :) | 02:51 |
drobilla | valgrind? | 02:52 |
drobilla | I don't see any way any forge method could possibly "hang", unless maybe you're passing some absurdly massive (integer underflow) size, but even then, it should just bail out because the size check is bad | 02:54 |
drobilla | They're all just slightly glorified buffer writes at the end of the day | 02:54 |
HarryHaaren | there's something more fundamentally wrong with the Atom buffer stuff, its saying its size is 8 | 02:54 |
drobilla | and you mentioning that you're derefing things and messing with their size is certainly a red flag... | 02:55 |
HarryHaaren | i'm not derefing things at all, its just forge_key() that' im calling | 02:55 |
drobilla | Did you nuke the capacity as in the fifth setup? | 02:55 |
drobilla | clearing it will do so | 02:55 |
* HarryHaaren checks | 02:55 | |
drobilla | (this pattern sucks) | 02:55 |
drobilla | (it also sucks that you can't do offsets with sequence ports) | 02:56 |
drobilla | (LV2 sucks etc) | 02:56 |
HarryHaaren | nope, not clearing. I'm reading eg-scope, it does way less Atom port stuff on init than eg-sampler.. | 02:56 |
HarryHaaren | and requests a size in the .ttl. I'm doing that too, but instead of it being the size it should be, its 8 | 02:57 |
drobilla | In what host? | 02:57 |
HarryHaaren | jalv.gt | 02:57 |
HarryHaaren | k | 02:57 |
drobilla | and if you get the atom size as the very firstest firstiest seriously first ever ever thing in run(), it's 8? | 02:58 |
HarryHaaren | no.. that was a mistake on my part, printing the input port not the output port | 02:59 |
HarryHaaren | ok, i'm getting places.. leave it with me for a while. Thanks already though | 03:00 |
drobilla | kthxy/wetc | 03:00 |
HarryHaaren | no idea what that means, but yeah sure :) | 03:02 |
* falktx decodes... ok thanks, you're welcome, etc | 03:02 | |
falktx | k thx y/w etc. joining all that hurts the brain... | 03:03 |
* drobilla internets to win | 03:04 | |
HarryHaaren | drobilla, paste this http://pastebin.com/c3LdUy7k just before // Process audio data in eg-scope.c | 03:10 |
HarryHaaren | then run in jalv.gtk -d | 03:10 |
HarryHaaren | it jumps to 100% CPU on one core, and doesn't do anything here | 03:11 |
HarryHaaren | also when I close the UI, the DSP thing is still hanging | 03:12 |
falktx | maybe the buffer is corrupt? | 03:13 |
falktx | look for lv2_atom_forge_set_buffer | 03:14 |
drobilla | that makes an unterminated object 5 levels deep, for starters | 03:14 |
HarryHaaren | falktx, did you try it? Does it have the same effect? | 03:14 |
HarryHaaren | ok.. i guess that's not good | 03:14 |
falktx | it's missing a lv2_atom_forge_pop right? | 03:14 |
HarryHaaren | but still: this is my test case, i'm getting it when handling / writing MIDI => UI updates | 03:14 |
drobilla | HarryHaaren: Forging a frame time inside an object is corrupt | 03:15 |
drobilla | HarryHaaren: frame time is in sequence only | 03:15 |
HarryHaaren | ok | 03:15 |
drobilla | It should gracefully handle this (but I'm busy) | 03:15 |
falktx | lv2_atom_forge_pop(&self->forge, &frame); missing in there | 03:15 |
HarryHaaren | fix that falk thanks | 03:16 |
HarryHaaren | few.. at least i wasnt' going totallly insane there. Was worried for a bit | 03:16 |
HarryHaaren | i mean, stupid perhaps. But insane no :) | 03:16 |
* falktx can't find a single "lv2_atom_forge_frame_time" in carla's code | 03:16 | |
falktx | so yeah that frame_time needs to go | 03:17 |
HarryHaaren | i guess you don't write any messages with audio-frame timestamps? | 03:18 |
HarryHaaren | for UI control data it doesn't make a difference | 03:18 |
HarryHaaren | for MIDI on the other hand... | 03:18 |
HarryHaaren | "drunk drummer effect" :D | 03:18 |
falktx | I don't think you're thinking it correctly | 03:18 |
falktx | the forge buffer doesn't take a timestamp | 03:19 |
falktx | well, not directly | 03:19 |
falktx | the timestamp comes later when writing to the sequence port | 03:19 |
falktx | ie, this blank/object with time x has this buffer size x | 03:20 |
falktx | I'm using some of Rui's code to help writing to lv2 atom ports, but my code is this: | 03:21 |
falktx | uint8_t timeInfoBuf[256]; | 03:21 |
falktx | lv2_atom_forge_set_buffer(&fAtomForge, timeInfoBuf, sizeof(timeInfoBuf)); | 03:21 |
drobilla | HarryHaaren: forge_object opens a frame. Like writing "[" in turtle | 03:21 |
drobilla | HarryHaaren: "frame" as in stack frame | 03:22 |
falktx | ... forge object, keys+values here | 03:22 |
falktx | then pop | 03:22 |
falktx | and finally | 03:22 |
falktx | LV2_Atom* const atom((LV2_Atom*)timeInfoBuf); | 03:22 |
falktx | lv2_atom_buffer_write(&evInAtomIters[i], 0, 0, CARLA_URI_MAP_ID_ATOM_BLANK, atom->size, LV2_ATOM_BODY_CONST(atom)); | 03:22 |
drobilla | HarryHaaren: So you're writing [ :name "suparobject", :awesome 42.0 RANDOM_TIME_STAMP_THAT_DOES_NOT_BELONG_HERE ... | 03:22 |
HarryHaaren | sure, i get it. I guess i get confused in the implementation details. | 03:22 |
drobilla | The forge knows the context, it should just fail to do so | 03:23 |
HarryHaaren | its fixed now, and i learnt from it, thanks. | 03:23 |
drobilla | Not that anyone checks the errors anyway, myself included, but y'know | 03:23 |
HarryHaaren | hah true. | 03:23 |
HarryHaaren | throw in a good au'l assert(false); and they'll notice ;) | 03:23 |
falktx | I had some test code in carla but had to remove it because plugins were not correct | 03:24 |
falktx | printing stuff during RT process is not funny | 03:24 |
HarryHaaren | that's when to A) log extension or B) ship it to an offline thread manually :) | 03:24 |
HarryHaaren | and then spam the console | 03:25 |
* HarryHaaren refactors && sleep(8) | 03:27 | |
*** HarryHaaren has quit IRC | 03:27 | |
*** falktx has quit IRC | 03:41 | |
*** falktx has joined #lv2 | 03:43 | |
*** falktx has quit IRC | 03:48 | |
*** LAbot has joined #lv2 | 05:42 | |
*** edogawa has joined #lv2 | 07:05 | |
*** edogawa_ has joined #lv2 | 08:04 | |
*** edogawa has quit IRC | 08:08 | |
*** NickSB2 has joined #lv2 | 10:16 | |
*** ddom has joined #lv2 | 10:18 | |
*** mlpug has joined #lv2 | 12:14 | |
*** rncbc_jolla has joined #lv2 | 12:36 | |
*** NickSB2 has quit IRC | 13:27 | |
*** rncbc_jolla has quit IRC | 13:46 | |
*** HarryHaaren has joined #lv2 | 13:57 | |
*** mlpug has quit IRC | 14:09 | |
*** gianMOD has quit IRC | 14:36 | |
*** bazz has quit IRC | 15:07 | |
*** bazz has joined #lv2 | 15:09 | |
*** ricardocrudo has joined #lv2 | 15:10 | |
*** edogawa_ is now known as edogawa | 15:19 | |
*** ricardocrudo has quit IRC | 15:35 | |
*** ricardocrudo has joined #lv2 | 15:47 | |
*** gianMOD has joined #lv2 | 16:39 | |
*** gianMOD has quit IRC | 16:44 | |
*** zth has joined #lv2 | 16:45 | |
*** mlpug has joined #lv2 | 16:59 | |
*** gianMOD has joined #lv2 | 17:12 | |
*** ddom has quit IRC | 17:24 | |
*** falktx has joined #lv2 | 17:35 | |
*** falktx has quit IRC | 17:48 | |
*** ddom has joined #lv2 | 17:50 | |
*** falktx has joined #lv2 | 17:52 | |
*** ddom has quit IRC | 18:06 | |
*** mlpug has quit IRC | 18:25 | |
*** zth has quit IRC | 19:15 | |
*** mlpug has joined #lv2 | 19:33 | |
*** rncbc has joined #lv2 | 20:12 | |
*** rncbc has quit IRC | 20:22 | |
*** NickSB2 has joined #lv2 | 20:24 | |
*** HarryHaaren has quit IRC | 21:45 | |
*** falktx has quit IRC | 22:44 | |
*** gianMOD has quit IRC | 22:51 | |
*** HarryHaaren has joined #lv2 | 22:59 | |
*** edogawa has quit IRC | 23:21 |
Generated by irclog2html.py 2.13.0 by Marius Gedminas - find it at mg.pov.lt!