Author: tkreuzer
Date: Sat May 3 11:04:52 2014
New Revision: 63126
URL: http://svn.reactos.org/svn/reactos?rev=63126&view=rev
Log:
[I8042PRT]
Apply a workaround by hto to fix mouse / touchpad on some notebooks.
CORE-6901
Modified:
trunk/reactos/drivers/input/i8042prt/pnp.c
Modified: trunk/reactos/drivers/input/i8042prt/pnp.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/input/i8042prt/pnp…
==============================================================================
--- trunk/reactos/drivers/input/i8042prt/pnp.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/input/i8042prt/pnp.c [iso-8859-1] Sat May 3 11:04:52 2014
@@ -479,7 +479,10 @@
/* Start the mouse */
Irql = KeAcquireInterruptSpinLock(DeviceExtension->HighestDIRQLInterrupt);
- i8042IsrWritePort(DeviceExtension, MOU_CMD_RESET, CTRL_WRITE_MOUSE);
+ /* HACK: the mouse has already been reset in i8042DetectMouse. This second
+ reset prevents some touchpads/mice from working (Dell D531, D600).
+ See CORE-6901
+ i8042IsrWritePort(DeviceExtension, MOU_CMD_RESET, CTRL_WRITE_MOUSE); */
KeReleaseInterruptSpinLock(DeviceExtension->HighestDIRQLInterrupt, Irql);
}
Author: aandrejevic
Date: Sat May 3 02:13:51 2014
New Revision: 63124
URL: http://svn.reactos.org/svn/reactos?rev=63124&view=rev
Log:
[KERNEL32][NTVDM]
In BaseCheckVDM, return a task ID of 0 if there is a console.
In CommandThreadProc, make sure the loop executes at least once.
Also, if a session ID is given, there is no parent console, so there is no need to wait
for further commands.
Modified:
branches/ntvdm/dll/win32/kernel32/client/vdm.c
branches/ntvdm/subsystems/ntvdm/ntvdm.c
Modified: branches/ntvdm/dll/win32/kernel32/client/vdm.c
URL: http://svn.reactos.org/svn/reactos/branches/ntvdm/dll/win32/kernel32/client…
==============================================================================
--- branches/ntvdm/dll/win32/kernel32/client/vdm.c [iso-8859-1] (original)
+++ branches/ntvdm/dll/win32/kernel32/client/vdm.c [iso-8859-1] Sat May 3 02:13:51 2014
@@ -401,8 +401,17 @@
CSR_CREATE_API_NUMBER(BASESRV_SERVERDLL_INDEX, BasepCheckVDM),
sizeof(BASE_CHECK_VDM));
- /* Write back the task ID */
- *iTask = CheckVdm->iTask;
+ /* Check if there is no console */
+ if (CheckVdm->ConsoleHandle == NULL)
+ {
+ /* Write back the task ID */
+ *iTask = CheckVdm->iTask;
+ }
+ else
+ {
+ /* Otherwise, iTask should be zero */
+ *iTask = 0;
+ }
Cleanup:
Modified: branches/ntvdm/subsystems/ntvdm/ntvdm.c
URL: http://svn.reactos.org/svn/reactos/branches/ntvdm/subsystems/ntvdm/ntvdm.c?…
==============================================================================
--- branches/ntvdm/subsystems/ntvdm/ntvdm.c [iso-8859-1] (original)
+++ branches/ntvdm/subsystems/ntvdm/ntvdm.c [iso-8859-1] Sat May 3 02:13:51 2014
@@ -377,7 +377,7 @@
UNREFERENCED_PARAMETER(Parameter);
- while (AcceptCommands)
+ do
{
/* Clear the structure */
ZeroMemory(&CommandInfo, sizeof(CommandInfo));
@@ -431,6 +431,7 @@
First = FALSE;
}
+ while (AcceptCommands);
return 0;
}
@@ -468,6 +469,9 @@
{
/* This is the session ID */
SessionId = wcstoul(argv[i] + 2, &endptr, 10);
+
+ /* The VDM hasn't been started from a console, so quit when the task is done */
+ AcceptCommands = FALSE;
}
}