|
|||||||
![]() |
|
|
Thread Tools |
|
|
|
|
HardwareHeaven Extreme Member
Join Date: Jan 2005
Posts: 5,563
Rep Power: 62 ![]() ![]() ![]() ![]() ![]() ![]() |
Well, it almost worked, but there are still a couple of issues.
I need to show the options dialog when it is not restoring a saved config, otherwise I use the saved settings. What I was doing was setting a flag (that is initialized to false in init) in the IKX_LOAD_SETTINGS event (because that event only fires when restoring a saved config and thus is the only place I can set the flag), but I need an event that always comes after that event, where I can test the flag, and show the options dialog if the flag is not set (if IKX_LOAD_SETTINGS did not fire). IKX_LOAD load comes before IKX_LOAD_SETTINGS so I cannot use that (additionally IKX_LOAD does not fire during plugin loading when starting kX Mixer). I thought maybe I would try using IKX_CONNECT, but that event does not seem to fire at all. As it is now, the options dialog is still shown when restoring a saved config (except when starting kX Mixer (and testing the flag in IKX_LOAD), because the IKX_LOAD event does not fire at all). Additionally, using update_microcode does update the microcode correctly, and does restore the connections properly when loading a saved config (from file), but it loses it's output connections when the plugin loads when starting kX Mixer. Basically it all comes down to the fact that I need to do something like this: if (bLoadSettings == false) ShowOptionsDialog(); // updates microcode based on selected options else RestoreSavedSettings(); // updates microcode based on saved settings The problem is where to do the above, such that the flag is valid, and where it can still update the microcode and restore the connections (if restoring saved settings). I will try a few more things as it is so close to working now. I gotta trace the order of all the relevant events and function calls under different loading scenarios and see if I can find something that will work for all of them (I allready did so with init(), IKX_LOAD, IKX_LOAD_SETTINGS, and load_plugin_settings(), which is how I know that IKX_LOAD fires before IKX_LOAD_SETTINGS, and that it doesn't fire when starting kX Mixer, etc, but I will look at some of the other events and functions). |
|
|
|
|
|
|
|
HardwareHeaven Extreme Member
Join Date: Jan 2005
Posts: 5,563
Rep Power: 62 ![]() ![]() ![]() ![]() ![]() ![]() |
Here is the event/function ordering used under the 3 different plugin loading scenarios:
*** Loading Plugin normally *** EchoFx: init EchoFx: request_microcode EchoFx: IKX_LOAD EchoFx: IKX_TRANSLATE EchoFx: IKX_ENABLE *** Starting kX Mixer with plugin previously loaded *** EchoFx: init EchoFx: request_microcode EchoFx: IKX_LOAD_SETTINGS EchoFx: load_plugin_settings EchoFx: IKX_SAVE_SETTINGS EchoFx: save_plugin_settings *** loading saved config that contains plugin *** EchoFx: init EchoFx: request_microcode EchoFx: IKX_LOAD EchoFx: IKX_LOAD_SETTINGS EchoFx: load_plugin_settings I decided to try checking the flag in IKX_TRANSLATE since this event only fires during the loading process if the plugin is loaded normally. This seems to work as a temporary solution. The options dialog appears to only be shown when it should be, and the microcode appears to be updated correctly, but I still have the issue of the output connections not being restored when the plugin is loaded along with the startup of kxmixer (and further testing is required to see if any other issues popup). I am not sure that there is anything I can do regarding restoring the connections under that loading scenario. |
|
|
|
![]() |
| Thread Tools | |
|
|