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