aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/YEngine/XMRInstBackend.cs
diff options
context:
space:
mode:
authorUbitUmarov2018-02-25 00:18:41 +0000
committerUbitUmarov2018-02-25 00:18:41 +0000
commit85b973ce1d8dc034546c9c572a7f57e73b6017d3 (patch)
treea03332d9233e3788f8bc2e535b6863d8fe195b0b /OpenSim/Region/ScriptEngine/YEngine/XMRInstBackend.cs
parentYengine fix its section name on opensim.ini.example (diff)
downloadopensim-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.cs79
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();