bennetthardwick / rust-obs-plugins

A safe wrapper around the OBS API, useful for creating OBS sources, filters and effects.
GNU General Public License v2.0
186 stars 34 forks source link

How can I access current module from the source? #27

Open erickskrauch opened 2 years ago

erickskrauch commented 2 years ago

Hi.

I'm developing a module that has a filter and a source. They must be interconnected. I assume that the connection should be done through the structure of the module. But I can't find any way how I can get the current module from my filter and source.

OBS has a function obs_current_module(), but it is not suitable for my task, because it only returns a pointer, which I still can't somehow cast to the Rust's module data struct.

Could you please help me with this task? I'm still just learning Rust and don't understand a lot.

bennetthardwick commented 2 years ago

Hi @erickskrauch I'm not sure what the best way to do this is. If you have any examples in other languages that do this I can try and create an API that can help.

I haven't tested this but you might be able to create a static variable to store your shared state or channel. Kinda like how the module is stored:

https://github.com/bennetthardwick/rust-obs-plugins/blob/08d66c684307bc804c9421ef2b0b4b963ceb4f4c/src/module.rs#L86-L103

If that doesn't work you could create a named pipe but that would probably have performance implications.

Let me know if the static variable works for you 👍🏻