Houston4444 / RaySession

Session manager for linux musical programs
GNU General Public License v2.0
166 stars 18 forks source link

Handling gui states #168

Open grammoboy2 opened 1 year ago

grammoboy2 commented 1 year ago

Hi, I was wondering how RaySession handles gui states, as it stores gui state in it's session file.

I saw the setting in RaySession 'remember optional gui states'. When I set it on, I saw Patroneo launching with gui shown, while Patroneo hides it's gui, when this setting is off. Reading your manual, this is expected I think. But when launching drumkv1 or seq192 for the first time, with this setting on, they both seems to launch with gui hidden. This is unexpected as I understand it.

In general I was interested if Raysession would 'overrule' the gui states restored by the responsible clients (as the nsm api states) and if that can be done reliable. So it seems it doesn't really overrule here, but just sends a 'show gui' message after first launch. Then I was wondering: is there no timing conflict between the server (sends show to client) and the client (sends hide to server)?

"This option only concerns NSM clients capable of showing/hiding their graphical interface. Without this option, some of them will always start hidden, others will remember if they were visible when they were last saved. With this option enabled, the graphical interfaces will be displayed when the session is ready if they were visible during the last save or if the client has never been launched."

grammoboy2 commented 1 year ago

Did some tests with a custom setup and it's possible to control the clients GUI states, when a session opens and when a new client is added to a session. For some time I was afraid that the architecturally preference to store all state in the client's own project format of the original developer, would hit us here, but this also works without storing the clients gui state in the sessionfile. So far it seems to be reliable, only Guitarix won't comply, but that's clearly a Guitarix issue (reported). So I think it's also a RaySession issue (if I didn't misunderstood the feature) that some clients hide and some do show with 'remember optional gui states' is enabled.

grammoboy2 commented 1 year ago

Ah shoot, Tembro doesn't work. It sends it's gui hidden message really late after replying to open and after it got the message to show gui from the server. Would be really bad news if this isn't reliable.

"If the client has specified the optional-gui capability, then it MUST send this message whenever the state of visibility of the optional GUI has changed. It also MUST send this message after it's announce message to indicate the initial visibility state of the optional GUI. "

edit: might be good news that Tembro is failing here actually, cause it seems to proof that overruling clients initial gui visibility state is not 100% reliable.