]> xenbits.xensource.com Git - pvdrivers/win/xeniface.git/commitdiff
Dont force a WMI event when reregistering a watch
authorOwen Smith <owen.smith@citrix.com>
Tue, 17 Nov 2015 17:05:23 +0000 (17:05 +0000)
committerPaul Durrant <paul.durrant@citrix.com>
Thu, 19 Nov 2015 12:40:05 +0000 (12:40 +0000)
When a watch is registered, the watch gets triggered. This will result
in a WMI event being fired. There is no need to manually fire a WMI
event in this case, as it can lead to the WMI event being discarded.

Signed-off-by: Owen Smith <owen.smith@citrix.com>
src/xeniface/wmi.c

index c73e99005e0b40ed209557602d49f92773b220be..b3e4c5506c128b430659dd7dc010ef4b1b3134fc 100644 (file)
@@ -875,19 +875,15 @@ VOID WatchCallbackThread(__in PVOID StartContext) {
                 ExFreePool(watch);
                 session->mapchanged = TRUE;
                 session->watchcount --;
-            }
-            else
-            {
-                if (!session->suspended) {
-                    if (watch->suspendcount !=XENBUS_SUSPEND(GetCount, &watch->fdoData->SuspendInterface)) {
-                        watch->suspendcount = XENBUS_SUSPEND(GetCount, &watch->fdoData->SuspendInterface);
-                        XenIfaceDebugPrint(WARNING,"SessionSuspendResumeUnwatch %p\n", watch->watchhandle);
-
-                        XENBUS_STORE(WatchRemove, &watch->fdoData->StoreInterface, watch->watchhandle);
-                        watch->watchhandle = NULL;
-                        StartWatch(watch->fdoData, watch);
-                    }
-                }
+            } else if (!session->suspended &&
+                       watch->suspendcount != XENBUS_SUSPEND(GetCount, &watch->fdoData->SuspendInterface)) {
+                watch->suspendcount = XENBUS_SUSPEND(GetCount, &watch->fdoData->SuspendInterface);
+                XenIfaceDebugPrint(WARNING,"SessionSuspendResumeUnwatch %p\n", watch->watchhandle);
+
+                XENBUS_STORE(WatchRemove, &watch->fdoData->StoreInterface, watch->watchhandle);
+                watch->watchhandle = NULL;
+                StartWatch(watch->fdoData, watch);
+            } else {
                 FireWatch(watch);
             }
             ExReleaseFastMutex(&session->WatchMapLock);