Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
wiki:user:emrum:jack_session_2_draft [2011/07/10 19:49] – updated emrumwiki:user:emrum:jack_session_2_draft [2011/07/20 19:58] (current) emrum
Line 1: Line 1:
 +====== Jack-Session v2.0 - brainstorm ======
  
 +===== jack-session v1.0 =====
  
-===== Jack-Session v2.0 - brainstorm =====+Links and references to the current 1.0 API.
  
-\\+  * [[http://trac.jackaudio.org/wiki/WalkThrough/Dev/JackSession|Developer Walk-through]] - the JACK-Session API 
 +  * [[http://trac.jackaudio.org/wiki/WalkThrough/User/jack_session|Basic Usage info]] 
 +  * [[http://hochstrom.endofinternet.org/files/pyjacksm-cast01.ogv|Example-usage Screencast]] 
 +  * [[http://jackaudio.org/files/docs/html/session_8h.html|Session API documentation]] - doxygen 
 +  * [[http://jackaudio.org/files/docs/html/group__SessionClientFunctions.html|Session Client Function API]] - doxygen 
 +  * [[http://tangostudio.tuxfamily.org/jacksession?lang=en|End-User documentation]] by TangoStudio. 
 + 
 +===== Brainstorm =====
  
 Be welcome, to add your opinion and idea below. Be welcome, to add your opinion and idea below.
Line 21: Line 30:
   * Conditions where connection-restoration fails - must be known (e.g. apps are not allowed to auto-connect jack-ports)   * Conditions where connection-restoration fails - must be known (e.g. apps are not allowed to auto-connect jack-ports)
 \\ \\
-  * sometimes eventually you don't want a JS-capable app to be part of the current session, although you're running it at the same time. JS should offer a flag for this (set by jack-client-app on user request): session_client->part_of_active_session = false;  (default is true, of course)+  * sometimes eventually you don't want a JS-capable app to be part of the current session, although you're running it at the same time. JS should offer a flag for this (set by jack-client-app on user request): <code>session_client->part_of_active_session = false;  //(default is true, of course) </code>
 \\ \\
  
-=== proposal jack-session v2.0 ===+===== Introduce new events =====
  
 <code C> <code C>
Line 31: Line 40:
 enum JackSessionEventType { enum JackSessionEventType {
  ...  ...
-    JackSessionCloseAndLoadNew = 4, +    JackSessionCloseAndLoadNew = 4,    // load a new session, without quitting applications (if possible) 
-    JackSessionCloseWithoutQuit = 5+    JackSessionCloseWithoutQuit = 5,   // close session-document without quitting applications 
 +    JackSessionCloseWithQuit = 6       // close the session and quit everything
 } }
  
Line 60: Line 70:
  
  
 +===== Replace the command_line with an appID (cross-platform) =====
  
 - **saving a command line with the session is a very bad idea.** - **saving a command line with the session is a very bad idea.**
Line 140: Line 151:
 \\ \\
  
-=== Jack-Session - Best Practice Section ===+===== (Multi) Session Handling =====  
 +\\ 
 + 
 +\\ 
 +Can multi-session handling work reliably ? \\ 
 +Is it too complicated ? \\ 
 +Can a single-session be open multiple times ? \\ 
 +\\ 
 +The current behavior, to me, feels strange and unexpected: 
 +Opening a running session (twice) opens another set of windows. 
 +What's that ? Do I have a "doubled" session now ? 
 +It is very opaque, unclear, which window belongs to which session.  
 +Is that how it should be, is that what we'd want ? 
 +\\ 
 +\\ 
 +An idea:\\ 
 +Add a sessionID. \\ 
 +The client would allow selecting the session it belongs to (with a drop-down-box). This would allow multiple sessions to be open. 
 +Every session should have an associated color (light, water-color) and a short description string (user-assigned), the applications can use to visualize dependency to a particular session.\\ 
 +\\ 
 +For example I could have a "light-green" session with hydrogen and qsynth and a "light-orange" session with audacity and lv2host running at the same time. \\ 
 +\\ 
 +In qjackctl, there would be an option "create new session" with a dialog, where I would be able to select a color, enter a string, for a new session. 
 + 
 +\\ 
 +\\ 
 +**Store connections:** 
 +\\ 
 +  * Every saved sessions stores all connections currently active (when hitting save). 
 +\\ 
 +**Restoration of connections** in a multi-session environment. 
 +\\ 
 +  * Start with no connections, nothing connected (keep existing connections ? rather not - they could conflict ?) 
 +  * Load first session    => connections of __applications belonging to__ that particular session __are restored__ (only) 
 +  * Load a second session => the same 
 +  * __Restore additionally__ saved connections __if the user requests__, from an already loaded session. 
 +\\ 
 +Every app has a drop-down-box, where one of the loaded sessions can be selected, i.o. to become a member. 
 +\\ 
 +\\ 
 + 
 +===== Jack-Session - Best Practice Section ===== 
 \\ \\
  
Line 151: Line 203:
   * don't use single character parameters in the command_line  ==>  bad:\\ params -a=yes and -A=no is the same on some platforms, rather --autoconnect=yes, --artefacts=no   * don't use single character parameters in the command_line  ==>  bad:\\ params -a=yes and -A=no is the same on some platforms, rather --autoconnect=yes, --artefacts=no
 \\ \\
-  *  apps are not allowed to auto-connect jack-ports+  * with the session, applications should **restore their window position** and state (maximized, curled up, minimized, etc.) 
 \\ \\
   * apps are not allowed to auto-connect jack-ports, when using jack-session (user option)   * apps are not allowed to auto-connect jack-ports, when using jack-session (user option)
Line 160: Line 212:
 \\ \\
  
-=== Comments and additional ideas ===+===== Comments and additional ideas ===== 
  
  
wiki/user/emrum/jack_session_2_draft.1310320149.txt.gz · Last modified: 2011/07/10 19:49 by emrum