Provisional fix for OpenSim event timeouts during dumping.

This is a provisional fix for #45. As discussed there, a proper fix will come later.
This commit is contained in:
Sei Lisa 2017-09-19 11:51:38 +02:00 committed by Sei-Lisa
parent e37f991801
commit 032e0369bf
2 changed files with 48 additions and 2 deletions

View file

@ -63,10 +63,12 @@ send_anim_info(integer broadcast)
llMessageLinked(LINK_THIS, 90055, (string)SCRIPT_CHANNEL, llDumpList2String([llList2String(MENU_LIST, ANIM_INDEX), llList2String(DATA_LIST, ANIM_INDEX), llList2String(POS_ROT_LIST, ANIM_INDEX * 2), llList2String(POS_ROT_LIST, ANIM_INDEX * 2 + 1), broadcast, speed_index], "|"));
}
// LSL::
Readout_Say(string say)
{
llMessageLinked(LINK_THIS, 90022, say, (string)SCRIPT_CHANNEL);
}
// ::LSL
list order_buttons(list buttons)
{
@ -598,6 +600,7 @@ default
onSit = llList2String(data, 14);
memory();
}
// LSL::
else if (num == 90020 && llList2String(data, 0) == "")
{
Readout_Say("V:" + llDumpList2String([version, MTYPE, ETYPE, SET, SWAP, SITTER_INFO, CUSTOM_TEXT, ADJUST_MENU, SELECT, AMENU, OLD_HELPER_METHOD], "|"));
@ -618,6 +621,41 @@ default
}
llMessageLinked(LINK_THIS, 90021, (string)SCRIPT_CHANNEL, "");
}
// ::LSL
/* OSS::
else if (num == 90020 && llList2String(data, 0) == "")
{
llMessageLinked(LINK_THIS, 90022, "V:" + llDumpList2String([version, MTYPE, ETYPE, SET, SWAP, SITTER_INFO, CUSTOM_TEXT, ADJUST_MENU, SELECT, AMENU, OLD_HELPER_METHOD], "|"), (string)SCRIPT_CHANNEL);
llMessageLinked(LINK_THIS, 90024, (string)SCRIPT_CHANNEL, "-1|D");
}
else if (num == 90024) // self-sent message to dump the next line
{
if (llList2String(data, 1) == "D")
{
if (++two < llGetListLength(MENU_LIST))
{
llSleep(0.5);
llMessageLinked(LINK_THIS, 90022, "S:" + llList2String(MENU_LIST, two) + "|" + llList2String(DATA_LIST, two), (string)SCRIPT_CHANNEL);
llMessageLinked(LINK_THIS, 90024, (string)SCRIPT_CHANNEL, (string)two + "|D");
return;
}
llMessageLinked(LINK_THIS, 90024, (string)SCRIPT_CHANNEL, "-1|P");
return;
}
if (++two < llGetListLength(MENU_LIST))
{
if (llList2Vector(POS_ROT_LIST, two * 2) != ZERO_VECTOR)
{
llSleep(0.2);
llMessageLinked(LINK_THIS, 90022, "{" + llList2String(MENU_LIST, two) + "}" + llList2String(POS_ROT_LIST, two * 2) + llList2String(POS_ROT_LIST, two * 2 + 1), (string)SCRIPT_CHANNEL);
}
llMessageLinked(LINK_THIS, 90024, (string)SCRIPT_CHANNEL, (string)two + "|P");
return;
}
llMessageLinked(LINK_THIS, 90021, (string)SCRIPT_CHANNEL, "");
return;
}
*/
}
}
}

View file

@ -36,7 +36,13 @@ def oss_process(filename):
import re
# Regex that replaces a line with its OSS version when one's specified.
os_re = re.compile(r'^( *)(.*?)// ?OSS::(.*)$', re.MULTILINE)
os_line_re = re.compile(r'^( *).*?// ?OSS::(.*)$', re.MULTILINE)
# Regex that removes lines between //LSL:: and //::LSL (can't begin on first line)
sl_block_re = re.compile(r'\n\s*// ?LSL::(?:[^\n]|\n(?![ \t]*// ?::LSL[^\n]*?(?=\n)))*\n[ \t]*// ?::LSL[^\n]*(?=\n)')
# Regex that removes /*OSS:: and its matching */ (can't begin on first line)
os_block_re = re.compile(r'\n\s*/\* ?OSS::[^\n]*(\n(?:[^\n]|\n(?![ \t]*\*/))*)\n[ \t]*\*/[^\n]*(?=\n)')
if filename is not None:
f = open(filename, "r");
@ -55,7 +61,9 @@ def oss_process(filename):
'b88526b7-3966-43fd-ae76-1e39881c86aa')
# TODO: Replace LockGuard texture UUIDs
s = os_re.sub(r'\1\3', s)
s = os_line_re.sub(r'\1\2', s)
s = sl_block_re.sub('', s)
s = os_block_re.sub(r'\1', s)
sys.stdout.write(s)
return 0