Tuesday, 2014-01-28

*** ro_ is now known as carmen07:34
*** thorwil has joined #ingen08:19
*** carmen is now known as co08:33
*** edogawa has joined #ingen10:52
*** edogawa has quit IRC11:09
*** edogawa has joined #ingen13:29
*** edogawa has quit IRC13:38
*** edogawa has joined #ingen13:38
*** thorwil has quit IRC14:02
*** rgareus has joined #ingen15:52
rgareusdrobilla: how's your schedule? care to comment on http://dev.drobilla.net/ticket/954 ?15:55
LAbotTitle: #954 (issues with LV2 Atom Transfer from/to GUI) – drobillad (at dev.drobilla.net)15:55
rgareusdrobilla: I had a quick look, but didn't see an easy fix/workaround.15:55
rgareusdrobilla: does ingen use ringbuffers for atom-events at all?  It seem to be all hooked up via signals.15:56
drobillargareus: The GUI works with signals.  All events in the engine are ringbuffered.  There are zero signals in the engine and the GUI code doesn't have access to anything other than the ability to make events.15:57
rgareusdrobilla: the first problem seems to be in NodeModule::port_activity()   it just calls _plugin_ui->port_event() regardless if it's the notify port or not16:01
rgareusdrobilla: and also loops back events created by the GUI to the GUI.16:01
rgareusdrobilla: but the lost initial events are IMHO the bigger issue.16:01
drobillargareus: Yep, it doesn't check notify properties at all.16:37
drobillargareus: I don't know why the loopback is happening.  Maybe can look in to it when I get home later.16:37
rgareusdrobilla: the bug report was motivated by https://github.com/x42/sisco.lv2/issues/416:44
rgareusdrobilla: I've meanwhile worked around the loopback (sisco checks the port-index itself, now)16:45
rgareusdrobilla: but the missing first LV2-atom trasfer backend -> GUI is still a problem16:45
rgareusFWIW, jalv handles both correctly.16:46
drobillargareus: I'm not sure what you mean about the index thing.  Events are being sent to the UI with the incorrect index, too?16:59
rgareusdrobilla: no, the index is correct.17:08
rgareusdrobilla: ie. UI creates event on port-index 0 ('control').  ingen delivers this to port-index 0  of the backend AND the GUI.17:09
rgareusdrobilla: the backend  creates events on port-index 1 ('notify') and they're delivered to the GUI  on index 1 -- except the very first event.17:10
rgareusdrobilla: the GUI subscribes to events on port-index 1 only. all LV2 hosts that I've tested - except ingen - only send atom port-events on port 1 to the GUI.17:12
drobillaOh.  You were relying on only ever receiving updates for things listed with notifications.17:21
drobillaNot that my code isn't broken, but that's not the best idea17:21
drobilla(Actually I don't think the spec is specific either way)17:21
*** thorwil has joined #ingen17:21
*** co is now known as cdr17:27
rgareusdrobilla: that part [relying on what is subscribed] is fixed.17:30
rgareusdrobilla: I'm still relying on the backend to send a response to a 'request settings' request.  I'm not sure what the best solution for that is.  Timeout and re-request should work.17:32
drobillargareus: Well, if you're really keen to muck around in Ingen, my usual debug comm strategy is either to run it in jalv -d, or uncomment the debug printey things in server/events/Delta.cpp and client/ClientStore.cpp17:35
drobillargareus: but I can do it later17:35
rgareusdrobilla: I do know the data is not sent. I think the problem is that the UI instantiated first, but the signal-connection to deliver events is only done a short time later. and when the signal is set up the exising buffer is zeroed.17:40
drobillargareus: not sent to what?  from where?17:40
rgareusdrobilla: backend to GUI17:40
drobillargareus: which GUI?17:41
rgareusdrobilla: see the steps, 1,2,3 at http://dev.drobilla.net/ticket/95417:41
LAbotTitle: #954 (issues with LV2 Atom Transfer from/to GUI) – drobillad (at dev.drobilla.net)17:41
rgareusdrobilla: the plugin GUI17:41
drobillargareus: Okay.  In the context of Ingen that doesn't mean much.17:41
drobillaIt's getting lost somewhere.  The question is where.  Then, the question is why.17:42
rgareusdrobilla: where: in ingen :) why: you tell me :D17:42
drobillaAll the UI stuff is in the same thread, I don't think a situation like that should be possible17:42
rgareusdrobilla: but in this case  it's   GUI ->  backend -> GUI  communication. 2 threads are involved17:44
rgareusdrobilla: and it's some initial setup only issue.  maybe even a race-condition when things are connected up.17:45
drobillargareus: If so, I'd guess not signals, but the actual GUI doesn't exist in time to receive the response.  I think there's (inherently, in gtk) an event loop gap between init and actually show17:46
rgareusdrobilla: the gui does exist because it sends the 'request' in the first place17:47
rgareusdrobilla: I've added printf()s to the plugin.  the backend does receive the event sent from the GUI during initialization17:48
rgareusdrobilla: the backend the forges the reply (I've checked the port's capacity).17:49
rgareusthe backend *then* forges the reply...17:49
drobillaThere is actually notification checking code here17:49
rgareusdrobilla: I could use a few pointers how to best debug/trace it.17:50
drobilla... I did that and you said you knew they weren't getting to the plugin GUI. :P17:50
drobillaIf you want to make the assumption that the event is actually making it back to the Ingen GUI, the suil_instance_new call is in PluginUI::create17:51
drobillaNodeModule is the thing that does the rest, basically.17:52
rgareusdrobilla: I have not tried   sisco in ingen in jalv.    I used sisco in jalv.gtk -> works fine.  vs ingen -eg -> no joy17:52
drobillaI don't know if there's a clear spot to put a lock here, there is no current "stop talking about anything" lock, so it may not be fun.17:52
drobillaBut there's only 1 UI thread anyway, so I don't know what's going on.17:55
rgareusdrobilla: I'll see if I can find out after dinner.  If you have an idea what may happen, meanwhile, let me know..17:57
drobillargareus: I need to go to work half an hour ago, so, probably not :)17:59
*** thorwil has quit IRC21:11
*** edogawa has quit IRC23:33

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