summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnon Gilboa <agilboa@redhat.com>2012-09-10 10:17:23 +0300
committerArnon Gilboa <agilboa@redhat.com>2012-09-10 10:17:23 +0300
commit900ef2b4db2cae9a7ee9f159af6d7bc602005be9 (patch)
treee250933d274b496ff84097de6eedf991c4ff0f71
parent4e95b73ecf11000b23cd506fc70a686baf83df5c (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.cpp11
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();