Bei Gewichtsaenderung Content-Cache invalidieren
In normalen Gegenstaenden (thing) wurde bislang
vergessen, bei einer Aenderung von P_WEIGHT den
Content-Cache zu invalidieren. Dies wird hier
jetzt ergaenzt.
Change-Id: I4d976e810496cf8dd53b4338ce55e9b198ff25c6
diff --git a/std/thing/restrictions.c b/std/thing/restrictions.c
index 83b541d..af8704a 100644
--- a/std/thing/restrictions.c
+++ b/std/thing/restrictions.c
@@ -23,12 +23,25 @@
protected void create_super() {
set_next_reset(-1);
-}
+}
-// P_TOTAL_WEIGHT bei Nicht-Containern auf P_WEIGHT umleiten
-static int _set_weight(int weight) {
- return SetProp(P_TOTAL_WEIGHT,
- Set(P_WEIGHT, weight, F_VALUE) );
+static int _set_weight(int weight)
+{
+ // Content-Cache invalidieren.
+ object env = this_object();
+ while ( objectp(env = environment(env)) )
+ // Ja. Man ruft die _set_xxx()-Funktionen eigentlich nicht direkt auf.
+ // Aber das Gewichtssystem ist schon *so* rechenintensiv und gerade der
+ // P_LAST_CONTENT_CHANGE-Cache wird *so* oft benoetigt, dass es mir
+ // da um jedes bisschen Rechenzeit geht.
+ // Der Zweck heiligt ja bekanntlich die Mittel. ;-)
+ //
+ // Tiamak
+ env->_set_last_content_change();
+
+ // P_TOTAL_WEIGHT bei Nicht-Containern auf P_WEIGHT umleiten
+ SetProp(P_TOTAL_WEIGHT, weight);
+ return Set(P_WEIGHT, weight, F_VALUE);
}
// P_X_ATTR_MOD aendern (Attributaenderungen durch Ausruestung)