]> granicus.if.org Git - python/commitdiff
On OSX the finder will return from an open() event before the application
authorJack Jansen <jack.jansen@cwi.nl>
Fri, 28 Mar 2003 23:42:37 +0000 (23:42 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Fri, 28 Mar 2003 23:42:37 +0000 (23:42 +0000)
has actually entered its event loop. As a stopgap, allow for a 10 second
grace period.

Lib/plat-mac/aetools.py

index 8ac293d642d3dcf3a4e435ca715cd0c7c46bdcdd..06395416a6cd233cb1eac7c851e41d8d7f5132f1 100644 (file)
@@ -26,12 +26,16 @@ from Carbon import AE
 from Carbon import AppleEvents
 import MacOS
 import sys
+import time
 
 from aetypes import *
 from aepack import packkey, pack, unpack, coerce, AEDescType
 
 Error = 'aetools.Error'
 
+# Amount of time to wait for program to be launched
+LAUNCH_MAX_WAIT_TIME=10
+
 # Special code to unpack an AppleEvent (which is *not* a disguised record!)
 # Note by Jack: No??!? If I read the docs correctly it *is*....
 
@@ -174,6 +178,14 @@ class TalkTo:
                        self.send('ascr', 'noop')
                except AE.Error:
                        _launch(self.target_signature)
+                       for i in range(LAUNCH_MAX_WAIT_TIME):
+                               try:
+                                       self.send('ascr', 'noop')
+                               except AE.Error:
+                                       pass
+                               else:
+                                       break
+                               time.sleep(1)
                        
        def start(self):
                """Deprecated, used _start()"""