Sat Mar 13 01:44:07 EST 2010 laz...@gm...
* use `runCommand` instead `forkProcess` for spawn process safely
Ignore-this: 67cdbdcc06120cf98dde089405157655
hunk ./demo/embbeded/Embedded.hs 1
--- Use GtkSocket and GtkPlug for cross-process embedded.
+-- |Use GtkSocket and GtkPlug for cross-process embedded.
hunk ./demo/embbeded/Embedded.hs 5
+--
+-- Note:
+--
+-- Don't use `forkProcess` in gtk2hs!
+-- Because `forkProcess` haven't any protect when spawn process, [_$_]
+-- so you will got two processes *race condition*, when those two
+-- process access same resource will crash your program.
+-- Solution is use `runProcess` or `runCommand` instead, [_$_]
+-- Because those functions add MVar to make sure two processes won't
+-- get *race condition* problem.
+--
hunk ./demo/embbeded/Embedded.hs 19
-import System.Posix.Process
+import System.Process
hunk ./demo/embbeded/Embedded.hs 74
- forkProcess (executeFile path False [show $ fromNativeWindowId id] Nothing)
+ runCommand $ path ++ " " ++ (show $ fromNativeWindowId id) -- don't use `forkProcess` !
|