Skip to content
Snippets Groups Projects
Commit a147dfbb authored by Jonathan Wilkes's avatar Jonathan Wilkes
Browse files

get the "-unique" flag and [pd~] object working in Purr Data

This patch makes it possible to have multiple running instances of Purr Data,
and to leverage that interface from Pd-l2ork to get [pd~] working on all
platforms

Some difficulties required revisions to [pd~] in Pd Vanilla's code
* use quoted path args for Windows when starting the [pd~] subprocess
* replace sys_havegui() from Pd Vanilla's recent "threadening" with sys_nogui

The "-unique" flag requires the OSX app bundle to be able to start by calling
the binary in Pd-l2ork.app/Contents/Resources/app.nw/bin/pd-l2ork. This should
also make it possible to run Purr Data on OSX both by using an app bundle
(where the GUI starts the Pd process) and by installing and running from the
command line (where the Pd process starts the GUI)

The "--user-data-dir" flag sets the directory for various nw.js state used
by a running instance. To prevent races nw.js requires that each running
instance have its own directory that is not shared with any other instances.

Setting the value for this flag has two important potential side-effects:

1. If you have a running instance and try to start an additional instance
   that has the same data directory, nw.js will just send an "open" event
   the first running instance and exit the 2nd instance gracefully. This is
   the default nw.js behavior and the default Pd-l2ork behavior as well.
2. If you have a running instance and try to start an additional instance
   with a different data directory than the first, you'll get a fully
   functional 2nd instance of nw.js running. This is the behavior we desire
   when the user runs pd-l2ork with the "-unique" flag.

In each case we set the data dir explicitly in order to get consistent
positional command line arguments in the GUI.

In normal mode Purr Data will use the default data dir as specified in the
nw.js docs for the particular platorm. Since the same default dir is used
each time Purr Data is run, there will be only one data dir that gets created.

When run with the "-unique" flag, Purr Data will append "-$portno" to the
default data directory, where $portno is the port Pd chose to communicate
with the GUI. That ensures that each separate instance of Purr Data can
get a unique data dir.

A side effect is that users may end up generating multiple data dirs that
don't get deleted on exit. But Pd starts searching for available ports in the
same range each time, and unless the user tries to run hundreds of instances
at once this directory spam shouldn't be too big of a problem.
parent aaf525e0
No related branches found
No related tags found
No related merge requests found
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment