Commit graph

70 commits

Author SHA1 Message Date
Kang Yu
aa8b478eda capture user move window action instantly with precision without using delay timer 2020-03-01 19:15:11 -08:00
Kang Yu
29f24db354 reduce number of restore effort to speed up recovery 2020-03-01 19:15:11 -08:00
Kang Yu
528d1e783d fix issue 9. capture taskbar window 2020-03-01 19:15:10 -08:00
Kang Yu
d4bf4a0b3a safe lock against re-entry of restore routine 2020-03-01 19:15:10 -08:00
Kang Yu
b3acca721f avoid excessive restore cycle 2020-03-01 19:15:09 -08:00
Kang Yu
d90829735d do fixed delay restore followed by window move event driven restore, to improve the chance of successful restore 2020-03-01 19:15:09 -08:00
Kang Yu
e3a0ddfacd adjust max latency for capture to fix miscapture due to slow RDP recovery 2020-03-01 19:15:09 -08:00
Kang Yu
dd3bb5c494 force restore window multiple times in case Windows OS fail to send notification message 2020-02-27 10:34:15 -08:00
Kang Yu
054565778a do not recapture window when restore period is finished, because there is a small chance that OS incorrectly placed window. In that case, user still has a chance to restore by doing another round of sleep/awake 2020-02-26 19:41:57 -08:00
Kang Yu
0ad030a7aa resolve risk condition due to multi-thread 2020-02-23 22:19:53 -08:00
Kang Yu
e3a3cc1706 factor ResetState() 2020-02-23 20:09:39 -08:00
Kang Yu
aecc9f6e29 adjust restore try times for local/remote session with different value 2020-02-23 18:03:16 -08:00
Kang Yu
69a9b4f273 allow early abortion of restore when user actively move/min/max/restore window (excluding trivial activate or create new window) 2020-02-23 15:18:25 -08:00
Kang Yu
ebadd17d07 reliably restore window position for at most 6 passes upon display change 2020-02-23 11:37:20 -08:00
Kang Yu
7eb54d135a extend restoreWindowPos active period by 500ms to detect OS move 2020-02-22 14:47:20 -08:00
Kang Yu
060e1f67e1 reduce window flickering by avoid unnecessary SetWindowPlacement() call. Revert complicated SetWindowPos() call to simple MoveWindow() call 2020-02-22 12:43:06 -08:00
Kang Yu
11cd6f568d automatically fix small negative y screen coordinate to avoid repeated recovery 2020-02-22 12:01:00 -08:00
Kang Yu
3056a1bbec capitalize constant names 2020-02-19 10:55:02 -08:00
Kang Yu
0dd37cf785 Fix flickering window loop issue in V3.0 and V3.1
Restore window z order
Restore maximized window indicator
2020-02-18 14:32:02 -08:00
Kang Yu
8faa833fbe fix miss capture of new window 2020-02-17 22:51:41 -08:00
Kang Yu
c430ea7d3e avoid excessive capture during restore 2020-02-17 21:21:21 -08:00
Kang Yu
b1d6ecb04e Measure window move speed to recognize OS initiated move.
Replace MoveWindow() with SetWindowPos() to preserve window depth
2020-02-17 17:16:11 -08:00
Kang Yu
02de0b3216 fine tune timer latency for slow remote desktop connection 2020-02-16 23:06:11 -08:00
Kang Yu
505d6d9126 Avoid capture when display setting changes before event handler is called
Distinguish user initiated move/resize from OS initiated move/resize
Introduce load-adaptive capture speed control for slow remote desktop connection
2020-02-16 22:27:03 -08:00
Kang Yu
a134d2f337 adjust timer latency so that capture takes longer than recovery, this is required for second recovery pass 2020-02-14 18:21:25 -08:00
Kang Yu
1e04039dd2 implement second restore pass in a more elegant way 2020-02-14 15:43:54 -08:00
Kang Yu
4a25903024 Improve capture/restore accuracy using timer and event handler 2020-02-14 15:41:21 -08:00
Kang Yu
4f6eb079e1 avoid conversion between User32Events and uint 2020-02-11 23:45:06 -08:00
Kang Yu
fadf717d24 clean up unused code 2020-02-11 23:18:48 -08:00
Kang Yu
9a301996c2 Reimplement capture/restore using event handler 2020-02-11 23:12:22 -08:00
Kang Yu
f9ccb9e4ed Turn on pure event driven window capture to fix miscatpture issues.
Turn on system suspend event handler to avoid miscapture.
2020-02-10 23:45:27 -08:00
Kang Yu
636ff55291 merge event driven handler code from WindowMagic to reduce cpu usage due to polling 2020-02-08 21:56:46 -08:00
Kang Yu
4ce4f53941 disable event-driven window movement detection due to insufficient capability. Re-enable polling method with thread safety enhancement 2020-02-06 19:20:21 -08:00
Kang Yu
55851c6847 merge from WindowMagic by Sean Aitken:
1. use event driven detection instead of polling
2. add Dispose() method to free resources
2020-02-06 19:20:21 -08:00
Kang Yu
36182585a4 tentative fix to improve reliability, avoid risk condition or potential crash 2020-02-05 22:09:18 -08:00
Kang Yu
7170ad0698 update comment 2020-02-03 16:58:13 -08:00
Kang Yu
a7b15a0f22 fix flickering window issue introduced in V2.6, try recover old WindowPlacement only once 2020-01-31 16:26:17 -08:00
Kang Yu
8b749413f9 stay locked during double restore 2020-01-30 19:13:42 -08:00
Kang Yu
d724a282f8 1. Call restore window position routine twice to reliably restore window snapped to screen edge, as Windows OS may undo restore for unknown reasons.
2. Automatically undo unexpected WindowPlacement change when screen position stays the same, the unexpected behavior happens right AFTER window pos restoration is done
2020-01-30 12:11:52 -08:00
Kang Yu
f3fd7b2e60 improve debug message 2020-01-30 12:11:52 -08:00
Kang Yu
7f6cf70c95 remove unused "using ..." 2020-01-29 11:13:08 -08:00
Kang Yu
c015d27fc8 remove unused Dispose() method 2020-01-29 11:09:06 -08:00
Kang Yu
de4bc1e709 minor coding style and message change 2020-01-29 11:03:10 -08:00
Kang Yu
a84b5f07bc simplify window recovery procedure 2020-01-29 10:58:30 -08:00
Kang Yu
c82aaa3c59 remove dos new line 2020-01-29 10:55:32 -08:00
Kang Yu
7e4f3820b1 reject false window placement change when real screen position does not 2020-01-29 09:37:38 -08:00
Kang Yu
dd0a31dfc7 remove obsolete code 2020-01-28 12:39:49 -08:00
Kang Yu
eda1839e4a rename local var to emphasize current and previous value 2020-01-28 12:30:21 -08:00
Kang Yu
4bda3525db avoid taking invalid value in WindowPlacement by focusing only on normal position part 2020-01-28 01:00:39 -08:00
Kang Yu
52fed8b1c8 use process id to resolve hash key (hwnd) conflict 2020-01-27 20:26:20 -08:00