diff options
author | Arnon Gilboa <agilboa@redhat.com> | 2012-09-10 10:17:23 +0300 |
---|---|---|
committer | Arnon Gilboa <agilboa@redhat.com> | 2012-09-10 10:17:23 +0300 |
commit | 900ef2b4db2cae9a7ee9f159af6d7bc602005be9 (patch) | |
tree | e250933d274b496ff84097de6eedf991c4ff0f71 | |
parent | 4e95b73ecf11000b23cd506fc70a686baf83df5c (diff) |
vdagent: don't stop due to UIPI blocking
User Interface Privilege Isolation is usually used only for specific windows of
system security applications (anti-viruses etc.), so with this patch mouse will
be irresponsive for these windows but keep working for the rest. A complete
solution might be switching to server mouse mode while the agent is still active.
-rw-r--r-- | vdagent/vdagent.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/vdagent/vdagent.cpp b/vdagent/vdagent.cpp index 3ffafe3..078e50f 100644 --- a/vdagent/vdagent.cpp +++ b/vdagent/vdagent.cpp @@ -429,9 +429,14 @@ bool VDAgent::send_input() return false; } } - if (!SendInput(1, &_input, sizeof(INPUT)) && GetLastError() != ERROR_ACCESS_DENIED) { - vd_printf("SendInput failed: %lu", GetLastError()); - ret = _running = false; + if (!SendInput(1, &_input, sizeof(INPUT))) { + DWORD err = GetLastError(); + // Don't stop agent due to UIPI blocking, which is usually only for specific windows + // of system security applications (anti-viruses etc.) + if (err != ERROR_SUCCESS && err != ERROR_ACCESS_DENIED) { + vd_printf("SendInput failed: %lu", err); + ret = _running = false; + } } _input_time = GetTickCount(); _desktop_layout->unlock(); |