Well If I use a mutex it locks up.
Without a major (2-3 month) re-write of the code path as it is very long and impacts plugins etc I am not sure what else to try.
The code
looks up the current selected service item
Selects the next one.
Flushes the events to add a cursor
Adds a service item
This signals plugins twice to turn off and then hand new service item.
selects the next service item to preview it.
Flushes the events to remove the cursor
The Keyboard will start this flow BEFORE the previous has finished so you get a number of calling chains running at the same time.
Well If I use a mutex it locks up.
Without a major (2-3 month) re-write of the code path as it is very long and impacts plugins etc I am not sure what else to try.
The code
looks up the current selected service item
Selects the next one.
Flushes the events to add a cursor
Adds a service item
This signals plugins twice to turn off and then hand new service item.
selects the next service item to preview it.
Flushes the events to remove the cursor
The Keyboard will start this flow BEFORE the previous has finished so you get a number of calling chains running at the same time.