Thursday, 2016-01-07

*** Magnus_RM has quit IRC00:08
*** edogawa has quit IRC01:10
*** ricardocrudo has quit IRC01:52
*** drobilla has quit IRC02:45
*** artfwo has quit IRC03:06
*** edogawa has joined #lv207:32
*** ventosus has joined #lv207:55
*** deva has joined #lv207:59
*** aelc665 has joined #lv208:43
devaIn order for a plugin to have the lv2:hardRTCapable attribute set it is required that "The plugin will not access files, devices, pipes, sockets, IPC or any other mechanism that might result in process or thread blocking within its Audio class functions."08:54
devaDoes this imply that it is not allowed to have a mutex guard on getter methods?08:54
devaThe reason I'm asking is, that it /will/ block, but the amount of time it blocks will be very small - along the lines of the time it takes to make a single assignement for example.08:56
falktxmutex lock blocks09:09
falktxyou can use trylock09:09
falktxif it's just a variable or a pointer you can use atomics09:10
*** falktx has quit IRC09:26
*** ricardocrudo has joined #lv210:00
rgareusdeva: all locks are not realtime safe.   there's no such thing as "very short only".10:17
rgareusdeva: http://www.rossbencina.com/code/real-time-audio-programming-101-time-waits-for-nothing10:17
devargareus, That's what I thought - just wanted to be absolutely sure.10:19
devaBut then I think it should be added to the list of "don'ts" in http://lv2plug.in/ns/lv2core/#hardRTCapable bullet 310:20
rgareusdeva: the list of things to not do is pretty much endless.10:34
rgareusit really boils down to "If you don't know how long it will take, don’t do it."10:34
rgareusand ^^ is in CPU cycles.10:34
rgareusa lock can take any amount of cycles,   memory-barries,...  whatnot10:35
rgareuson the other side: a for loop over every sample to process a signal is very well defined.10:35
*** ricardocrudo has quit IRC10:36
rgareusrt-safe code is usually O(1) or O(n)   audio-samples <> CPU instructions10:37
devargareus, But if you have a non-realtime thread running in the background doing for example sample loading, then how would you syncronize between the realtime thread and this loader thread?10:41
devaOr is this just not possible in a hard realtime scenario?10:41
rgareusdeva: lock free ringbuffers10:45
rgareusdeva: see the LV2 worker for example10:45
rgareusdeva: you queue the work in a rinbuffer..   response arrives in a 2nd ringbuffer10:45
rgareusdeva: the LV2 worker also has various edge cases handled correctly.  e.g it becomes blocking during freewheeling.10:46
devaThat would be a solution, yes10:47
rgareusfalktx already mentioned  trylock.10:56
rgareususeful in jack clients where one can easily create custom threads.10:57
rgareusnot so much for plugins. I'm not aware of any plugin standard that has an API to create threads or get the scheduler priority of the host.10:58
*** ricardocrudo has joined #lv211:20
*** wumpus has quit IRC13:19
*** wumpus has joined #lv213:21
*** drobilla has joined #lv215:04
* drobilla wonders how smart git is about merging if commit messages are rewritten15:09
drobillargareus: In related ultra nitpickey news, capitalize your summary lines :)15:09
drobillaThis approach to plugins versioning seems like it would absolutely murder startup time15:12
drobillaventosus: Similarly, omit the trailing "."15:17
rgareusdrobilla: I'll keep it in mind.15:19
rgareusdrobilla: Always capitalize or only if it's a full sentence?15:20
* drobilla is also trying to clean up his act WRT git conventions15:20
drobillargareus: It's supposed to be headline style, so single full sentence, always capitalized, no period15:21
ventosusdrobilla: ok. want me to rebase?15:22
drobillaPreferably describing an action, e.g. start with a verb15:22
drobillaventosus: Nah15:22
rgareusdrobilla: I don't experience a noticable performance penalty due to the dup check15:22
drobillaventosus: params is really pushing how much state makes sense for this static cases style, but I can't come up with a better pattern...15:23
drobillargareus: Creating a new LilvWorld seems particularly nutty, but I need to read it more15:23
rgareusdrobilla: that's only done in case there is a duplicate15:23
rgareusdrobilla: there might be a better way to do this. but I don't think there is.15:24
drobillargareus: Not sure.  There's is now a double duplicate check15:28
drobillaHm, doesn't look like there is a rule that minorversion and microversion must be in manifest.ttl.  Should be15:29
ventosusdrobilla: btw, shouldn't (property, value) pairs be put into a patch:body object property inside the patch:Put object according to the spec?15:30
drobillaBest approach is probably to just do the initial manifest scan and decide what should be loaded before actually doing anything.  No unloading15:30
drobillaventosus: mmm... yep15:31
rgareusdrobilla: then you'll have to parse all manifests first.  and that approach will also fail for later cases: clients loads a bundle.15:33
rgareusdrobilla: my patch does not handle the latter case yet, but that won't be hard to add.15:33
*** tytel has joined #lv215:57
*** aelc665 has quit IRC16:38
*** rncbc has joined #lv216:54
*** sigma6 has quit IRC17:06
*** artfwo has joined #lv217:59
*** rncbc has quit IRC18:41
*** uncle-j_j has joined #lv218:41
*** rncbc has joined #lv218:57
*** falktx has joined #lv219:03
*** rncbc has quit IRC19:14
*** drobilla` has joined #lv219:30
*** rncbc has joined #lv219:31
*** _deva has joined #lv219:32
*** _deva has quit IRC19:33
*** kwmiebach_ has joined #lv219:33
*** drobilla has quit IRC19:38
*** deva has quit IRC19:38
*** kwmiebach has quit IRC19:38
*** rncbc has quit IRC19:43
*** kwmiebach_ is now known as kwmiebach19:46
*** HarryHaaren has joined #lv219:48
*** ventosus has left #lv219:52
*** deva has joined #lv220:15
*** rncbc has joined #lv220:26
*** uncle-j_j has quit IRC20:35
*** uncle-j_j has joined #lv220:42
*** ricardocrudo has quit IRC20:50
*** drobilla` is now known as drobilla21:04
*** ricardocrudo has joined #lv221:11
*** deva has quit IRC21:22
*** Magnus_RM has joined #lv222:07
*** uncle-j_j has quit IRC22:48
*** uncle-j_j has joined #lv222:50
*** HarryHaaren has quit IRC23:04
*** uncle-j_j has quit IRC23:10
*** Magnus_RM has quit IRC23:13
*** drobilla has quit IRC23:32
*** timbyr__ has quit IRC23:32
*** rncbc has quit IRC23:44
*** timbyr__ has joined #lv223:48

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