Commit Graph

54 Commits (4c2d4e32addd95dedf01acf254db9b41b0813fdb)

Author SHA1 Message Date
Nat Goodspeed aa1bbe3277 Make LLProcess::Params streamable; use that in LLExternalEditor. 2012-01-22 10:58:16 -05:00
Nat Goodspeed b9a03b95aa On Windows, introduce viewer Job Object and assign children to it.
The idea is that, with the right flag settings, this will cause the OS to
terminate remaining viewer child processes when the viewer terminates --
whether or not it terminates intentionally. Of course, if LLProcess's caller
specifies autokill=false, e.g. to run the viewer updater, that asserts that we
WANT the child to persist beyond the viewer session itself.
2012-01-22 09:16:11 -05:00
Nat Goodspeed 6e214960ce Define LLProcess::Params; accept create(const LLSDParamAdapter<Params>&).
This allows callers to pass either LLSD formatted as before -- which all
callers still do -- or an actual LLProcess::Params block.
2012-01-20 20:19:50 -05:00
Nat Goodspeed f0dbb87833 Per Richard, replace LLProcessLauncher with LLProcess.
LLProcessLauncher had the somewhat fuzzy mandate of (1) accumulating
parameters with which to launch a child process and (2) sometimes tracking the
lifespan of the ensuing child process. But a valid LLProcessLauncher object
might or might not have ever been associated with an actual child process.
LLProcess specifically tracks a child process. In effect, it's a fairly thin
wrapper around a process HANDLE (on Windows) or pid_t (elsewhere), with
lifespan management thrown in. A static LLProcess::create() method launches a
new child; create() accepts an LLSD bundle with child parameters. So building
up a parameter bundle is deferred to LLSD rather than conflated with the
process management object.
Reconcile all known LLProcessLauncher consumers in the viewer code base,
notably the class unit tests.
2012-01-20 18:10:40 -05:00