~ubuntu-branches/ubuntu/wily/oolite/wily-proposed

« back to all changes in this revision

Viewing changes to src/Core/Scripting/OOJavaScriptEngine.m

  • Committer: Package Import Robot
  • Author(s): Nicolas Boulenguez
  • Date: 2011-12-22 00:22:39 UTC
  • mfrom: (1.2.2)
  • Revision ID: package-import@ubuntu.com-20111222002239-pr3upeupp4jw1psp
Tags: 1.76-1
* New upstream.
* watch: scan upstream stable releases instead of dev snapshots.
* control: use default gobjc instead of explicit 4.6.
* rules: use dpkg-dev build flags.

Show diffs side-by-side

added added

removed removed

Lines of Context:
380
380
                JSContext *context = OOJSAcquireContext();
381
381
                JS_ClearScope(gOOJSMainThreadContext, _globalObject);
382
382
                
383
 
                OOJSFrameCallbacksRemoveAll();
384
 
                
385
383
                _globalObject = NULL;
386
384
                _objectClass = NULL;
387
385
                _stringClass = NULL;
402
400
}
403
401
 
404
402
 
405
 
- (void) reset
 
403
- (BOOL) reset
406
404
{
407
 
        NSAssert(gOOJSMainThreadContext != NULL, @"Can't reset JavaScript engine at this point.");
 
405
        NSAssert(gOOJSMainThreadContext != NULL, @"JavaScript engine not active. Can't reset.");
 
406
        
 
407
        OOJSFrameCallbacksRemoveAll();
 
408
        
 
409
# if 0
 
410
        // deferred JS reset - test harness.
 
411
        static int counter = 3;         // loading a savegame with different strict mode calls js reset twice
 
412
        if (counter-- == 0) {
 
413
        counter = 3;
 
414
        OOLog(@"script.javascript.init.error", @"JavaScript processes still pending. Can't reset JavaScript engine.");
 
415
                return NO;
 
416
        }
 
417
        else
 
418
        {
 
419
                OOLog(@"script.javascript.init", @"JavaScript reset successful.");
 
420
        }
 
421
#endif
 
422
                
408
423
#if JS_THREADSAFE
409
 
        NSAssert(!JS_IsInRequest(gOOJSMainThreadContext), @"Can't reset JavaScript engine while running JavaScript.");
 
424
        //NSAssert(!JS_IsInRequest(gOOJSMainThreadContext), @"JavaScript processes still pending. Can't reset JavaScript engine.");
 
425
        
 
426
        if (JS_IsInRequest(gOOJSMainThreadContext))
 
427
        {
 
428
                // some threads are still pending, this should mean timers are still being removed.
 
429
                OOLog(@"script.javascript.init.error", @"JavaScript processes still pending. Can't reset JavaScript engine.");
 
430
                return NO;
 
431
        }
 
432
        else
 
433
        {
 
434
                OOLog(@"script.javascript.init", @"JavaScript reset successful.");
 
435
        }
410
436
#endif
411
437
        
412
438
        JSContext *context = OOJSAcquireContext();
421
447
        OOJSRelinquishContext(context);
422
448
        
423
449
        [self garbageCollectionOpportunity];
 
450
        return YES;
424
451
}
425
452
 
426
453
 
428
455
{
429
456
        sSharedEngine = nil;
430
457
        
 
458
        OOJSFrameCallbacksRemoveAll();
 
459
        
431
460
        [self destroyMainThreadContext];
432
461
        JS_DestroyRuntime(_runtime);
433
462