[ros-dev] vncviewer is oh so close
art yerkes
ayerkes at speakeasy.net
Wed Feb 9 22:52:04 CET 2005
The good news is that vncviewer is oh so close to running. If you apply
this patch it *does* run, but I think the patch is wrong. Hopefully,
after illustrating a wrong solution somebody might be able to see a right
one.
The problem it runs into is that the 2nd 'Alertability failed' message in
KeWaitForMultipleObjects is always triggered, which makes vncviewer unable
to display anything.
If i #if 0 that block out, then it appears to work fine. I suspected that
either we were being too conservative or there are too many APCs happening
on that thread, and this confirms that one of the suspicions is true.
The attached patch illustrates the probably broken solution.
Screen: http://64.81.145.152/~arty/vncviewer2.jpg
--
Here's a simple experiment. Stand on a train track between two locomotives
which are pushing on you with equal force in opposite directions. You will
exhibit no net motion. None the less, you may soon begin to notice that
something important is happening.
-- Robert Stirniman
-------------- next part --------------
Index: ntoskrnl/ke/wait.c
===================================================================
--- ntoskrnl/ke/wait.c (revision 13482)
+++ ntoskrnl/ke/wait.c (working copy)
@@ -1,4 +1,4 @@
-/* $Id:$
+/* $Id$
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS project
@@ -563,12 +563,15 @@
DPRINT("Alertability failed\n");
KeReleaseDispatcherDatabaseLock(OldIrql);
return (STATUS_ALERTED);
- } else if ((!IsListEmpty(&CurrentThread->ApcState.ApcListHead[UserMode])) && (WaitMode == UserMode)) {
+ }
+#if 0
+else if ((!IsListEmpty(&CurrentThread->ApcState.ApcListHead[UserMode])) && (WaitMode == UserMode)) {
DPRINT1("Alertability failed\n");
CurrentThread->ApcState.UserApcPending = TRUE;
KeReleaseDispatcherDatabaseLock(OldIrql);
return (STATUS_USER_APC);
}
+#endif
} else if ((CurrentThread->ApcState.UserApcPending) && (WaitMode != KernelMode)) {
DPRINT1("Alertability failed\n");
KeReleaseDispatcherDatabaseLock(OldIrql);
More information about the Ros-dev
mailing list