*** ro_ is now known as carmen | 07:34 | |
*** thorwil has joined #ingen | 08:19 | |
*** carmen is now known as co | 08:33 | |
*** edogawa has joined #ingen | 10:52 | |
*** edogawa has quit IRC | 11:09 | |
*** edogawa has joined #ingen | 13:29 | |
*** edogawa has quit IRC | 13:38 | |
*** edogawa has joined #ingen | 13:38 | |
*** thorwil has quit IRC | 14:02 | |
*** rgareus has joined #ingen | 15:52 | |
rgareus | drobilla: how's your schedule? care to comment on http://dev.drobilla.net/ticket/954 ? | 15:55 |
---|---|---|
LAbot | Title: #954 (issues with LV2 Atom Transfer from/to GUI) – drobillad (at dev.drobilla.net) | 15:55 |
rgareus | drobilla: I had a quick look, but didn't see an easy fix/workaround. | 15:55 |
rgareus | drobilla: does ingen use ringbuffers for atom-events at all? It seem to be all hooked up via signals. | 15:56 |
drobilla | rgareus: 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 |
rgareus | drobilla: 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 not | 16:01 |
rgareus | drobilla: and also loops back events created by the GUI to the GUI. | 16:01 |
rgareus | drobilla: but the lost initial events are IMHO the bigger issue. | 16:01 |
drobilla | rgareus: Yep, it doesn't check notify properties at all. | 16:37 |
drobilla | rgareus: I don't know why the loopback is happening. Maybe can look in to it when I get home later. | 16:37 |
rgareus | drobilla: the bug report was motivated by https://github.com/x42/sisco.lv2/issues/4 | 16:44 |
rgareus | drobilla: I've meanwhile worked around the loopback (sisco checks the port-index itself, now) | 16:45 |
rgareus | drobilla: but the missing first LV2-atom trasfer backend -> GUI is still a problem | 16:45 |
rgareus | FWIW, jalv handles both correctly. | 16:46 |
drobilla | rgareus: 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 |
rgareus | drobilla: no, the index is correct. | 17:08 |
rgareus | drobilla: ie. UI creates event on port-index 0 ('control'). ingen delivers this to port-index 0 of the backend AND the GUI. | 17:09 |
rgareus | drobilla: 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 |
rgareus | drobilla: 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 |
drobilla | Oh. You were relying on only ever receiving updates for things listed with notifications. | 17:21 |
drobilla | Not that my code isn't broken, but that's not the best idea | 17:21 |
drobilla | (Actually I don't think the spec is specific either way) | 17:21 |
*** thorwil has joined #ingen | 17:21 | |
*** co is now known as cdr | 17:27 | |
rgareus | drobilla: that part [relying on what is subscribed] is fixed. | 17:30 |
rgareus | drobilla: 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 |
drobilla | rgareus: 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.cpp | 17:35 |
drobilla | rgareus: but I can do it later | 17:35 |
rgareus | drobilla: 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 |
drobilla | rgareus: not sent to what? from where? | 17:40 |
rgareus | drobilla: backend to GUI | 17:40 |
drobilla | rgareus: which GUI? | 17:41 |
rgareus | drobilla: see the steps, 1,2,3 at http://dev.drobilla.net/ticket/954 | 17:41 |
LAbot | Title: #954 (issues with LV2 Atom Transfer from/to GUI) – drobillad (at dev.drobilla.net) | 17:41 |
rgareus | drobilla: the plugin GUI | 17:41 |
drobilla | rgareus: Okay. In the context of Ingen that doesn't mean much. | 17:41 |
drobilla | It's getting lost somewhere. The question is where. Then, the question is why. | 17:42 |
rgareus | drobilla: where: in ingen :) why: you tell me :D | 17:42 |
drobilla | All the UI stuff is in the same thread, I don't think a situation like that should be possible | 17:42 |
rgareus | drobilla: but in this case it's GUI -> backend -> GUI communication. 2 threads are involved | 17:44 |
rgareus | drobilla: and it's some initial setup only issue. maybe even a race-condition when things are connected up. | 17:45 |
drobilla | rgareus: 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 show | 17:46 |
rgareus | drobilla: the gui does exist because it sends the 'request' in the first place | 17:47 |
rgareus | drobilla: I've added printf()s to the plugin. the backend does receive the event sent from the GUI during initialization | 17:48 |
rgareus | drobilla: the backend the forges the reply (I've checked the port's capacity). | 17:49 |
rgareus | the backend *then* forges the reply... | 17:49 |
drobilla | There is actually notification checking code here | 17:49 |
rgareus | drobilla: 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. :P | 17:50 |
drobilla | If 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::create | 17:51 |
drobilla | NodeModule is the thing that does the rest, basically. | 17:52 |
rgareus | drobilla: I have not tried sisco in ingen in jalv. I used sisco in jalv.gtk -> works fine. vs ingen -eg -> no joy | 17:52 |
drobilla | I 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 |
drobilla | But there's only 1 UI thread anyway, so I don't know what's going on. | 17:55 |
rgareus | drobilla: I'll see if I can find out after dinner. If you have an idea what may happen, meanwhile, let me know.. | 17:57 |
drobilla | rgareus: I need to go to work half an hour ago, so, probably not :) | 17:59 |
*** thorwil has quit IRC | 21:11 | |
*** edogawa has quit IRC | 23:33 |
Generated by irclog2html.py 2.13.0 by Marius Gedminas - find it at mg.pov.lt!