death.crafter wrote: ↑June 25th, 2021, 6:46 pmOkay just one last time to make myself clear. I am talking about the internal operations here.
Me too - but rest assured, this time I understood perfectly what you were trying to say. Unfortunately, it doesn't make sense from a practical (and also internal) behavior, no offense - see below.
death.crafter wrote: ↑June 25th, 2021, 6:46 pmFor example,
["#@#nircmd.exe" SendKeyPress lwin+prtsc"] wouldn't wait for ActionTimer to complete the task.
Of course it won't, because ActionTimer is executed in a separate thread from the main Rainmeter process - bad example. It's one of the few things that are "independent" from that point of view:
Executes a series of Rainmeter actions independent of the normal skin Update cycle. This can allow the series of actions to be executed faster (or slower) than the rate defined in Update in [Rainmeter] and can be executed as fast as 1 millisecond apart.
What ActionTimer does is execute the list of actions defined in ActionListN, one after the other, in a separate thread outside the normal Update cycle, as fast as it possibly can.
Since the actions in ActionListN are executed in a separate thread from the main Rainmeter process, the skin will carry on updating normally, while the ActionTimer plugin will control the actions in the list.
Source:
ActionTimer.
death.crafter wrote: ↑June 25th, 2021, 6:46 pmNow what I am saying is that these different parts are executed in series. If the one of the actions is a group of multiple actions then the next action in the original series will not wait for all the actions in the previous one to get completed.
Let's suppose you are right, for the sake of the argument. Then this would:
- make the
literal !Delay bang (which works, btw) in a group of multiple actions (say, in a String measure) impossible, since the the next action in the original series will execute before the delay completes and won't wait for all the actions in the previous group to get completed; this is not the case, as the issue is present only for nested variable scenarios
- make the whole Rainmeter action sequence system imposible, i.e. you wouldn't be able to do a [!SetOption SomeMeter SomeOption SomeValue][!UpdateMeter SomeMeter][!Redraw], because !UpdateMeter or !Redraw will run before the !SetOption and all that, depending on which action (or set of actions in a [part], it doesn't matter) takes less to complete; this would be true for more complex group of actions like you said, I only used simpletons to make things compact here; obviously, this doesn't happen either in practice
Anyway, this whole thing doesn't answer one simple question: if the literal !Delay in the middle of some action group works, why the heck it doesn't when within a section variable? When all things parsed, it's the same damn action list string.