Also wenn ein Plugin einen wiederholenden Timer, bei dem der erste Tag der Aufzeichnung am 1.8.2025 sein soll, mit Matches(2027) aufruft, verändert das den Timer und die erste Aufzeichnung ist schon am ersten passenden Wochentag, und nicht erst am 1.8.2025.
Aufrufe von Matches() mit einer Zeit in der Zukunft sind künftig nicht mehr zulässig. Es wird eine Fehlermeldung geben und day wird nicht verändert.
Anbei mein aktueller Stand der Änderungen (ersetzt den Diff aus #37).
Die Version -03-w ist ohne Whitespace-Unterschiede, damit man die eigentlichen Änderungen besser sehen kann. Zum Patchen bitte die Version ohne "-w" verwenden.
Plugins sollten ohne Änderung weiter funktionieren wie bisher, allerdings kann es "deprecated"-Meldungen beim Übersetzen geben (je nachdem, welche Funktionen verwendet werden) und Log-Meldungen zur Laufzeit, über die man Stellen finden kann, die geändert werden sollten. Es wäre nett, wenn ihr diesen Patch mit möglichst vielen Plugins übersetzen würdet, um zu sehen, ob es irgendwo nicht klappt.
Der voraussichtliche HISTORY-Eintrag:
- Reworked cTimer::Matches():
+ Calculating the raw start/stop time of a timer has been moved to the new function
cTimer::CalcStartStopTime(). If a plugin calls cTimer::Matches() with Directly==true,
it should use cTimer::CalcStartStopTime() instead. If it calls cTimer::Matches() with
Directly==false, it should call cTimer::Matches(time_t t, int Margin) instead.
+ The versions of cTimer::Matches() with 'bool Directly' are deprecated. Existing calls
with Directly==true are redirected to cTimer::CalcStartStopTime(), and a log message
is issued.
+ cTimer::Matches() now reports an error if it is called with a time parameter that is
not the current time.
+ The "first day" parameter of a repeating timer is now only reset if cTimer::Matches()
is called with t==0 and Margin==0 and it has been exceeded.
+ Access to the cached cTimer::start-/stopTime members is now protected via a mutex.
Display More
WARNUNG: Diesen Patch bitte nur unter kontrollierten Bedingungen benutzen! Nicht für den produktiven Einsatz verwenden!
MarkusE #40 werde ich gesondert behandeln.