[1.0.1] Region exists(..., 0) failing does not return instantly with scan rates > 1 --- fixed in 1.1.0
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SikuliX |
Fix Committed
|
Critical
|
RaiMan |
Bug Description
Version: 1.0.1
64-bit
Procedure: I look for a Pattern myPattern that is NOT in the Region myRegion. The size of the pattern (+similarity) and the region are irrelevant.
Expected behavior: The exists/find should return immediately.
Observed behavior: That is not always the case, there is some delay (up to 0.5s) depending on Settings.
The code snippet:
# timer start
if not myRegion.
#timer end
Now the result:
Settings.
Duration: 0.1s
Settings.
Duration: 0.2s
Settings.
Duration: 0.25s
Settings.
Duration: 0.33s (default setting... this is a significant delay)
Settings.
Duration: 0.5s
Settings.
Duration: 0.03s
Settings.
Duration: 0.03s
Settings.
Duration: 0.03s (seems the minimal one can reach on that operation)
...
__________
Bug location:
http://
#L1881 int MaxTimePerScan = (int) (1000.0 / waitScanRate);
#L1882 int MaxTimePerScanSecs = MaxTimePerScan / 1000;
MaxTimePerScanSecs is equal to 0 when waitScanRate is strictly higher to 1, integer division rules in java...
#L1890 if (timeout < MaxTimePerScanSecs)
This is false (assuming timeout is 0), and additional delay ensue...
summary: |
[1.0.1] Region exists(..., 0) failing does not return instantly with - scan rates > 1 + scan rates > 1 --- fixed in 1.1.0 |
Changed in sikuli: | |
importance: | High → Critical |
LOL, absolutely right. Thanks for finding.