*** HarryHaaren has quit IRC | 00:17 | |
Socapex | what are gobjects? | 00:38 |
---|---|---|
badosu | wrappers for C created by gtk | 00:40 |
badosu | afaik | 00:41 |
Socapex | oh, gtk :) | 00:41 |
*** Haskellfant has quit IRC | 01:16 | |
*** rgareus has quit IRC | 01:16 | |
*** Haskellfant has joined #lv2 | 01:20 | |
*** rgareus has joined #lv2 | 01:20 | |
*** zth_studiocomp has quit IRC | 01:40 | |
drobilla | glib, technically, but yeah. | 01:41 |
drobilla | The automagic binding to basically any language is a pretty nice pipe dream though, I must admit. | 01:45 |
drobilla | Though the associated doc tools seem kinda flakey, all things G*2 are pretty dead at this point, yet G*3 is flaky, and here in audioville we're kept from moving by way of plugin UI compatibility anyway, and binding isn't all that useful anyway, and........ so I give up. | 01:46 |
*** zth_studiocomp has joined #lv2 | 01:59 | |
Socapex | I have a general question that I've never understood. Why do people use ** or even *** to pass around structs or data? | 02:07 |
*** zth_studiocomp has quit IRC | 02:10 | |
*** zth_studiocomp has joined #lv2 | 02:16 | |
drobilla | Because...... they have to? | 02:21 |
drobilla | If you have an array of pointers to structs, well, ** is just what it is | 02:21 |
badosu | sometimes I crack my head trying to understand what this signature means | 02:23 |
badosu | const LV2_Feature* const* features | 02:23 |
badosu | ok, it's a const pointer to a LV2_Feature that is a ponter to const? wat? | 02:24 |
falktx | I think you need to study a bit more programming | 02:31 |
falktx | const LV2_Feature* f1 = features[0]; | 02:32 |
drobilla | const is left associative. Read them right to left: pointer to const pointer to const LV2_Feature | 02:44 |
badosu | falktx: thanks :-). You mean C/C++ programming | 02:44 |
drobilla | The latter being a bit weird. It's actually a more consistent convention to always put const right, like | 02:44 |
drobilla | LV2_Feature const* const* features | 02:45 |
drobilla | (C's type declaration syntax is dumb) | 02:45 |
badosu | drobilla: yep, that's what I would expect, but I am not familiar with this kind of declaration | 02:46 |
drobilla | Well, since you're just using it anyway, you can just pretend const isn't there, LV2_Feature** features | 02:46 |
drobilla | and the compiler will let you know if you screw it up ;) | 02:46 |
badosu | hahaha, thanks, this is really helpful | 02:47 |
badosu | but won't this come with some performance penalties? | 02:47 |
drobilla | ? | 02:47 |
badosu | I guess const helps to compiler in the sense that something won't mutate | 02:48 |
badosu | so, if I mutate that that can be a problem | 02:48 |
drobilla | If something is const and you try to modify it, it just won't compile. There is no runtime check for that. | 02:48 |
badosu | I understand that | 02:48 |
drobilla | Well, yes, you can dirtily cast the const away and mutate it if you really want to, but that will certanly be a very massive problem | 02:48 |
badosu | Thanks :-) | 02:48 |
drobilla | You do do pretty much anything you want to an arbitrary level of stupidity, this is C. | 02:49 |
drobilla | *(rand()) = 42; | 02:49 |
drobilla | Hey, it might work. | 02:49 |
drobilla | and/or arbitrary level of horrible brilliance http://www.ioccc.org/2000/anderson.c | 02:51 |
Socapex | drobilla: I wasnt talking about arrays though. libAV use that everywhere... It'll stay a mystery I guess. | 03:08 |
drobilla | Socapex: Triple star with no arrays involved? Pretty extremely rare. | 03:09 |
drobilla | There is no general answer. Sometimes you just need a pointer to <thing> | 03:10 |
Socapex | a pointer to a pointer to thing? Maybe its an optimization? | 03:11 |
drobilla | For parameters, sometimes it's because the callee needs to manipulate the parameter somehow, which means it must be a pointer. Sometimes just to avoid a copy, etc. | 03:11 |
Socapex | I know a guy at my internship used that a lot. He tried to explain but I never got it :/ Anyways, I guess the more I navigate C, the more I'll get used to it | 03:12 |
drobilla | I'm guessing you're used to a language with magical hidden references? (C#, Java, basically everything dynamic) | 03:13 |
Socapex | no, c++ | 03:14 |
Socapex | though some things are magical about c++11 :D | 03:14 |
drobilla | Not to put too fine a point on it, but you can't be all that experienced with C++ if you don't grok pointers :) | 03:14 |
Socapex | lol. Thats not what I'm talking about. Of course I understand pointers, but not why you would decide to point to a pointer | 03:15 |
drobilla | Though they don't show up as much because references let you syntactically pretend they aren't there in many cases. | 03:15 |
drobilla | Well, if you need to have a function change a pointer for you, you need to give it a pointer to it, being probably the most common case. Arrays being the other. | 03:16 |
Socapex | I just use unique or shared ptrs now to be honest. Though if I had to choose between pointers or references, I'd go pointer anytime | 03:16 |
Socapex | oh | 03:16 |
Socapex | so if you need to change where the pointer is pointing | 03:17 |
drobilla | Yes, e.g. posix_memalign | 03:17 |
Socapex | interesting | 03:18 |
drobilla | (because C is a call-by-value language) | 03:20 |
*** falktx has quit IRC | 03:32 | |
gabrbedd | drobilla: BTW, why is &Plugin::extension_data was used in Plugin::descriptor(). Are you trying to pin it to the base class? | 04:05 |
drobilla | gabrbedd: Because I missed changing it to derived. | 05:12 |
drobilla | extension_data effectively just isn't there. | 05:13 |
*** edogawa has joined #lv2 | 07:00 | |
*** Socapex has quit IRC | 07:07 | |
*** gianMOD has joined #lv2 | 07:13 | |
*** gianMOD has quit IRC | 07:21 | |
*** gianMOD has joined #lv2 | 08:40 | |
*** gianMOD has quit IRC | 08:42 | |
*** curlymorphic has quit IRC | 09:23 | |
*** ricardocrudo has joined #lv2 | 09:27 | |
*** gianMOD has joined #lv2 | 09:28 | |
*** gianMOD has quit IRC | 09:46 | |
*** curlymorphic has joined #lv2 | 11:43 | |
*** ricardocrudo has quit IRC | 11:55 | |
*** ricardocrudo has joined #lv2 | 12:30 | |
*** falktx has joined #lv2 | 12:38 | |
*** ricardocrudo has quit IRC | 12:45 | |
*** ricardocrudo has joined #lv2 | 12:45 | |
*** NickSB2 has quit IRC | 13:55 | |
*** ricardocrudo has quit IRC | 15:09 | |
*** edogawa_ has joined #lv2 | 15:27 | |
*** ricardocrudo has joined #lv2 | 15:28 | |
*** edogawa has quit IRC | 15:30 | |
*** edogawa_ is now known as edogawa | 15:51 | |
*** falktx has quit IRC | 15:54 | |
*** Socapex has joined #lv2 | 16:58 | |
*** ricardocrudo has quit IRC | 17:18 | |
*** rncbc has joined #lv2 | 17:33 | |
*** aombk has joined #lv2 | 17:37 | |
*** grejppi has quit IRC | 18:14 | |
*** grejppi has joined #lv2 | 18:19 | |
*** HarryHaaren has joined #lv2 | 18:55 | |
*** falktx has joined #lv2 | 18:58 | |
* rgareus finally go a nice demo for http://gareus.org/oss/lv2/midifilter#midistrum | 19:08 | |
rgareus | http://jeanluc.nest.free.fr/Robin_%20Guitar2.ogg | 19:08 |
*** ricardocrudo has joined #lv2 | 19:20 | |
HarryHaaren | rgareus, hah, nice logo :) | 19:26 |
rgareus | HarryHaaren: the "Filtres en stick" ? | 19:28 |
HarryHaaren | and MIDI yep | 19:28 |
*** HarryHaaren has quit IRC | 19:59 | |
*** rncbc is now known as rncbc|AFK | 20:33 | |
*** NickSB2 has joined #lv2 | 20:48 | |
*** ricardocrudo has quit IRC | 21:06 | |
*** ricardocrudo has joined #lv2 | 21:11 | |
*** ricardocrudo has quit IRC | 21:23 | |
*** ricardocrudo has joined #lv2 | 21:24 | |
*** Socapex has joined #lv2 | 21:26 | |
*** rncbc|AFK has quit IRC | 22:11 | |
*** ricardocrudo has quit IRC | 22:37 | |
rgareus | there's on lv:minorVersion and lv:microVersion. makes perfect sense to exclude the major. | 22:41 |
rgareus | BUT only if major version > 1. | 22:41 |
rgareus | how does one handle the case of 0.9.9 to 1.0.0 surely changing the URI is not warranted in that case. | 22:41 |
rgareus | drobilla: thoughts? | 22:41 |
rgareus | drobilla: why are odd micro versions also considerd development versions? odd minor versions sufficient are they not? | 22:43 |
rgareus | why would I churn out a 'stable' minor version only to add development micros? that does not make sense | 22:43 |
rgareus | (referring to http://lv2plug.in/ns/lv2core/#minorVersion) | 22:43 |
rgareus | drobilla: can sord_validate check for the "Releases of plugins and extensions MUST be explicitly versioned." part? | 22:45 |
drobilla | rgareus: It's just convenient to carve out space for dev versions | 23:04 |
drobilla | rgareus: 0.* is basically "this is pre-dev unreleased business so the URI doesn't reflect compatibility anything anyway" | 23:04 |
drobilla | rgareus: It's because minor is actually meaningful. If you release 4.6, you may want to have a dev 4.7 before 4.8 | 23:05 |
rgareus | so all the plugins MUST change URL before a 1.0 release.. | 23:05 |
drobilla | rgareus: But nowhere in the process is a minor increment worthy change | 23:05 |
drobilla | rgareus: I guess you could read it that way, but your breaking the rules even before release by distributing it anyway, sooooooo | 23:05 |
drobilla | Pre-release is basically "who cares" territory | 23:06 |
rgareus | "4.6" do you mean 4.6.0 or X.4.6 ? | 23:06 |
drobilla | There is no major version, so, 4.6. | 23:06 |
drobilla | I guess. | 23:06 |
drobilla | rgareus: Re: sord validate I guess lv2:Plugin could have a restriction for that. | 23:07 |
rgareus | ok. so I guess I'll just stick with major version = 0 for all my plugins. | 23:07 |
drobilla | (not directly, it is not an lv2 specific tool) | 23:07 |
drobilla | rgareus: What major version? | 23:07 |
rgareus | drobilla: the one in the git tag | 23:08 |
rgareus | same source | 23:08 |
drobilla | rgareus: Probably should use 1 | 23:08 |
rgareus | but new major version -> different URI | 23:08 |
drobilla | Usually plugin versions don't correspond directly to some package version | 23:08 |
rgareus | why not? | 23:08 |
drobilla | but if you have to invent one, and it's stable, use 1. 0 means unstable | 23:09 |
drobilla | Because most packages have more than one plugin | 23:09 |
rgareus | aah 'packages' yes. | 23:09 |
drobilla | or over life the "plugin" in package myplug might actually change, URI-wise, which would be a good time for a major version bump | 23:09 |
rgareus | source-repos . I work hard to keep them in sync. no need to invent extra numbers | 23:09 |
rgareus | for the "package collection" I use build-date as 'version'. WFM. | 23:10 |
rgareus | anyway. | 23:10 |
* rgareus goes back and revisists plugin versioning of all his plugins. there are some 'odd' micro versions to be re-tagged. | 23:11 | |
rgareus | drobilla: as for sord. if the lv2 ontholigy mandates the field, sord_validate could complain, can't it? | 23:11 |
rgareus | ontology, even. | 23:12 |
rgareus | aah screw it. | 23:12 |
rgareus | there are probably 5 plugins and 0 hosts who care about versions. | 23:14 |
drobilla | I could drop the odd micro thing I guess, but it means no dev version that aren't minor increases, but really, yeah. Reality is that nothing cares. | 23:18 |
drobilla | rgareus: Yes, at least now. I just added support for cardinality constraints last week | 23:18 |
rgareus | drobilla: ingen or lilv? | 23:19 |
drobilla | ... sord_validate | 23:19 |
drobilla | I considered exposing it and adding an lv2_validate to lilv, but then I have to deal with an added dependency and rework it to have an actually useful API, which I then need to care about the long term compatibility of | 23:24 |
drobilla | Which put it firmly back in the "maybe later" box :) | 23:24 |
drobilla | It will find a lot more errors now, though, so revalidating is probably wise | 23:24 |
Socapex | So, libAV is working, sound output is working, plugins activate. Back to bugging you guys :D | 23:57 |
Socapex | I have a general question about how the whole plugin workflow works. Here is how it works in my mind: I read the file buff, once I have a frame, feed that in a buffer and call plugin run, now I need to find a way to get noticed once plugin is done, then feed buffer to output. | 23:59 |
Socapex | Also, anything special a host has to do for UI. suil was for plugins correct? | 23:59 |
Generated by irclog2html.py 2.13.0 by Marius Gedminas - find it at mg.pov.lt!