diff options
author | UbitUmarov | 2018-02-25 00:18:41 +0000 |
---|---|---|
committer | UbitUmarov | 2018-02-25 00:18:41 +0000 |
commit | 85b973ce1d8dc034546c9c572a7f57e73b6017d3 (patch) | |
tree | a03332d9233e3788f8bc2e535b6863d8fe195b0b /OpenSim/Region/ScriptEngine/YEngine/XMRInstBackend.cs | |
parent | Yengine fix its section name on opensim.ini.example (diff) | |
download | opensim-SC-85b973ce1d8dc034546c9c572a7f57e73b6017d3.zip opensim-SC-85b973ce1d8dc034546c9c572a7f57e73b6017d3.tar.gz opensim-SC-85b973ce1d8dc034546c9c572a7f57e73b6017d3.tar.bz2 opensim-SC-85b973ce1d8dc034546c9c572a7f57e73b6017d3.tar.xz |
Y(xmr)engine cosmetics...
Diffstat (limited to 'OpenSim/Region/ScriptEngine/YEngine/XMRInstBackend.cs')
-rw-r--r-- | OpenSim/Region/ScriptEngine/YEngine/XMRInstBackend.cs | 79 |
1 files changed, 23 insertions, 56 deletions
diff --git a/OpenSim/Region/ScriptEngine/YEngine/XMRInstBackend.cs b/OpenSim/Region/ScriptEngine/YEngine/XMRInstBackend.cs index fb5c75e..833211f 100644 --- a/OpenSim/Region/ScriptEngine/YEngine/XMRInstBackend.cs +++ b/OpenSim/Region/ScriptEngine/YEngine/XMRInstBackend.cs | |||
@@ -249,22 +249,16 @@ namespace OpenSim.Region.ScriptEngine.Yengine | |||
249 | { | 249 | { |
250 | lock(m_QueueLock) | 250 | lock(m_QueueLock) |
251 | { | 251 | { |
252 | /* | 252 | // Say how long to sleep. |
253 | * Say how long to sleep. | ||
254 | */ | ||
255 | m_SleepUntil = DateTime.UtcNow + TimeSpan.FromMilliseconds(ms); | 253 | m_SleepUntil = DateTime.UtcNow + TimeSpan.FromMilliseconds(ms); |
256 | 254 | ||
257 | /* | 255 | // Don't wake on any events. |
258 | * Don't wake on any events. | ||
259 | */ | ||
260 | m_SleepEventMask1 = 0; | 256 | m_SleepEventMask1 = 0; |
261 | m_SleepEventMask2 = 0; | 257 | m_SleepEventMask2 = 0; |
262 | } | 258 | } |
263 | 259 | ||
264 | /* | 260 | // The compiler follows all calls to llSleep() with a call to CheckRun(). |
265 | * The compiler follows all calls to llSleep() with a call to CheckRun(). | 261 | // So tell CheckRun() to suspend the microthread. |
266 | * So tell CheckRun() to suspend the microthread. | ||
267 | */ | ||
268 | suspendOnCheckRunTemp = true; | 262 | suspendOnCheckRunTemp = true; |
269 | } | 263 | } |
270 | 264 | ||
@@ -327,10 +321,8 @@ namespace OpenSim.Region.ScriptEngine.Yengine | |||
327 | if(callMode == CallMode_NORMAL) | 321 | if(callMode == CallMode_NORMAL) |
328 | goto findevent; | 322 | goto findevent; |
329 | 323 | ||
330 | /* | 324 | // Stack frame is being restored as saved via CheckRun...(). |
331 | * Stack frame is being restored as saved via CheckRun...(). | 325 | // Restore necessary values then jump to __call<n> label to resume processing. |
332 | * Restore necessary values then jump to __call<n> label to resume processing. | ||
333 | */ | ||
334 | sv = RestoreStackFrame("xmrEventDequeue", out callNo); | 326 | sv = RestoreStackFrame("xmrEventDequeue", out callNo); |
335 | sleepUntil = DateTime.Parse((string)sv[0]); | 327 | sleepUntil = DateTime.Parse((string)sv[0]); |
336 | returnMask1 = (int)sv[1]; | 328 | returnMask1 = (int)sv[1]; |
@@ -353,9 +345,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine | |||
353 | } | 345 | } |
354 | throw new ScriptBadCallNoException(callNo); | 346 | throw new ScriptBadCallNoException(callNo); |
355 | 347 | ||
356 | /* | 348 | // Find first event that matches either the return or background masks. |
357 | * Find first event that matches either the return or background masks. | ||
358 | */ | ||
359 | findevent: | 349 | findevent: |
360 | Monitor.Enter(m_QueueLock); | 350 | Monitor.Enter(m_QueueLock); |
361 | for(lln = m_EventQueue.First; lln != null; lln = lln.Next) | 351 | for(lln = m_EventQueue.First; lln != null; lln = lln.Next) |
@@ -369,9 +359,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine | |||
369 | goto remfromq; | 359 | goto remfromq; |
370 | } | 360 | } |
371 | 361 | ||
372 | /* | 362 | // Nothing found, sleep while one comes in. |
373 | * Nothing found, sleep while one comes in. | ||
374 | */ | ||
375 | m_SleepUntil = sleepUntil; | 363 | m_SleepUntil = sleepUntil; |
376 | m_SleepEventMask1 = mask1; | 364 | m_SleepEventMask1 = mask1; |
377 | m_SleepEventMask2 = mask2; | 365 | m_SleepEventMask2 = mask2; |
@@ -382,9 +370,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine | |||
382 | CheckRunQuick(); | 370 | CheckRunQuick(); |
383 | goto checktmo; | 371 | goto checktmo; |
384 | 372 | ||
385 | /* | 373 | // Found one, remove it from queue. |
386 | * Found one, remove it from queue. | ||
387 | */ | ||
388 | remfromq: | 374 | remfromq: |
389 | m_EventQueue.Remove(lln); | 375 | m_EventQueue.Remove(lln); |
390 | if((uint)evc1 < (uint)m_EventCounts.Length) | 376 | if((uint)evc1 < (uint)m_EventCounts.Length) |
@@ -393,16 +379,12 @@ namespace OpenSim.Region.ScriptEngine.Yengine | |||
393 | Monitor.Exit(m_QueueLock); | 379 | Monitor.Exit(m_QueueLock); |
394 | m_InstEHEvent++; | 380 | m_InstEHEvent++; |
395 | 381 | ||
396 | /* | 382 | // See if returnable or background event. |
397 | * See if returnable or background event. | ||
398 | */ | ||
399 | if((((uint)evc1 < (uint)32) && (((returnMask1 >> evc1) & 1) != 0)) || | 383 | if((((uint)evc1 < (uint)32) && (((returnMask1 >> evc1) & 1) != 0)) || |
400 | (((uint)evc2 < (uint)32) && (((returnMask2 >> evc2) & 1) != 0))) | 384 | (((uint)evc2 < (uint)32) && (((returnMask2 >> evc2) & 1) != 0))) |
401 | { | 385 | { |
402 | /* | 386 | // Returnable event, return its parameters in a list. |
403 | * Returnable event, return its parameters in a list. | 387 | // Also set the detect parameters to what the event has. |
404 | * Also set the detect parameters to what the event has. | ||
405 | */ | ||
406 | int plen = evt.Params.Length; | 388 | int plen = evt.Params.Length; |
407 | object[] plist = new object[plen + 1]; | 389 | object[] plist = new object[plen + 1]; |
408 | plist[0] = (LSL_Integer)evc1; | 390 | plist[0] = (LSL_Integer)evc1; |
@@ -421,10 +403,8 @@ namespace OpenSim.Region.ScriptEngine.Yengine | |||
421 | return new LSL_List(plist); | 403 | return new LSL_List(plist); |
422 | } | 404 | } |
423 | 405 | ||
424 | /* | 406 | // It is a background event, simply call its event handler, |
425 | * It is a background event, simply call its event handler, | 407 | // then check event queue again. |
426 | * then check event queue again. | ||
427 | */ | ||
428 | callNo = 1; | 408 | callNo = 1; |
429 | __call1: | 409 | __call1: |
430 | ScriptEventHandler seh = m_ObjCode.scriptEventHandlerTable[stateCode, evc1]; | 410 | ScriptEventHandler seh = m_ObjCode.scriptEventHandlerTable[stateCode, evc1]; |
@@ -450,28 +430,21 @@ namespace OpenSim.Region.ScriptEngine.Yengine | |||
450 | this.eventCode = saveEventCode; | 430 | this.eventCode = saveEventCode; |
451 | } | 431 | } |
452 | 432 | ||
453 | /* | 433 | // Keep waiting until we find a returnable event or timeout. |
454 | * Keep waiting until we find a returnable event or timeout. | ||
455 | */ | ||
456 | checktmo: | 434 | checktmo: |
457 | if(DateTime.UtcNow < sleepUntil) | 435 | if(DateTime.UtcNow < sleepUntil) |
458 | goto findevent; | 436 | goto findevent; |
459 | 437 | ||
460 | /* | 438 | // We timed out, return an empty list. |
461 | * We timed out, return an empty list. | ||
462 | */ | ||
463 | return emptyList; | 439 | return emptyList; |
464 | } | 440 | } |
465 | finally | 441 | finally |
466 | { | 442 | { |
467 | if(callMode != CallMode_NORMAL) | 443 | if(callMode != CallMode_NORMAL) |
468 | { | 444 | { |
469 | 445 | // Stack frame is being saved by CheckRun...(). | |
470 | /* | 446 | // Save everything we need at the __call<n> labels so we can restore it |
471 | * Stack frame is being saved by CheckRun...(). | 447 | // when we need to. |
472 | * Save everything we need at the __call<n> labels so we can restore it | ||
473 | * when we need to. | ||
474 | */ | ||
475 | sv = CaptureStackFrame("xmrEventDequeue", callNo, 9); | 448 | sv = CaptureStackFrame("xmrEventDequeue", callNo, 9); |
476 | sv[0] = sleepUntil.ToString(); // needed at __call0,__call1 | 449 | sv[0] = sleepUntil.ToString(); // needed at __call0,__call1 |
477 | sv[1] = returnMask1; // needed at __call0,__call1 | 450 | sv[1] = returnMask1; // needed at __call0,__call1 |
@@ -606,22 +579,16 @@ namespace OpenSim.Region.ScriptEngine.Yengine | |||
606 | */ | 579 | */ |
607 | public override void StateChange() | 580 | public override void StateChange() |
608 | { | 581 | { |
609 | /* | 582 | // Cancel any llListen()s etc. |
610 | * Cancel any llListen()s etc. | 583 | // But llSetTimerEvent() should persist. |
611 | * But llSetTimerEvent() should persist. | ||
612 | */ | ||
613 | object[] timers = m_XMRLSLApi.acm.TimerPlugin.GetSerializationData(m_ItemID); | 584 | object[] timers = m_XMRLSLApi.acm.TimerPlugin.GetSerializationData(m_ItemID); |
614 | AsyncCommandManager.RemoveScript(m_Engine, m_LocalID, m_ItemID); | 585 | AsyncCommandManager.RemoveScript(m_Engine, m_LocalID, m_ItemID); |
615 | m_XMRLSLApi.acm.TimerPlugin.CreateFromData(m_LocalID, m_ItemID, UUID.Zero, timers); | 586 | m_XMRLSLApi.acm.TimerPlugin.CreateFromData(m_LocalID, m_ItemID, UUID.Zero, timers); |
616 | 587 | ||
617 | /* | 588 | // Tell whoever cares which event handlers the new state has. |
618 | * Tell whoever cares which event handlers the new state has. | ||
619 | */ | ||
620 | m_Part.SetScriptEvents(m_ItemID, GetStateEventFlags(stateCode)); | 589 | m_Part.SetScriptEvents(m_ItemID, GetStateEventFlags(stateCode)); |
621 | 590 | ||
622 | /* | 591 | // Clear out any old events from the queue. |
623 | * Clear out any old events from the queue. | ||
624 | */ | ||
625 | lock(m_QueueLock) | 592 | lock(m_QueueLock) |
626 | { | 593 | { |
627 | m_EventQueue.Clear(); | 594 | m_EventQueue.Clear(); |