"singleton" instance per plugin instance / determining plugin instance anywhere in code?


#1

hi.

i want to replace all my modal windows with non modal ones. the idea is to have a generalized plugin frame component and then showing a pseudo modal dialog insinde it from anywhere in the code.

my idea is to have a pointer to the plugin window of the current plugin instance and go from there (broadly speaking, not the raw pointer of course).

I read a few things about "static" and share librarys, and it seems kind of hopeless with regular singletons. is there any way i can determine the current instance of my plugin form anywhere(!) in the code?

I have a way to do it form anywhere in the UI (going upwards the hirarchy that is), but not from the backend.

any other ideas about this?

cheers!

 

JM


#2

There's no such thing as a "current" plugin instance. The host may have dozens of instances open, and be using all of them. If you have an object that needs to refer to a particular instance, you need to make sure it has some kind of pointer to it.


#3

yes, of course it might have multiple instances. with standalone applications there is of course the "getInstance" method, which gets me the "current" instance. i suppose in this case the instances are differentiated by their proccess(handle)?

anyway, i was afraid that this is the case, but still can't quite believe it. so if i want to do what i proposed, it is happy pointer passing time i guess?

is there really no way of instance wide "global" variables :O ?  i suppose my internal design is not the best, but the software is great from a user perspective, so i'd like to fix and release it :).

thanks for the reply jules! :)

 

JM


#4

Hi, facing the same problem I just made a PluginContext object that I can retrieve from everywhere in either the ui or the processor part of the plugin. Then just store your semi-singleton like instance into that pluginContext object. It is very temptating to use a host singleton instance instead but as it might be relevant to either have a "one plugin scope" or that each host might in some case run the plugin in a separated thread it's just unsafe.